wireshark捕获tcp数据包_抓包分析详解(Wireshark)
一. 實驗目的
通過本次實驗,掌握使用Wireshark抓取TCP/IP協議數據包的技能,能夠深入分析TCP幀格式及“TCP三次握手”。通過抓包和分析數據包來理解TCP/IP協議,進一步提高理論聯系實踐的能力。
二. 實驗內容
1.本次實驗重點:利用Wireshark抓TCP包及TCP包的分析。
2.本次實驗難點:分析抓到的TCP包。
3.本次實驗環境:Windows 7,Wireshark。
4.本次實驗內容:
TCP協議是在計算機網絡中使用最廣泛的協議,很多的應用服務如FTP,HTTP,SMTP等在傳輸層都采用TCP協議,因此,如果要抓取TCP協議的數據包,可以在抓取相應的網絡服務的數據包后,分析TCP協議數據包,深入理解協議封裝,協議控制過程以及數據承載過程。兩幅圖分別是TCP幀格式及TCP三次握手。
三.實驗過程
1. TCP包抓取及分析過程如下:
第一步,確定使用的協議,使用HTTP服務。選擇http://www.sina.com.cn/作為目標地址。
第二步,啟動抓包:點擊【start】開始抓包,在瀏覽器地址欄輸入http://www.sina.com.cn。
第三步,通過顯示過濾器得到先關數據包:通過抓包獲得大量的數據包,為了對數據包分析的方便,需要使用過濾器,添加本機IP地址和TCP協議過濾條件。
(1)打開命令提示符,通過ipconfig /all來查看本機IP地址。
(2)在工具欄上的Filter對話框中填入過濾條件:tcp and ip.addr==196.168.100.131,過濾結果如下:
結果發現效果不是很好,于是將過濾條件中的IP地址更換為http://www.sina.com.cn的IP地址,操作過程如下:
(1)打開命令提示符,通過ping www.sina.com.cn來查看目標IP地址。
(2)打開命在工具欄上的Filter對話框中填入過濾條件:tcp and ip.addr==218.30.66.248,過濾結果如下:
其中,紅色框內即為一個三次握手過程:
第四步,分析TCP數據包,根據第一幅圖中的數據幀格式,分析TCP包的各部分。
- 原端口/目的端口(16bit)。如下圖所示,源端口為443,標識了發送進程;目的端口為3201,標識了接收方進程。
- 序列號(32bit)。如下圖所示,發送序列號Sequence Number為0,標識從源端向目的端發送的數據字節流,它表示在這個報文端中的第一個數據字節的順序號,序列號是32位的無符號類型,序號表達達到2^32 – 1后又從0開始, 當建立一個新的連接時,SYN標志為1,系列號將由主機隨機選擇一個順序號ISN(Initial Sequence Number)。
- 確認號(32bit)。如下圖所示,確認號Acknowledgment Number為1,包涵了發送確認一端所期望收到的下一個順序號。因此確認序列號應當是上次成功接收到數據的順序號加1。只有ACK標志為1時確認序號字段才有效。TCP為應用層提供全雙工服務,這意味著數據能在兩個方向上獨立的進行傳輸,因此連接的兩斷必須要保證每個方向上的傳輸數據順序。
- 偏移(4bit)。如下圖所示,偏移32bytes,這里的偏移實際指的是TCP首部的長度Header length,它用來表明TCP首部中32bit字的數目,通過它可以知道一個TCP包它的用戶數據從哪里開始。
- 保留位(6bit)。如下圖所示,保留位Reserved未設置。
- 標志(6bit)。在TCP首部中有6個標志比特,他們中的多個可同時被置為1。如下圖所示:
URG(Urgent Pointer Field Significant):緊急指針標志,用來保證TCP連接不被中斷,并且督促中間設備盡快處理這些數據,圖中其值為1。
ACK(Acknowledgement Field Signigicant):確認號字段,該字段為1時表示應答字段有效,即TCP應答號將包含在TCP報文中,圖中其值為1。
PSH(Push Function): 推送功能,所謂推送功能指的是接收端在接收到數據后立即推送給應用程序,而不是在緩沖區中排隊,圖中其值為0。
RST(Reset the connection): 重置連接,不過一搬表示斷開一個連接,圖中其值為0。
SYN(Synchronize sequence numbers):同步序列號,用來發起一個連接請求,圖中其值為1。
FIN(No more data from sender)表示發送端發送任務已經完成(既斷開連接)。
- 窗口大小(16bit)。 如下圖所示,窗口大小Windows size value為29200,表示源主機最大能接收29200字節。
- 校驗和(16bit)。如下圖所示,校驗和Checksum為0xc24f,包含TCP首部和TCP數據段,這是一個強制性的字段,一定是由發送端計算和存儲,由接收端進行驗證。
- 緊急指針(16bit)。如下圖所示,URG標志為1,只有當URG標志置為1時該字段才有效,緊急指針是一個正的偏移量,和序號字段中的值相加表示緊急數據最后一個字節的序號。TCP的緊急方式是發送端向另一段發送緊急數據的一種方式。
- TCP選項。至少1個字節的可變長字段,標識哪個選項有效。Kind=0:選項表結束, Kind=1:無操作, Kind=2:最大報文段長度,Kind=3:窗口擴大因子, Kind=8:時間戳。如下圖所示,Kind為2,代表最大報文長度MSS size。
- 數據部分。當前數據包的數據部分,如下圖所示:
2. TCP三次握手:
第一次握手數據包:客戶端發送一個TCP,標志位為SYN,序列號為0, 代表客戶端請求建立連接,如下圖所示(第一條):
第二次握手的數據包:服務器發回確認包, 標志位為 SYN,ACK. 將確認序號(Acknowledgement Number)設置為客戶的I S N加1以.即0+1=1,如下圖所示(第二條):
第三次握手的數據包:客戶端再次發送確認包(ACK) SYN標志位為0,ACK標志位為1.并且把服務器發來ACK的序號字段+1,放在確定字段中發送給對方。在進過三次握手后和服務器建立了TCP連接,如下圖所示(第三條):
總結
以上是生活随笔為你收集整理的wireshark捕获tcp数据包_抓包分析详解(Wireshark)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CharNet算法详解
- 下一篇: bWAPP 安装_bud在哪里下载