網苑雜談之網絡基礎篇——TCP建連和三次握手

技術 網苑雜談 網苑雜談 2017-10-20

今天開始我們分幾次詳細瞭解一下TCP協議幾個關鍵的過程和機制。

今天我們先來了解一下建連過程以及三次握手機制。

說到TCP的建連過程,就需要先再說一下TCP協議的工作模式。我們知道TCP的工作模式是CS模式,所謂CS就是客戶端服務器模式,也就是需要兩端都運行tcp,服務器端監聽知名端口,客戶端按需發起連接請求,才會進入連接過程。瞭解了這個之後,下邊我們就來看一下TCP的建連的三次握手過程。

建立連接過程,三次握手機制。

我們還是先上個圖看一下,直觀一些。

網苑雜談之網絡基礎篇——TCP建連和三次握手

參考圖片,主機A作為客戶端,發起TCP連接請求,從而開始三次握手過程:

第一次握手:A發起連接請求,向B發送一個SYN報文,攜帶本端初始序列號(SYN=x),等待B的迴應;

第二次握手:B收到A發來的連接請求之後,需要對收到的SYN報文進行確認,同時需要給A進行回覆,發送自己的SYN報文,攜帶本端的初始序列號(SYN=y),所以B最終給A回覆了一個報文,報文中攜帶ACK=x+1,SYN=y,然後開始等待A的迴應;

第三次握手:A收到B發來的ACK報文之後,知道B已經正確接收並記錄了自己的序列號,同時A收到B發來的SYN報文,A發送對應的ACK,攜帶ACK=y+1給B,對SYN報文進行確認。之後A進入Establish狀態,B收到A的ACK之後,知道A已經正確接收並記錄了自己的序列號,於是也進入Establish狀態。

經過上述三次交互過程,TCP完成了初始連接建立,這就是我們所說的三次握手過程。

從這個過程我們可以看到,三次握手,TCP其實主要完成了兩件非常重要的事情,1是建立連接,2是協商序列號,完成了這兩件事情之後,就具備了開始傳輸數據的能力。實際上這個過程可能還會完成第三件事情,那就是參數協商,我們前邊在介紹tcp報文頭的時候講到過,tcp報文頭可以有option字段,比如MSS。

可選字段協商 MSS。

MSS 譯為最大傳輸段大小,表示的是一個TCP報文所能承載的最大數據量,注意這裡不包含TCP頭部長度。在三次握手過程中,A和B可以通過在雙方交互的SYN報文中增加MSS選項,來進行MSS協商,SYN中MSS的值表示的是本端的MSS值。雙方交互之後,取兩端較小的值作為協商值來使用。

MSS的值設置大體可以分為兩種情況:1是直連網段,這時候不涉及跨設備跨多種介質的問題,所以MSS一般設置為MTU-IP頭長度-TCP頭長度;2是非直連網段,由於可能跨越多臺設備,不同設備之間可能使用不同的介質傳播,MTU可能不同,所以這個不能直接使用MTU計算。這種情況MSS使用TCP設置的缺省值 536。

好了,小夥伴們,今天的講解就結束了,希望大家能或多或少有所收穫,歡迎留言交流碰撞,一起討論提升。

相關推薦

推薦中...