網(wǎng)站建設營銷詞可以免費領取會員的軟件
前言
TCP(傳輸控制協(xié)議)是一種面向連接的、可靠的傳輸層協(xié)議。在建立 TCP 連接時,需要進行三次握手,防止因為網(wǎng)絡延遲、擁塞等原因導致的數(shù)據(jù)丟失或錯誤傳輸,確保雙方都能夠正常通信。
TCP三次握手在Wireshark數(shù)據(jù)包中是如何體現(xiàn)的?在此之前,先熟悉TCP三次握手的流程。
TCP三次握手流程
1.客戶端發(fā)送 SYN 請求報文:
- 客戶端選擇一個初始序列號(seq)并將 SYN 標志位置為 1,表示請求建立連接。
- 客戶端將該 SYN 報文發(fā)送給服務端,并進入 SYN_SET 狀態(tài),等待服務端的響應。
2.服務端接收 SYN 請求報文:
- 服務端接收到客戶端發(fā)來的 SYN 請求報文。
- 服務端將 SYN 標志位置為 1,ACK 標志位置為 1,表示同意建立連接。
- 服務端選擇一個自己的初始序列號(seq)并分配資源,發(fā)送 SYN+ACK 響應報文給客戶端。
3.客戶端接收 SYN+ACK 響應報文:
- 客戶端接收到服務端發(fā)來的 SYN+ACK 響應報文。
- 客戶端將 ACK 標志位置為 1,表示確認服務端的同意。
- 客戶端將該 ACK 報文發(fā)送給服務端,建立起連接。
完成以上三個步驟后,TCP 連接建立成功,雙方可以開始進行數(shù)據(jù)傳輸。
Wireshark抓包分析
第一步:開啟抓包,ping百度
第二步:過濾目標主機地址
可以看到三個TCP數(shù)據(jù)包,接下來我們逐個分析。
第一次握手數(shù)據(jù)包
由上圖可以看到,seq為0,表示客戶端的初始序列號為0;ack為0,代表本機還未確認服務端的同意;syn為1并進入set狀態(tài),說明本機請求建立連接并等待baidu.com的響應
第二次握手數(shù)據(jù)包
由上圖可以看到,seq為0,表示服務端的初始序列號為0;ack為1,代表baidu.com同意接受連接;syn為1并進入set狀態(tài),說明baidu.com等待本機的響應
第三次握手數(shù)據(jù)包
由上圖可以看到,seq為1,表示客戶端期望收到的下一個序列號是1;ack為1代表本機同意接受連接;syn為1并進入set狀態(tài),表示確認服務端(baidu.com)的同意(即確認服務器的序列號為0)
至此,TCP三次握手就完成了,客戶端(本機)將與服務端建立起連接。