面向連接的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
面向連接的TCP概述