簡單理解TCP通信的三次握手


TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,采用三次握手確認建立一個連接。

位碼(可以理解為請求狀態):

有6種標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)

序號:

有兩種:Sequence number(順序號碼) Acknowledge number(確認號碼)

順序號是發送方定義,確認號是接收方返回的(ack num = seq num + 1),發送方會檢驗收到的ack num是否是seq num + 1。

 

三次握手

第1次握手:主機A發送位碼為[SYN],產生seq number=0的數據包到主機B,(主機B發現是[SYN],表示主機A請求建立連接);

第2次握手:主機B收到請求后要確認請求連接信息,向A發送ack number=(主機A的seq+1),位碼為[SYN, ACK], 產生seq=0的包(這里的seq是主機B的seq);

第3次握手:主機A收到后檢查ack number是否正確,即第一次發送的seq number+1,以及位碼是否為[SYN, ACK] (SYN,ACK 可以理解為,ACK:我收到了連接請求,SYN:我也准備好了,可以連接了),若是[SYN, ACK],主機A會再發送ack number=(主機B的seq+1),位碼是[ACK],主機B收到后確認seq值與位碼則連接建立成功。

從此完成了三次握手,主機A與主機B開始傳送數據。

 

如何驗證呢?下載個Wireshark抓包,這里提供下過濾器表達式:((ip.src == 10.1.20.3) && (ip.dst == 10.0.10.65)) || ((ip.src == 10.0.10.65) && (ip.dst == 10.1.20.3)) 

然后模擬TCP連接,用nc命令。

找台機器作為“服務器”主機B,在終端上: nc -l 9999

在本機上開啟抓包,然后本機終端上:nc 10.0.10.65 9999 連接上去。

暫停抓包。

效果如下:

看下,是不是三次握手的流程。

 


免責聲明!

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



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