摘要:而上面兩種情況,如果使用三次握手就可以成功避免,三次握手完成的兩個(gè)重要功能既要雙方做好發(fā)送數(shù)據(jù)的準(zhǔn)備工作雙方都知道彼此已準(zhǔn)備好允許雙方就初始序列號(hào)進(jìn)行協(xié)商,這個(gè)序列號(hào)在握手過(guò)程中被發(fā)送和確認(rèn)
我們都知道tcp協(xié)議需要三次握手,那為什么不是兩次握手呢,關(guān)于這個(gè)疑問(wèn)我查了很多資料,看到很多的解釋,現(xiàn)歸納總結(jié)如下,方便我們理解記憶
如果是兩次握手,我們一起來(lái)看看下面兩種場(chǎng)景
1.造成資源浪費(fèi)
Client向Server發(fā)送了一個(gè)a1的包
假如這時(shí)由于傳輸鏈路上遇到故障,導(dǎo)致a1傳輸?shù)絊erver的時(shí)間特別長(zhǎng) 假設(shè)1min
在這一分鐘的時(shí)間內(nèi),由于Client沒(méi)有收到Server對(duì)于a1包的確認(rèn),Client會(huì)以為上一個(gè)包發(fā)送丟了或者失敗
那么Client會(huì)再發(fā)送一個(gè)a2的包
Client又向Server發(fā)送了一個(gè)a2的包
這次Server正常收到
于是Server向Client發(fā)送了一個(gè)b2的確認(rèn)包
Client和Server建立鏈接
而隨后滯后的a1包傳到了Server,Server又會(huì)返回b1包確認(rèn)
但是由于Client已經(jīng)清除了a1包,所以Client會(huì)丟棄掉這個(gè)包,但是Server又會(huì)保持這個(gè)相當(dāng)于“僵尸”的連接
這樣就會(huì)造成白白浪費(fèi)資源
在謝希仁著《計(jì)算機(jī)網(wǎng)絡(luò)》第四版中講“三次握手”的目的是“為了防止已失效的連接請(qǐng)求報(bào)文段又突然傳送到服務(wù)器,因?yàn)楫a(chǎn)生錯(cuò)誤”在另一部經(jīng)典的《計(jì)算機(jī)網(wǎng)絡(luò)》(AndrewS.Tanenbaum著,第四版)一書中講“三次握手”的目的是為了解決“網(wǎng)絡(luò)中存在延遲的重復(fù)分組”的問(wèn)題。
我們會(huì)發(fā)現(xiàn)這兩種不同的表述其實(shí)闡明的是同一個(gè)問(wèn)題。
2.死鎖可能發(fā)生
Client向Server發(fā)送了一個(gè)連接請(qǐng)求分組
Server收到這個(gè)分組,并發(fā)送了確認(rèn)應(yīng)答分組
按照兩次握手的協(xié)定,Server認(rèn)為已經(jīng)成功的建立連接,可以開始發(fā)送數(shù)據(jù)分組
而此時(shí)Server的應(yīng)答分組傳輸丟失了,Client不知道Server是否已準(zhǔn)備好,不知道Server建立什么樣的序列號(hào)
Client甚至懷疑Server是否收到了自己的連接請(qǐng)求分組,在這種情況下,Client認(rèn)為連接還未建立成功,將忽略Server發(fā)來(lái)的任何數(shù)據(jù)請(qǐng)求,只等待連接確認(rèn)影帶分組。而Server在發(fā)出的分組超時(shí)后,重復(fù)發(fā)送同樣的分組,資源就形成了死鎖。
而上面兩種情況,如果使用三次握手就可以成功避免,三次握手完成的兩個(gè)重要功能
既要雙方做好發(fā)送數(shù)據(jù)的準(zhǔn)備工作(雙方都知道彼此已準(zhǔn)備好)
允許雙方就初始序列號(hào)進(jìn)行協(xié)商,這個(gè)序列號(hào)在握手過(guò)程中被發(fā)送和確認(rèn)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104281.html
摘要:而上面兩種情況,如果使用三次握手就可以成功避免,三次握手完成的兩個(gè)重要功能既要雙方做好發(fā)送數(shù)據(jù)的準(zhǔn)備工作雙方都知道彼此已準(zhǔn)備好允許雙方就初始序列號(hào)進(jìn)行協(xié)商,這個(gè)序列號(hào)在握手過(guò)程中被發(fā)送和確認(rèn) 我們都知道tcp協(xié)議需要三次握手,那為什么不是兩次握手呢,關(guān)于這個(gè)疑問(wèn)我查了很多資料,看到很多的解釋,現(xiàn)歸納總結(jié)如下,方便我們理解記憶 如果是兩次握手,我們一起來(lái)看看下面兩種場(chǎng)景 1.造成資源浪費(fèi)...
摘要:原理套接字概念套接字是通信的基石,是支持協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。建立連接建立連接至少需要一對(duì)套接字,其中一個(gè)運(yùn)行于客戶端,稱為,另一個(gè)運(yùn)行于服務(wù)器端,稱為。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求。 最近在惡補(bǔ)計(jì)算機(jī)網(wǎng)絡(luò)方面的知識(shí),之前對(duì)于TCP的三次握手和四次分手也是模模糊糊,對(duì)于其中的細(xì)節(jié)更是渾然不知,最近看了很多這方面的知識(shí),也在系統(tǒng)的學(xué)習(xí)計(jì)算機(jī)...
閱讀 1728·2021-10-09 09:44
閱讀 3291·2021-09-27 13:36
閱讀 1549·2021-09-22 15:33
閱讀 1305·2021-09-22 15:23
閱讀 1192·2021-09-06 15:02
閱讀 1722·2019-08-29 16:14
閱讀 2933·2019-08-29 15:26
閱讀 2438·2019-08-28 18:08