HTTP的三次握手和四次揮手

HTTP三次握手
位碼即TCP標誌位,有6中標示:
SYN    --建立聯機(synchronous)
ACK    --確認(acknowledgement)
PSH    --傳送(push)
FIN    --結束(finish)
RST    --重置(reset)
URG    --緊急(urgent)
Sequence number    --    順序號碼
Acknowledge number    --    確認號碼

TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握手確認建立連接:
第一次握手:主機A發送位碼syn=1,隨機產生seq number=123456的數據包發送到服務器,主機B由SYN=1知道,A要求建立聯機;

第二次握手:主機B收到請求後要確認聯機信息,向A發送ack number=(主機A的seq + 1),syn=1,ack=1,隨機產生seq=7654321的包

第三次握手:主機A收到後檢查ack number是否正確,即第一次發送的seq number +1 以及位碼ack是否爲1,若正確,主機A會再次發送ack number=(主機B的seq + 1),ack=1,主機B收到後確認seq的值與ack=1則建立連接

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

實例:

IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1
第一次握手:192.168.1.116發送位碼syn=1,隨機產生seq number=3626544836的數據包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立聯機;
第二次握手:192.168.1.123收到請求後要確認聯機信息,向192.168.1.116發送ack number=3626544837(主機A的seq+1),syn=1,ack=1,隨機產生seq=1739326486的包;
第三次握手:192.168.1.116收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否爲1,若正確,192.168.1.116會再發送ack number=1739326487(主機B的seq+1),ack=1,192.168.1.123收到後確認seq=seq+1,ack=1則連接建立成功。



TCP四次揮手過程

第一次揮手:Client 給 Server 發送TCP包。用來關閉 Client 到 Server 的數據傳輸。將標誌位 FIN 和 ACK 置爲1,確認序號爲 Z=1

第二次揮手:Server 收到 FIN 後,發回一個 ACK (標誌位 ACK =1),確認序號爲收到的序號加1,即 X = X +1 =2,序號爲收到的確認序號 = Z

第三次揮手:Server 關閉與 Client 的連接,發送一個 FIN。標誌位 FIN 和 ACK 置爲1,序號 Y=1,確認序號爲 X=2

第四次揮手:Client 收到 Server 發送的 FIN 之後,發回 ACK 確認(標誌位 ACK=1),確認序號爲收到的序號加1,即 Y+1=2,序號爲收到的確認序號 X=2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章