TCP的三次握手與四次揮手

眾所周知,TCP是面向連接的、可靠的傳輸層的通信協(xié)議,它在建立連接以及斷開連接時(shí)分別會(huì)發(fā)生三次握手和四次揮手的行為,以保證它的這種可靠性特征。

建立連接:三次握手

三次握手的過程如下:

  1. 客戶端發(fā)送一個(gè)SYN (SEQ=x)報(bào)文給服務(wù)器;
  2. 服務(wù)器收到后,回應(yīng)一個(gè)SYN (SEQ=y) + ACK (ACK=x+1)的報(bào)文;
  3. 客戶端收到服務(wù)器的報(bào)文后,再回應(yīng)一個(gè)ACK(ACK=y+1)的報(bào)文,即完成三次握手過程。
    TCP三次握手

三次握手完成后,客戶端和服務(wù)器就能正常進(jìn)行數(shù)據(jù)傳輸了。

斷開連接:四次揮手

四次揮手的過程如下:

  1. 某一端想要關(guān)閉連接時(shí),需要發(fā)送一個(gè)FIN分節(jié)給另一端,表示該端的數(shù)據(jù)發(fā)送已經(jīng)完畢,可以關(guān)閉連接了。
  2. 另一端接收到關(guān)閉信號后,發(fā)送ACK報(bào)文確認(rèn)已接收到關(guān)閉信息。
  3. 一段時(shí)間后,另一端也完成了數(shù)據(jù)發(fā)送后,將發(fā)送FIN給對端。
  4. 接收到FIN的原發(fā)送端會(huì)發(fā)送確認(rèn)報(bào)文ACK,至此兩端將關(guān)閉連接。
    TCP四次揮手

    四次揮手過程中,任何一端都可以執(zhí)行主動(dòng)關(guān)閉,但一般是客戶端一方主動(dòng)執(zhí)行。
  • Q:為什么斷開連接需要四次而不是三次?
    A: 因?yàn)閿嚅_連接時(shí),被動(dòng)方需要先發(fā)送確認(rèn)報(bào)文,確認(rèn)它已經(jīng)收到了主動(dòng)方發(fā)送的斷開信息。這時(shí),它可能還需要等待一段時(shí)間,等數(shù)據(jù)發(fā)送完畢,再發(fā)送FIN報(bào)文告知主動(dòng)方它也已經(jīng)發(fā)送完成,可以斷開連接。因此ACKFIN不是同時(shí)發(fā)送的,需要多一次。

參考文獻(xiàn):
https://baike.baidu.com/item/TCP/33012?fr=aladdin#6_2
https://www.cnblogs.com/lms0755/p/9053119.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容