Wireshark數據抓包分析之傳輸層協議(TCP協議)


實驗簡介

實驗所屬系列:Wireshark數據抓包分析

實驗對象: 本科/專科信息安全專業、網絡工程

相關課程及專業:TCP協議分析、網絡編程實例教程、計算機網絡

實驗時數(學分):4學時

實驗類別:實踐實驗類

預備知識

 

1.TCP協議的由來

 

上一次的課程詳細介紹了UDP協議,可以知道該協議實驗非常簡單,並且容易實現。但是其可靠性較差,一旦將數據包發出,將無法知道對方是否收到。為了解決這個問題,TCP協議就誕生了。使用TCP協議,可以提供網絡的安全性。因為使用TCP協議傳輸數據時,每發送一個數據包都要求確認。如果有一個數據包丟失,就收不到確認包,發送方就知道應該重發這個數據包。這樣,TCP協議就保證了數據的安全性。

 

2.TCP端口

 

TCP端口就是為TCP協議通信提供服務的窗口。所有TCP通信都會使用源端口和目的端口,而這些可以在每個TCP頭中找到。端口就像是老式電話機上的接口,一個總計操作員會監視着一個面板上的指示燈和插頭。當指示燈亮起的時候,它就會鏈接這個呼叫者,問它想要和誰通話,然后插一根電纜線將它和它的目的地址鏈接起來。每次呼叫都需要有一個源端口(呼叫者)和目的端口(接收者)。TCP端口大概就是這樣工作的。

 

為了能夠將數據傳輸到遠程服務器或者設備的特定應用中去,TCP數據包必須知道遠程服務所監聽的端口。如果想試着鏈接一個不同於所設置的端口,那么這個通信就會失敗。這個序列中的源端口並不十分重要,所以可以隨機選擇。遠程服務器也可以很簡單的從發送過來的原始數據中得到這個端口。如下圖所示,在圖中列舉兩種服務使用的TCP端口。

 

 實驗步驟一

 

根據實驗環境,本實驗的步驟如下:

 

1.在測試環境使用發包工具和Wireshark抓取TCP三次握手和四次斷開的數據包。

 

2.詳細分析TCP協議的三次握手以及四次斷開。

 

任務描述:安裝發包工具,並配置TCP客戶端,服務端,與Wireshark配合使用 此工具與分析UDP協議時相同,實驗室環境中已經安裝

我們使用" TCP&UDP測試工具"來制作和發送TCP數據包。雙擊測試者機器桌面的" TCP&UDP測試工具",會出現下圖顯示頁面:

 

 

 

1.配置服務器端

選擇10.1.1.33的機器,雙擊桌面的" TCP&UDP測試工具",右鍵點擊服務器模式,在下拉列表中,選擇創建服務器

 

 

選擇"創建服務器"之后,會彈出服務器端口設置,本次使用默認工具給的6000端口即可,點擊"確定"按鈕。

 

 

 

點擊"確定"按鈕之后,在左側的服務器模式列表中,會出現創建的列表,選擇我們創建的服務器,右鍵點擊,選擇"啟動服務器",即完成了服務器端的配置

 

 

 

 

 

2.配置客戶端

選擇10.1.1.142的機器,雙擊桌面的" TCP&UDP測試工具",右鍵點擊客戶端模式,在下拉列表中,選擇"創建連接"

在彈出的窗口中,選擇TCP協議,服務器IP為10.1.1.33.端口6000,本機隨意IP

 

 

 點擊創建后

 

 

 

3.獲取TCP數據包

