1. 程式人生 > >面向連接的TCP概述

面向連接的TCP概述

數據流 markdown 註意 兩個 gpo 讀取數據 必須 網絡層 之一

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

面向連接的TCP概述