TOP

TCP為什么三次握手過程
2012-11-08 09:34:18 】 瀏覽:3960
Tags:

 

記得有次在騰訊面試,被問到TCP的三次握手,問題是為什么要是3次,不記得當時是怎么回答了,不過應該是沒回答好。

因為當時實在太緊張了优乐棋牌app下载,本來那次去面試hr告訴我只面試助總,不知為什么后來竟然要增加個面試總經理,這個總經理現在可是騰訊的副總裁了,問題都比較難。

那為什么要是三次呢,在網上找了下,有這樣的答案:

1. TCP的三次握手可以明確連接請求的有效性,防止已過期的連接再次傳到被連接的主機。

如果采用兩次的話,會出現下面這種情況。比如是A機要連到B機,結果發送的連接信息由于某種原因沒有到達B機;
于是,A機又發了一次,結果這次B收到了,于是就發信息回來,兩機就連接。傳完東西后,斷開。

結果這時候,原先沒有到達的連接信息突然又傳到了B機,于是B機發信息給A,然后B機就以為和A連上了,這個時候B機就在等待A傳東西過去。

2. 三次握手改成僅需要兩次握手,死鎖是可能發生

考慮計算機A和B之間的通信,假定B給A發送一個連接請求分組,A收到了這個分組优乐棋牌app下载,并發送了確認應答分組。按照兩次握手的協定,A認為連接已經成功地建立了,可以開始發送數據分組。可是,B在A的應答分組在傳輸中被丟失的情況下,將不知道A是否已準備好,不知道A建議什么樣的序列號优乐棋牌app下载,B甚至懷疑A是否收到自己的連接請求分組。在這種情況下,B認為連接還未建立成功,將忽略A發來的任何數據分組,只等待連接確認應答分組。而A在發出的分組超時后,重復發送同樣的分組,這樣就形成了死鎖。


 

請關注公眾號獲取更多資料



】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇 C++使用libcurl做HttpClient 下一篇ASIO學習筆記:Sync/Async、Block..