獲取的TCP協議的數據包。分為兩部分,即TCP三次握手,四次斷開的數據。但在實際的操作中,可能遇到的情況較多,比如源IP和目的IP比較多,協議的幀號亂序等各種問題。在此,我們教大家簡單的過濾功能,着色功能方便過濾和查看。    啟動Wireshark,在Filter中輸入tcp,點擊Apply會看到很多的數據包,這是因為測試環境中,有很多的應用程序,與其服務器連接,使用TCP協議。

 

 

 我們可以看到,有很多的數據,不方便查看。在這里,我們已知兩台機器的IP情況下,可以在filter中輸入"ip.addr == 10.1.1.142 and ip.addr == 10.1.1.33"來過濾出我們想要的數據,點擊工具中的"連接"按鈕。

 

 

 在發送區域輸入"hetinlabtcp"點擊發送,會持續的更新TCP數據。

 

 

 在點擊"斷開連接"后,會出現TCP的四次斷開。全部的過程截圖

 

 

 如果還是覺得不方便分析協議的話,Wireshark還為我們提供了着色和指定的幀信息保存功能。左鍵點擊某一幀,右鍵選擇"Colorize Conversation",橫向選擇"TCP",橫向再選擇自己喜歡的顏色

 

 

 

 

 

 從上面可以很容易的看出,6226,6229.6230幀是tcp的三次握手,7531,7532,7533,7534幀是四次斷開的數據。如果你還想把三次握手和四次斷開的數據包分別保存,Wireshark也提供了這樣的功能,並且支持幀序號亂序的情況。下面,我們先來保存三次握手的數據包,因三次握手的幀是亂序,我們先右鍵點擊6226幀,選擇"Mark Packet(toggle)',在依次選擇6229幀,6230幀,

 

 

 在Wireshark的菜單欄中,依次選擇FIle->Export Specified Packets 命令

 

 

 選擇Marked packets,並選擇保存名字和路徑,即可。下面來保存四次斷開的數據,因7531-7534為連續的序號,所以在Wireshark的菜單欄中,依次選擇FIle->Export Specified Packets 命令,

 

 

 實驗步驟二

2.分析TCP的三次握手

TCP三次握手是理解TCP協議最重要的部分,下面我們就以tcp-handshake.pcapng捕獲文件為例,來分析TCP的三次握手

2.1.第一次握手

TCP第一次握手,捕獲的數據包信息如下所示

 

 

 從Wireshark的Packet List面板中的Info列可以看到顯示的TCP標志位是SYN。所以該數據包是客戶端向服務器發送的第一次握手連接。在Packet Details面板中,顯示了該包的詳細信息

 

 

 以上信息,表示這是第1個數據幀的相信信息,並且該包的大小為66個字節。

以上內容是以太網幀頭部信息,其實源MAC地址為16:3e:78:2d:79,目標MAC地址為fa:16:3e:27:52:90。

 

 

 以上內容是IPv4首部的詳細信息。其中源IP是10.1.1.33,目的IP為10.1.1.142。

 

 

 根據以上信息的描述,可以看出該包是客戶端發送給服務器建立連接請求的一個數據包。建立連接的源端口號為56678,目標端口號為6000,確認編號為0。而且在標志位FLAGS(0x0002)中,只設置了SYN,也就是位同步標志,表示請求建立連接。選項是8個字節,里面的內容有最大段(MSS),大小為1414字節。

   2.2.第二次握手

TCP第二次握手捕獲數據包相信信息

 

 

 以上描述的詳細信息是服務器收到請求后,發給客戶端的確認包(SYN+ACK)。根據以上描述,可以看到在該幀數據包中包含這個主機初始的序列號0,以及一個確認號1。

這個確認號比之前那個數據包(1幀數據包)序列號大1,是因為該域是用來表示主機所期望得到的下一個序列號的值。

 

 

 

2.3.第三次握手

TCP第三次握手捕獲數據包相信信息

 

 

 以上信息就是客戶端向服務器發送的確認包。在以上信息中,序列號和確認號都是1。標志位中只設置了ACK,表示該數據包是一個確認包。這樣就完成了TCP鏈接的建立階段。

 

 

 

 實驗步驟三

1.第一次斷開

TCP第一次斷開連接的數據包,如下:

 

通過以上信息的描述,可以看到客戶端向服務器發送FIN和ACK標志的數據包開始斷開連接,其中FIN和ACK標志位都為1.

2.第二次斷開

TCP第二次斷開連接的數據包,如下

 

 通過以上信息的描述,可以看出該包是服務器向客戶端發送的ACK包。其中ACK標志位為1.

 

 

3.第三次斷開

TCP第三次斷開連接的數據包,如下

 

 通過以上信息的描述,可以看出該包是服務器向客戶端發送的FIN和ACK包。其中FIN和ACK標志位為1.

4.第四次斷開

TCP第四次斷開連接的數據包,如下

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM