網路協議TCP 的三次握手和四次揮手
阿新 • • 發佈:2019-03-02
TCP協議來自RFC793 。 https://www.ietf.org/rfc/rfc793.txt
1。 為什麼三次握手?
正確答案:TCP三次握手,實際上是雙方各握手一次,各做一次確認,其中一次握手和確認合併在一起。(就這樣簡單,完全沒有別的么兒子)。
來此上面連結的Page27頁。
1) A --> B SYN my sequence number is X 2) A <-- B ACK your sequence number is X 3) A <-- B SYN my sequence number is Y 4) A --> B ACK your sequence number is Y
答案解釋:TCP有2個特性1. “全雙工” 2.“通訊穩定”
特性1需要雙向確認,特性2引入了SEQ(sequence numbers 序列號),用SEQ確定報文的前後順序。
--錯誤答案:.謝希仁著《計算機網路》第四版中,講 “三次握手” 的目的是 “為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤”,這個只能算是表因,並不涉及本質。
2。 為什麼四次揮手?
正確答案:雙方各揮手一次,各做一次確認。幾乎和握手一模一樣,只是中間的2,3因為存在時間差無法合併。
1) A --> B FIN my sequence number is X 2) A <-- B ACK your sequence number is X 3) A <-- B FIN my sequence number is Y 4) A --> B ACK your sequence number is Y
RFC793給出的討論在page38
There are essentially three cases: 1) The user initiates by telling the TCP to CLOSE the connection 2) The remote TCP initiates by sending a FIN control signal 3) Both users CLOSE simultaneously
就是說,只有case3的情況下,第2,3兩步驟不存在時間差,可以做到3次揮手。但這種特例顯然不應該被推薦為通用標準。更合理的4次揮手標準誕生了。