3次握手,4次揮手

上圖包括三個部分:建立連接,數據傳輸,斷開連接

第一次握手:客戶端發送syn包(seq = x)到服務器,並進入SYN_SENT狀態,等待服務器確認;第二次握手:服務器收到syn包,必須確認客戶的SYN(ack = x+1),同時自己也發送一個SYN包(seq = y),即SYN+ACK包,此時服務器進入SYN_RECV狀態;第三次握手:客戶端收到服務器的SYN+ACK包,向服務器確認包ACK(ack = y+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

四次揮手

第一次揮手:主動關閉方發送一個FIN,用來關閉主動方到被動方的數據傳輸,也就是主動關閉方告訴被動關閉方:我已經不會再給你發送數據了(當然,在FIN之前發送出去的數據,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些數據),但此時主動關閉方還可以接收數據。

第二次揮手:被動關閉方收到FIN包後,發送一個ACK給對方,確認序號爲收到序號加1(與SYN相同,一個FIN佔用一個序號)。

第三次揮手:被動關閉方發送一個FIN,用來關閉被動關閉方到主動關閉方的數據傳輸,也就是告訴主動關閉方,我的數據也發送完了,不會再給你發送數據了。

第四次揮手:主動關閉方收到FIN後,發送一個ACK給被動關閉方,確認序號爲收到的序號+1,致此完成四次揮手。

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