【TCP】面向連接的TCP概述


TCP連接概述

    TCP是因特網運輸層面向連接的(connection-oriented)可靠運輸協議。之所以說它是面向連接的是因為
  一個應用進程向另外一個應用進程發送數據之前,兩個進程必須先要“握手”(建立連接),初始化一些建立連
  接的TCP狀態變量。

    TCP協議是在端系統中運行的,不會在中間的網絡元素(路由器和鏈路層交換機)中運行,所以中間元素不
  會維持TCP連接狀態。它的連接狀態完全保留在兩個端系統中。在實際中,中間路由器看到的只是數據包而不是
  連接。

    TCP連接提供的是全雙工服務(full-duplex-service),並且TCP連接也是點對點(piont-to-piont)的,這
  就說明TCP連接是單個發送方與單個接收方之間的連接。在一次發送操作中,從一個發送方將數據傳給多個接收
  方,即“多播”操作對TCP來說是不可能的。

    兩個應用進程經過“三次握手”(three-way handshake)后建立TCP連接。連接建立后兩個應用進程便可以
  相互發送數據了。

  

    如圖所實,假設左邊進程為客戶進程,右邊進程為服務器進程。
    客戶進程通過套接字傳遞傳遞數據流。TCP將數據引導到該連接的發送緩存(send buffer)里(該緩存是
  TCP三次握手初期設置的緩存之一)。TCP會不時的從發送緩存里取出一塊數據,為每塊數據加上一個TCP
  首部,從而形成TCP報文段(TCP segment)。這些報文段被傳遞給下層的網絡層,網絡層再將報文段封裝在
  IP數據報中。然后,IP數據報被發送到網絡中。TCP在另一端接收到一個報文段后,該報文段就被放入該TCP連
  接的接收緩存中。應用程序再從此緩存中讀取數據流。

    上文中說的TCP會不時的從發送緩存里取出一塊數據,這里的不時在TCP規范里並沒有提及確切時間,只是
  說在它“方便時”。TCP所取數據大小會受限於最大報文段長度(Maximum Segment Size,MSS)

    MSS通常根據最初確定的由本地發送主機發送的最大鏈路幀長度(所謂最大傳輸單元MTU)來確定。
    設置MSS時要保證一個TCP報文段(封裝在IP數據報中在加上TCP首部,通常40個字節)適合單個鏈路層幀
    以太網和PPP鏈路層協議都具有1500字節的MTU,一次MSS的典型值為1460字節。
    需要注意:MSS是報文段里應用層數據的最大長度,不包括TCP首部


  此文為《計算機網絡 自頂向下方法》學習筆記3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM