TCP的三次握手機(jī)制 TCP為什么是三次握手,而不是兩次或四次?
TCP為什么是三次握手,而不是兩次或四次?你聽(tīng)到了嗎?我聽(tīng)到了。你呢?我也聽(tīng)說(shuō)了三次之后,確保雙方都能溝通,哪句話(huà)是無(wú)效的自動(dòng)連接請(qǐng)求啟動(dòng)時(shí),會(huì)有三次握手。我們知道三次握手完成了兩個(gè)重要的功能,即雙方
TCP為什么是三次握手,而不是兩次或四次?
你聽(tīng)到了嗎?
我聽(tīng)到了。你呢?
我也聽(tīng)說(shuō)了
三次之后,確保雙方都能溝通,哪句話(huà)是無(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)嗎?
二太少,如果第一次握手包丟失,那么如何判斷網(wǎng)絡(luò)是否暢通?因?yàn)閮纱蝸G包意味著對(duì)方確認(rèn)并回復(fù)。如果沒(méi)有收到回信,你認(rèn)為他或我是怎么把包裹弄丟的?再重發(fā)吧,如果沒(méi)有其他人,那么就可能無(wú)限重發(fā),浪費(fèi)網(wǎng)絡(luò)資源。
三次,因?yàn)閷?duì)方也需要收到回復(fù)。如果第一個(gè)數(shù)據(jù)包丟失,并且在接下來(lái)的幾次重傳中沒(méi)有收到回復(fù),那么可以認(rèn)為停止網(wǎng)絡(luò)是不好的。如果網(wǎng)絡(luò)暢通,對(duì)方肯定會(huì)收到其中一個(gè)請(qǐng)求,然后再回復(fù)。如果此時(shí)它沒(méi)有響應(yīng),也就是說(shuō),只握手兩次,并且如果數(shù)據(jù)包丟失,目標(biāo)不滿(mǎn)意,它將不會(huì)被重傳。主機(jī)只能認(rèn)為沒(méi)有目標(biāo)主機(jī),連接失敗。如果是三次,則數(shù)據(jù)包在第二次握手中丟失,而另一方?jīng)]有收到確認(rèn),則數(shù)據(jù)包將被重新傳輸。在重新傳輸之后,該方將收到一個(gè)數(shù)據(jù)包。這樣,雙方都知道對(duì)方確實(shí)存在,對(duì)于第三次握手,只需在隨后的數(shù)據(jù)傳輸中確認(rèn)即可。因此,第四次握手是不必要的。如果有第四次握手,則會(huì)有第五次握手和第六次握手。這毫無(wú)意義。你只需要確認(rèn)對(duì)方是否真的存在,后續(xù)的數(shù)據(jù)傳輸可以隨確認(rèn)一起進(jìn)行
在《計(jì)算機(jī)網(wǎng)絡(luò)》(謝錫仁譯)中,原因如下:1。使用兩次握手,如果由客戶(hù)機(jī)向服務(wù)器發(fā)起的分組A1在傳輸鏈路上遇到故障,則到服務(wù)器的傳輸時(shí)間相當(dāng)延遲。在此期間,由于客戶(hù)端沒(méi)有從服務(wù)器接收到關(guān)于分組A1的確認(rèn),因此分組A2將被重新傳輸。假設(shè)服務(wù)器正常接收到A2包,則返回確認(rèn)B2包。由于沒(méi)有第三次握手,客戶(hù)機(jī)和服務(wù)器此時(shí)已經(jīng)建立了連接。假設(shè)A1包隨后被發(fā)送到鏈路中的服務(wù)器,服務(wù)器將返回B1包確認(rèn)。但是,由于客戶(hù)機(jī)已經(jīng)清除了A1數(shù)據(jù)包,因此客戶(hù)機(jī)將丟棄確認(rèn)數(shù)據(jù)包,但服務(wù)器將保持等同于僵尸的連接。因此,使用兩次握手可能會(huì)浪費(fèi)服務(wù)器的網(wǎng)絡(luò)資源。圖片說(shuō)明:1??蛻?hù)向服務(wù)器發(fā)送不明確的消息。2服務(wù)器收到消息,看了看,很高興馬上回復(fù)(此時(shí),客戶(hù)不知道服務(wù)已經(jīng)收到)。客戶(hù)很高興收到服務(wù)器的確認(rèn)信息(但是服務(wù)器不知道客戶(hù)已經(jīng)收到了)。如果沒(méi)有收到,應(yīng)該重新發(fā)送。理論上,直到海水變干巖石腐爛為止。4服務(wù)器最終收到了客戶(hù)關(guān)系的確認(rèn)消息,并最終放下了心,使客戶(hù)與服務(wù)器真正建立了可靠的關(guān)系渠道。畢竟,我們都知道這是可行的。。。所以至少要三次才能確認(rèn)這段關(guān)系。如果不需要三次,服務(wù)器就無(wú)法確定客戶(hù)端是否收到了自己的消息。如果它沒(méi)有接收到它,客戶(hù)端可能根本沒(méi)有接收到它,或者客戶(hù)端響應(yīng),但是服務(wù)器沒(méi)有接收到它。如果你用過(guò)對(duì)講機(jī),你就會(huì)明白:R C->S:你能聽(tīng)見(jiàn)我說(shuō)話(huà)嗎?R S->C:是的。你能聽(tīng)見(jiàn)我說(shuō)話(huà)嗎?R C>S:是的。