簡(jiǎn)述TCP的三次握手過(guò)程 TCP為什么是三次握手,而不是兩次或四次?
TCP為什么是三次握手,而不是兩次或四次?你聽(tīng)到了嗎?我聽(tīng)到了。你呢?我也聽(tīng)說(shuō)了三次之后,確保雙方都能溝通,哪句話是無(wú)效的自動(dòng)連接請(qǐng)求啟動(dòng)時(shí),會(huì)有三次握手。我們知道三次握手完成了兩個(gè)重要的功能,即雙方
TCP為什么是三次握手,而不是兩次或四次?
你聽(tīng)到了嗎?
我聽(tīng)到了。你呢?
我也聽(tīng)說(shuō)了
三次之后,確保雙方都能溝通,哪句話是無(wú)效的
自動(dòng)連接請(qǐng)求啟動(dòng)時(shí),會(huì)有三次握手。我們知道三次握手完成了兩個(gè)重要的功能,即雙方都應(yīng)該準(zhǔn)備好發(fā)送數(shù)據(jù)(雙方都知道對(duì)方準(zhǔn)備好了),并且雙方都應(yīng)該被允許協(xié)商初始序列號(hào),這是在握手過(guò)程中被發(fā)送和確認(rèn)的。
現(xiàn)在將三次握手更改為兩次握手,可能會(huì)出現(xiàn)死鎖。例如,考慮計(jì)算機(jī)s和C之間的通信。假設(shè)C向s發(fā)送連接請(qǐng)求包,s接收該包并發(fā)送確認(rèn)響應(yīng)包。根據(jù)兩次握手的協(xié)議,s認(rèn)為連接已經(jīng)成功建立,可以開(kāi)始發(fā)送數(shù)據(jù)包。然而,當(dāng)s的應(yīng)答包在傳輸中丟失時(shí),C將不知道s是否準(zhǔn)備好或者s建立了什么樣的序列號(hào)。C甚至懷疑s是否收到了自己的連接請(qǐng)求包。在這種情況下,C認(rèn)為連接尚未成功建立,并且將忽略s發(fā)送的任何數(shù)據(jù)包,而只是等待連接確認(rèn)響應(yīng)包。S在包超時(shí)后重復(fù)發(fā)送相同的包。這會(huì)造成死鎖。
tcpip三次握手自動(dòng)嗎?
TCP需要握手三次才能建立連接,握手四次才能斷開(kāi)連接。這是由于TCP的半關(guān)閉造成的。因?yàn)門(mén)CP連接是全雙工的(也就是說(shuō),數(shù)據(jù)可以同時(shí)在兩個(gè)方向上傳輸),所以在關(guān)閉時(shí),每個(gè)方向應(yīng)該分別關(guān)閉。這種單向閉合叫做半閉合。關(guān)閉的方法是,當(dāng)一方完成數(shù)據(jù)傳輸后,它發(fā)送一條消息,并發(fā)送一個(gè)fin來(lái)通知另一方該方向的連接將被終止。當(dāng)一端接收到fin時(shí),它必須通知應(yīng)用層TCP連接已經(jīng)終止了這個(gè)方向的數(shù)據(jù)傳輸。發(fā)送fin通常是應(yīng)用層關(guān)閉的結(jié)果