阿里面試題解析:TCP的三次握手四次揮手

  • 時間:2019-06-11 01:55 作者:若丨寒 來源:若丨寒 閱讀:127
  • 掃一掃,手機訪問
摘要:TCP(Transmission Control Protocol 傳輸控制協議)協議的作用是為了確保數據傳輸的可靠性;為了更容易傳送大數據,使用了字節流服務(Byte Stream Service)將大塊數據分割成報文段(segment)為單位的數據包進行管理和傳輸;而且TCP協議能夠確認數據最終

TCP(Transmission Control Protocol 傳輸控制協議)協議的作用是為了確保數據傳輸的可靠性;為了更容易傳送大數據,使用了字節流服務(Byte Stream Service)將大塊數據分割成報文段(segment)為單位的數據包進行管理和傳輸;而且TCP協議能夠確認數據最終能否送達到對方。

為了精確無誤的將數據送達目標處,TCP采用了三次握手(three-way handshaking)的策略。用TCP協議把數據包送出去后,TCP會向對方確認數據能否成功送達。握手過程中使用了TCP的標志(flag)——SYN(synchronize)和ACK(acknowledgement)。

三次握手步驟:

  • 服務器B處于LISTEN(監聽)狀態,等待來自用戶機A的連接請求。
  • 用戶機A向服務器B發送連接請求報文SYN。
  • 服務器B收到用戶機A發來的請求報文SYN,假如同意建立連接,則向用戶機A連接確認報文SYN ACK。
  • 用戶機A收到連接確認報文SYN ACK后,還要向服務器B發出確認報文ACK。
  • 服務器B收到確認報文ACK后,連接建立完成。

若在握手過程中某個階段莫名中斷,TCP協議會再次以相同的順序發送相同的數據包。

四次揮手:

FIN:FINISH

MSL:Maximum Segment Lifetime(報文最大生存時間):他是任何報文在網絡上存在的最長時間,超過這個時間報文將被丟棄。

TIME-WAIT

用戶端收到服務器端的FIN連接釋放報文后進入此狀態,而不是直接進入CLOSED狀態,還需要等待一個時間計時器設置的時間2MSL;這么做的理由有兩個:

  1. 確保最后一個確認報文ACK能夠達到。假如服務器端沒有收到用戶端發來確實認報文ACK那么久需要從新發送連接釋放請求報文FIN,用戶端等待一段時間就是為了解決這種情況的發送。
  2. 等待一段時間是為了讓本次連接持續時間內產生的所有報文都從網絡中消失,使得下一個新的連接不會出現舊的連接請求報文SYN,從而錯誤打開連接。

四次揮手的過程:

  • 用戶機A發送連接釋放報文FIN。
  • 服務器B收到FIN之后發出確認ACK,此時TCP屬于半關閉狀態,服務器B能想用戶機A發送數據但是用戶機A不能向服務器B發送數據。
  • 當服務器B不在需要連接時,發送連接釋放報文FIN。
  • 用戶機A收到FIN后發出確認ACK,進入TIME-WAIT狀態,等待2倍的MSL(最大報文存活時間)后釋放連接。
  • 服務器B收到ACK后釋放連接。

四次揮手的起因:

用戶端發送了FIN連接釋放報文之后,服務器端收到了這個報文,就進入了CLOSE-WAIT狀態。這個狀態是為了讓服務器端發送還未完畢的數據,傳送完畢之后,服務器端會發送FIN連接釋放報文。

  • 全部評論(0)
最新發布的資訊信息
【系統環境|服務器應用】前臺開發入門到實戰:HTML5語義化元素你真的用的正確嗎?(2019-08-22 04:16)
【系統環境|服務器應用】Vue仿微信app頁面跳轉動畫(2019-08-22 04:16)
【系統環境|服務器應用】webstorm使用快捷鍵快速修正單個文件的style(2019-08-22 04:16)
【系統環境|服務器應用】程序員從學生到阿里經歷的5次蛻變:海闊憑魚躍,天高任鳥飛(2019-08-22 04:16)
【系統環境|服務器應用】var、let、const的區別(2019-08-22 04:16)
【系統環境|服務器應用】mini-ui加載框Indicator 被遮擋問題(2019-08-22 04:15)
【系統環境|服務器應用】【對講機的那點事】玩對講機,對于對講機的亞音你理解嗎?(2019-08-22 04:15)
【系統環境|服務器應用】前臺中高級面試,內功心法(上)(2019-08-22 04:15)
【系統環境|服務器應用】17、改進輪播圖之功能封裝(2019-08-22 04:15)
【系統環境|服務器應用】第10題- 你不知道的delete操作符(2019-08-22 04:15)
手機二維碼手機訪問領取大禮包
返回頂部
免费资料铁四肖中特