天天看點

速讀原著-TCP/IP(TCP的首部)

第17章 TCP:傳輸控制協定

T C P資料被封裝在一個I P資料報中,如圖1 7 - 1所示。

速讀原著-TCP/IP(TCP的首部)

圖1 7 - 2顯示T C P首部的資料格式。如果不計任選字段,它通常是 2 0個位元組。

速讀原著-TCP/IP(TCP的首部)

每個T C P段都包含源端和目的端的端口号,用于尋找發端和收端應用程序。這兩個值加上I P首部中的源端I P位址和目的端I P位址唯一确定一個T C P連接配接。

有時,一個I P位址和一個端口号也稱為一個插口( s o c k e t)。這個術語出現在最早的 T C P規範(R F C 7 9 3)中,後來它也作為表示伯克利版的程式設計接口(參見 1 . 1 5節)。插口對(s o c k e t p a i r)(包含客戶I P位址、用戶端口号、伺服器 I P位址和伺服器端口号的四元組 )可唯一确定網際網路絡中每個T C P連接配接的雙方。

序号用來辨別從T C P發端向T C P收端發送的資料位元組流,它表示在這個封包段中的的第一個資料位元組。如果将位元組流看作在兩個應用程式間的單向流動,則 T C P用序号對每個位元組進行計數。序号是32 bit的無符号數,序号到達2 3 2-1後又從0開始。

當建立一個新的連接配接時, S Y N标志變1。序号字段包含由這個主機選擇的該連接配接的初始序号I S N(Initial Sequence Number)。該主機要發送資料的第一個位元組序号為這個 I S N加1,因為S Y N标志消耗了一個序号(将在下章詳細介紹如何建立和終止連接配接,屆時我們将看到 F I N标志也要占用一個序号)。

既然每個傳輸的位元組都被計數,确認序号包含發送确認的一端所期望收到的下一個序号。是以,确認序号應當是上次已成功收到資料位元組序号加 1。隻有A C K标志(下面介紹)為 1時确認序号字段才有效。

發送A C K無需任何代價,因為 32 bit的确認序号字段和A C K标志一樣,總是T C P首部的一部分。是以,我們看到一旦一個連接配接建立起來,這個字段總是被設定, A C K标志也總是被設定為1。

T C P為應用層提供全雙工服務。這意味資料能在兩個方向上獨立地進行傳輸。是以,連接配接的每一端必須保持每個方向上的傳輸資料序号。

T C P可以表述為一個沒有選擇确認或否認的滑動視窗協定(滑動視窗協定用于資料傳輸将在2 0 . 3節介紹)。我們說T C P缺少選擇确認是因為 T C P首部中的确認序号表示發方已成功收到位元組,但還不包含确認序号所指的位元組。目前還無法對資料流中標明的部分進行确認。例如,如果1~1 0 2 4位元組已經成功收到,下一封包段中包含序号從 2 0 4 9~3 0 7 2的位元組,收端并不能确認這個新的封包段。它所能做的就是發回一個确認序号為 1 0 2 5的A C K。它也無法對一個封包段進行否認。例如,如果收到包含 1 0 2 5~2 0 4 8位元組的封包段,但它的檢驗和錯, T C P接收端所能做的就是發回一個确認序号為 1 0 2 5的A C K。在2 1 . 7節我們将看到重複的确認如何幫助确定分組已經丢失。

首部長度給出首部中 32 bit字的數目。需要這個值是因為任選字段的長度是可變的。這個字段占4 bit,是以T C P最多有6 0位元組的首部。然而,沒有任選字段,正常的長度是 2 0位元組。在T C P首部中有6個标志比特。它們中的多個可同時被設定為 1。我們在這兒簡單介紹它們的用法,在随後的章節中有更詳細的介紹。

U R G 緊急指針(u rgent pointer)有效(見2 0 . 8節)。

A C K 确認序号有效。

P S H 接收方應該盡快将這個封包段交給應用層。

R S T 重建連接配接。

S Y N 同步序号用來發起一個連接配接。這個标志和下一個标志将在第 1 8章介紹。

F I N 發端完成發送任務。

T C P的流量控制由連接配接的每一端通過聲明的視窗大小來提供。視窗大小為位元組數,起始于确認序号字段指明的值,這個值是接收端正期望接收的位元組。視窗大小是一個 16 bit字段,因而視窗大小最大為 6 5 5 3 5位元組。在2 4 . 4節我們将看到新的視窗刻度選項,它允許這個值按比例變化以提供更大的視窗。

檢驗和覆寫了整個的T C P封包段:T C P首部和T C P資料。這是一個強制性的字段,一定是由發端計算和存儲,并由收端進行驗證。 T C P檢驗和的計算和 U D P檢驗和的計算相似,使用如11 . 3節所述的一個僞首部。

隻有當U R G标志置1時緊急指針才有效。緊急指針是一個正的偏移量,和序号字段中的值相加表示緊急資料最後一個位元組的序号。 T C P的緊急方式是發送端向另一端發送緊急資料的一種方式。我們将在2 0 . 8節介紹它。

最常見的可選字段是最長封包大小,又稱為 MSS (Maximum Segment Size)。每個連接配接方通常都在通信的第一個封包段(為建立連接配接而設定 S Y N标志的那個段)中指明這個選項。它指明本端所能接收的最大長度的封包段。我們将在 1 8 . 4節更詳細地介紹M S S選項,T C P的其他選項中的一些将在第2 4章中介紹。

從圖1 7 - 2中我們注意到T C P封包段中的資料部分是可選的。我們将在 1 8章中看到在一個連接配接建立和一個連接配接終止時,雙方交換的封包段僅有 T C P首部。如果一方沒有資料要發送,也使用沒有任何資料的首部來确認收到的資料。在處理逾時的許多情況中,也會發送不帶任何資料的封包段。

繼續閱讀