Tcp抓包以及tcp狀態解釋
- tcp三次握手
傳送端傳送一個SYN=1,ACK=0標誌的資料包給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會發送一個SYN=1,ACK=1標誌的資料包給傳送端,告訴它,可以通訊了,並且讓傳送端傳送一個確認資料包,這是第二次握手;最後,傳送端傳送一個SYN=0,ACK=1的資料包給接收端,告訴它連線已被確認,這就是第三次握手。之後,一個TCP連線建立,開始通訊。
- tcp連線狀態
SYN:同步標誌。同步序列編號(Synchronize Sequence Numbers)欄有效。該標誌僅在三次握手建立TCP連線時有效。它提示TCP連線的服務端檢查序列編號,該序列編號為TCP連線初始端(一般是客戶端)的初始序列編號。在這裡,可以把 TCP序列編號看作是一個範圍從0到4,294,967,295的32位計數器。通過TCP連線交換的資料中每一個位元組都經過序列編號。在TCP報頭中的序列編號欄包括了TCP分段中第一個位元組的序列編號。
ACK:確認標誌。確認編號(Acknowledgement Number)欄有效。大多數情況下該標誌位是置位的。TCP報頭內的確認編號欄內包含的確認編號(w+1,Figure-1)為下一個預期的序列編號,同時提示遠端系統已經成功接收所有資料。
RST:復位標誌。復位標誌有效。用於復位相應的TCP連線。
URG:緊急標誌。緊急(The urgent pointer) 標誌有效。緊急標誌置位,
PSH:推標誌。該標誌置位時,接收端不將該資料進行佇列處理,而是儘可能快將資料轉由應用處理。在處理 telnet 或 rlogin 等互動模式的連線時,該標誌總是置位的。
FIN:結束標誌。帶有該標誌置位的資料包用來結束一個TCP回話,但對應埠仍處於開放狀態,準備接收後續資料。
.TCP的幾個狀態對於我們分析所起的作用。在TCP層,有個FLAGS欄位,這個欄位有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG.其中,對於我們日常的分析有用的就是前面的五個欄位。它們的含義是:
- SYN表示建立連線
- FIN表示關閉連線
- ACK表示響應
- PSH表示有 DATA資料傳輸
- RST表示連線重置
其中,ACK是可能與SYN,FIN等同時使用的,比如SYN和ACK可能同時為1,它表示的就是建立連線之後的響應,如果只是單個的一個SYN,它表示的只是建立連線。TCP的幾次握手就是通過這樣的ACK表現出來的。但SYN與FIN是不會同時為1的,因為前者表示的是建立連線,而後者表示的是斷開連線。RST一般是在FIN之後才會出現為1的情況,表示的是連線重置。一般地,當出現FIN包或RST包時,我們便認為客戶端與伺服器端斷開了連線;而當出現SYN和SYN+ACK包時,我們認為客戶端與伺服器建立了一個連線。PSH為1的情況,一般只出現在
DATA內容不為0的包中,也就是說PSH為1表示的是有真正的TCP資料包內容被傳遞。TCP的連線建立和連線關閉,都是通過請求-響應的模式完成的。
- tcp常見錯誤狀態
- Tcp previous segment lost(tcp先前的分片丟失)
- Tcpacked lost segment(tcp應答丟失)
- Tcp window update(tcp視窗更新)
- Tcp dup ack(tcp重複應答)
- Tcp keep alive(tcp保持活動)
- Tcp retransmission(tcp重傳)
- Tcp ACKed unseen segument (tcp看不見確認應答)
- tcp port numbers reused(tcp埠重複使用)
- tcp retransmission(tcp重傳)
- tcp fast retransmission (tcp快速重傳)
- TCP Previoussegment lost(傳送方資料段丟失)
- tcp spurious retransmission(tcp偽重傳)
- tcp抓包工具tcpdump和wireshark
在linux下tcpdump是一個很強大的tcp抓包工具,但是由於linux分析不方便,因此可以將抓包資料儲存到.cap檔案中,然後在windos下使用wireshark進行分析,非常方便。
- tcpdump抓包命令
tcpdump tcp -i eth2 -s 0 and port 20058 -w /home/pjroot/attence.cap
tcpdump tcp -i eth2 -t -s 0 -c 100 and port 20058 -w /home/pjroot/attence.cap
tcpdump tcp -i eth2 -s 0 and port 20058 and host 125.77.252.211 -w ./attence.cap
-i eth2 指定資料包經過的網絡卡
-s 0 抓取資料包時預設抓取長度為68位元組。加上-S 0 後可以抓到完整的資料包
port 指定埠 可以加上src 和dst表示現在為源埠還是目的埠
host 指定主機可以加上src和dst表示源地址還是目的地址
-w 表示要寫入到檔案中
-t 表示不顯示時間戳
-c 100 表示只抓取初始的100個數據包
列印所有進入或離開sundown的資料包.
tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發出的所有的資料包
tcpdump host 210.27.48.1
列印helios 與 hot 或者與 ace 之間通訊的資料包
tcpdump host helios and \( hot or ace \)
截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通訊
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
列印ace與任何其他主機之間通訊的IP 資料包, 但不包括與helios之間的資料包.
tcpdump ip host ace and not helios
如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通訊的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截獲主機hostname傳送的所有資料
tcpdump -i eth0 src host hostname
監視所有送到主機hostname的資料包
tcpdump -i eth0 dst host hostname
如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745 為"GET"前兩個字母"GE",0x4854 為"HTTP"前兩個字母"HT"。
- tcpudp命令引數說明
-i any : 監聽所有介面
-n : 不解析主機名
-nn : 不解析主機名和埠名
-X : 以16進位制和ascii格式顯示包
-XX : 和-X一樣,但會顯示乙太網頭
-v, -vv, -vvv : 獲取包含資訊量更多的包
-c : 獲取指定數量的包,達到該數量後tcpdump停止
-S : 顯示絕對序列號
-e : 獲取乙太網頭
-q : 顯示少量的協議資訊
-E : 通過金鑰來解密IPSEC互動
-s : 設定snaplength(snaplength是抓取的位元組數)
- host // 根據ip地址查詢互動(不用"-n"也能根據主機名查詢互動)
# tcpdump host 1.2.3.4
- src,dst // 找出指定源地址或目的地址的互動
# tcpdump src 2.3.4.5
# tcpdump dst 3.4.5.6
- net // 根據網路號抓取整個網路
# tcpdump net 1.2.3.0/24
- proto // 工作在tcp,udp,和icmp。注意你不用必須輸入proto。
# tcpdump icmp
- port // 檢視經過指定埠的互動
# tcpdump port 3389
- src,dst port // 找出指定源埠或目的埠的互動
# tcpdump src port 1025
# tcpdump dst port 389
- src/dst, port, protocol // 將三個聯合在一起
# tcpdump src port 1025 and tcp
# tcpdump udp and src port 53
你也可以用選項來找出多個埠而不用一一指定,也可以僅檢視大於或小於某一位元組大小的包。
- Port Ranges // 檢視經過範圍內埠的互動
tcpdump portrange 21-23
- Packet Size Filter // 檢視大於或小於某一位元組大小的包
tcpdump less 32
tcpdump greater 128
也可以用符號來代替
tcpdump > 32
tcpdump <= 128
寫到一個檔案
tcpdump用"-w"選項可以將抓到的內容存入檔案,再用"-r"選項讀回來,這個功能非常好,可以抓取原始互動之後再用其他工具執行它。
以這種方式抓取到的互動會存成tcpdump格式的檔案,現在網路分析圈內基本都用這種格式,因此檔案可以被所有工具讀取,包括Wireshark, Snort等。
- 抓取所有經過埠80的互動存入一個檔案
# tcpdump -s 1514 port 80 -w capture_file
- 以後可以再讀回來
# tcpdump -r capture_file
更多的例子
# 從10.5.2.3到埠3389的tcp互動
tcpdump -nnvvS and src 10.5.2.3 and dst port 3389
# 從網路192.168到網路10或172.16的互動
tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
# 從192.168.0.2到網路172.16的非icmp互動
tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net and not icmp
# 從Mars或Pluto到非SSH埠的互動
tcpdump -vv src Mars or Pluto and not dst port 22
分組
如果你試圖執行這個本來非常有用的命令,因為括號的原因會報錯,可以對括號進行轉義(前面加"/")或者將整個命令放在單引號中:
# 從10.0.2.4到埠3389或22的互動(正確的表達)
tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)'
相關推薦
Tcp抓包以及tcp狀態解釋
tcp三次握手 傳送端傳送一個SYN=1,ACK=0標誌的資料包給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會發送一個SYN=1,ACK=1標誌的資料包給傳送端,告訴它,可以通訊了,並且讓傳送端傳送一個確認資料包,這是第
用wireshark抓包分析TCP三次握手、四次揮手以及TCP實現可靠傳輸的機制(轉)
關於TCP三次握手和四次揮手大家都在《計算機網路》課程裡學過,還記得當時高超老師耐心地講解。大學裡我遇到的最好的老師大概就是這位了,雖然他只給我講過《java程式設計》和《計算機網路》,但每次課幾乎都動手敲程式碼或者當場做實驗。好了不扯了,下面進入正題。 關
fiddler 手機 https 抓包 以及一些fiddler無法解決的https問題http2、tcp、udp、websocket證書寫死在app中無法抓包
原文: https://blog.csdn.net/wangjun5159/article/details/52202059 fiddler手機抓包原理 fiddler手機抓包的原理與抓pc上的web資料一樣,都是把fiddler當作代理,網路請求走fiddler,fiddler從中攔截資料,由於fid
TCP ------ 抓包分析
com 分析 抓包 數據 技術 不用 一個 其他 -- 分析: ACK包可以和其他包合在一起 可以接收多個數據包後,一次性給一個應答,不用每個數據包一一對應給應答 TCP ------ 抓包分析
TCP粘包以及解決方案
獲取文件 打開文件 tro cmd nco fin 邊界 機制 port TCP協議粘包現象的說明: TCP(transport control protocol,傳輸控制協議)是面向連接的,面向流的,提供高可靠性服務。收發兩端(客戶端和服務器端)都要有一一成對的sock
Wireshark抓包分析TCP.IP.UDP.ICMP報文格式
TCP 報文格式分析: TCP 報文段的報頭有 10 個必需的欄位和 1 個可選欄位。報頭至少為 20 位元組。 1)源埠(16位):標識傳送報文的計算機埠或程序。一個 TCP 報文段必須包括源埠號,使目的主機知道應該向何處傳送確認報文。 2)目的埠(16位):標識接收報文的目的主機的埠或程序。 由
基於wireshark抓包分析TCP的三次握手
img src 建立 tab 安全 連接狀態 協議 處理 基於 在TCP/IP協議通訊過程中,采用三次握手建立連接,從而保證連接的安全可靠。 通常三次握手步驟如下: 1. 第1次握手:建立連接時,客戶端發送 SYN 包到服務器端,攜帶一個序列碼給服務器端用於確認,並進入
抓包分析TCP的三次握手和四次握手
問題描述: 在上一篇《如何對Android裝置進行抓包》中提到了,伺服器的開發人員需要我bug重現然後提供抓包給他們分析,所以抓好包自己也試著分析了一下。發現裡面全是一些TCP協議和HTTP協議。所以要想進行抓包分析,必須先了解TCP的原理。這裡介紹了TCP的
UDP/TCP抓包分析
TCP/UDP資料包結構 1. 單獨的TCP/UDP報文結構 UDP頭:8byte TCP頭:24byte 2.帶幀頭(14byte),IP頭(20byte)的UDP資料包結構 PS:後面的資料分析都是帶IP頭的資料包。 (四)UDP資料包分析 0x0000
網路協議抓包分析——TCP傳輸控制協議(連線建立、釋放)
前言 TCP協議為資料提供可靠的端到端的傳輸,處理資料的順序和錯誤恢復,保證資料能夠到達其應到達的地方。TCP協議是面向連線的,在兩臺主機使用TCP協議進行通訊之前,會先建立一個TCP連線(三次握手),雙方不再繼續通訊時,會將連線釋放(正常情況下四次揮手)。下面就抓包分析TCP三次握手和四次揮手的過程。
tcpdump抓包分析TCP三次握手過程
tcpdump port 6000 -c 3 -n內容如下:21:07:17.790296 IP 192.168.1.104.2511 > 192.168.1.90.6000: S 3359422806:3359422806(0) win 64240 <mss1460,nop,nop,sackO
Wireshark抓包分析TCP的三次握手
今天學習了Wireshark工具,對於抓包有了極大的興趣;特意通過抓包來加深一下TCP三次握手的過程,同時做以記錄。 TCP報文段結構 過濾規則介紹 網路中包含著許多的資料報文,但是許多的都不是我們需要的。網上給的大多數規則不夠具體,
wireshark抓包圖解 TCP三次握手/四次揮手詳解
原地址:http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%9B%9B%E6%AC%A1%E6%8
手機及電腦抓包(tcp,udp,http)
1.軟體 下面兩款都是免費軟體。 1.1 fiddler 介面見圖1-1. 圖1-1 fiddler介面 1.2 wireshark 介面見圖1-2. 圖1-2 wireshark 介面 2. 電腦抓包 http包可以在fiddler裡面看。 http及tcp、udp包
wireshark抓包分析tcp的三次握手詳細過程
下載安裝wireshark 抓包分析詳細過程 在wireshark中輸入http過濾, 然後選中一條http記錄,如下圖: 右鍵點選選中 追蹤流 > tcp流,如下: 會看到下圖所示: 可以發現,wireshark截獲到了三次握手的三
wireshark抓包分析——TCP/IP協議
本文來自網易雲社群當我們需要跟蹤網路有關的資訊時,經常會說“抓包”。這裡抓包究竟是什麼?抓到的包又能分析出什麼?在本文中以TCP/IP協議為例,簡單介紹TCP/IP協議以及如何通過wireshark抓包分析。Wireshark 是最著名的網路通訊抓包分析工具。功能十分強大,可
【極客思考】計算機網路:Wireshark抓包分析TCP中的三次握手與四次揮手
【摘要】本文重點分析計算機網路中TCP協議中的握手和揮手的過程。 【前提說明】 前段時間突然看到了一篇關於TCP/IP模型的文章,心想這段時間在家裡也用wireshark抓了點包,那麼想著想著就覺得需要複習一下網路知識,於是就有這篇博文的誕生。當然網上關於TCP相關的知識點也是芸芸,閒著無事也可以多googl
Fiddler基本用法以及如何對手機抓包以及無法連線手機的解決
一、Fiddler是什麼? ·一種Web除錯工具。 ·可以記錄所有客戶端和伺服器的http和https請求。 ·允許監視、設定斷點、修改輸入輸出資料。 二、Fiddler下載 三、Fiddler的工作原理 Fid
tcpdump抓包以及埠檢視的一些操作
1.tcpdump; nginx開啟後會佔用80埠,此時執行命令:tcpdump tcp port 80 結果如下: [[email protected] ~]$ sudo tcpdump tcp port 80 [sudo] p
手機資料抓包以及wireshark技巧
本文主要討論一種非常方便的抓取Android和iphone手機網路資料包的辦法,以及介紹wireshark最常用的技巧 回到頂部 抓包工具介紹 (1).網頁抓包工具 Chrome瀏覽器外掛 FireBug 外掛 HttpWatch Fiddler 在瀏覽器chr