TCP的連接建立與拆除(三次握手與四次揮手)總結

TCP 連接的建立都是採用客戶服務器方式。

  •  主動發起連接建立的應用進程叫做客戶(client)。
  •  被動等待連接建立的應用進程叫做服務器(server)。

用三次握手建立TCP連接

    連接可以由任何一方發起,也可以由雙發同時發起。一單一臺主機上的TCP軟件已經主動發起連接請求,運行在另一臺主機上的TCP軟件就被動的等待握手

  1.  如圖主機1首先發起TCP連接請求,並在所發送的分段中將編碼位字段的SYN位被置爲1,ACK位被置爲0.
  2. 主機2收到該分段,若同意建立連接,則發送一個連接收到的應答分段,其中編碼位字段的SYN和ACK位置均被置爲1,指示對第一個SYN報文段的確認,以繼續握手操作;
  3. 若拒接建立連接,主機2要發送一個將RST位被置爲1的應答分段,表示拒接建立連接

 

  1. 主機1收到主機2發來的同意建立連接分段後,還有再次進行選擇的機會,若確認建立連接,則向主機2發送確認分段,用來通知主機2雙方已經完成建立連接;
  2. 若不想建立連接,則可以發送一個將RST位被置爲1的應答分段來告訴主機2拒接建立連接。

無論是哪一方發起連接請求,一旦連接建立,就可以實現全雙工的數據傳輸,而不存在主從關係。

TCP將數據看作字節的序列,將從用戶進程接收的任意長的數據,分成不超過64KB(包含TCP頭在內)的分段,以適合IP數據報的載荷能力。所以對於一次傳輸要交換大量報文的應用,往往需要以多個分段進行傳輸。


TCP連接的拆除或釋放(四次揮手)

      TCP協議使用修改的三次握手協議來關閉連接。

      TCP連接是全雙工的,可以看作兩個不同方向的單工數據流傳輸。所以一個完整連接的拆除涉及兩個單向連接的拆除

      當主機1的TCP數據已經發送完畢時,在等待確認的同時可發送一個將編碼位字段的FIN位被置爲1的分段給主機2,

      若主機2已經正確接收主機1的所有分段,則會發送一個數據分段確認接收的確認分段,同時通知本地相應的應用程序對方要求關閉連接,

     接着再向主機1發送一個FIN段進行確認的分段。否則主機1就要重傳那些主機2未能正確接收的分段。

收到主機2關於FIN確認後的主機需要再次發送一個確認拆除連接的分段,主機2收到確認分段後意味着從主機1到主機2的單向連接已經結束,但主機2仍然可以向主機1發送數據,直到主機2數據發送完畢並要求關閉連接。一旦兩個單向連接都被關閉,則兩個端結點上的TCP軟件就要刪除與這個連接的有關記錄,原來所建立的TCP連接被完全釋放。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章