對tcp三次握手和四次揮手做個筆記。
先來張配圖(圖片來自于網絡)
0_131271823564Rx.gif.jpeg
TCP三次握手
所謂三次握手(Three-way Handshake),是指建立一個TCP連接時,需要客戶端和服務器總共發送3個包。
100327002629.png
1.第一次握手客戶端主動,發送SYN標志報文,相當于通知服務器:我想連接你,不知可否。
2.第二次握手服務器主動,返回確認包ACK標志報文。相當于服務器反饋客戶端:可以,你連接吧。
3.第三次握手客戶端主動,再次發送報文 - ACK標志報文,告訴服務器:好嘞,我這就開始連接。
三次握手的目的是連接服務器指定端口,建立TCP連接,并同步連接雙方的序列號和確認號并交換 TCP 窗口大小信息.在socket編程中,客戶端執行connect()時。將觸發三次握手。
TCP四次揮手
TCP的連接的拆除需要發送四個包,因此稱為四次揮手(four-way handshake)。客戶端或服務器均可主動發起揮手動作,在socket編程中,任何一方執行close()操作即可產生揮手操作。
100327022731.jpg
關閉TCP連接,任意一方均可主動。
假設客戶端主動:
1.第一次揮手,客戶端發送FIN標志+ACK標志報文,通知服務器如果沒有數據了我想關閉連接。
2.第二次揮手,服務器發送ACK標志報文,客戶端收到報文之后等待服務器的關閉通知,相當于服務器告訴客戶端:稍等一下,容我檢查檢查。
3.第三次揮手,服務器發送關閉通知 - FIN標志+ACK標志報文,告訴客戶端:OK,關閉吧沒啥事了。
4.第四次揮手,客戶端收到關閉通知,給服務器發送反饋ACK標志報文,告訴服務器:OK,我關了哈,下次再見。
結束。
筆者能力有限,不足之處歡迎指出!