TCP資料段格式

2021-08-01 07:41:28 字數 3390 閱讀 8972

摘自:《深入理解計算機網路》 王達著 機械工業出版社

1.ipv4資料報頭部格式

2.ipv6資料報頭部格式

3.ipv4資料報的封裝與解封裝

4.ipv4資料報的分段與重組

5.arp協議報文格式及arp表

6.arp位址解析原理

7.icmp協議及報文格式

8.ipv6協議族的其它協議

9.tcp的主要特性

前面講過,tcp的協議資料單元仍採用傳統意義上的叫法,稱為segment(分段),而沒有像osi/rm中的那樣稱為tpdu,當然兩者本質是一致的。所使用的tcp軟體決定了資料段的大小,可以將多次寫操作中的資料累計起來放到乙個資料段中,也可以將一次寫操作的資料分割成多個資料段。有兩個因素決定了資料段的大小:一是每個tcp資料段的大小必須符合ip資料報的65515位元組的有效荷載大小限制要求;二是每個網路都有乙個mtu值,因此每個tcp資料段必須符合mtu的限制大小。

tcp通過資料段的互動來建立連線、傳輸資料、發出確認、進行差錯控制、流量控制及關閉連線。整個tcp資料段也分為「資料段頭」和「資料」兩部分(這也是絕大多數報文封裝的方式),所謂「資料段頭」就是tcp為了實現端到端可靠傳輸而加上的tcp控制資訊,而「資料」部分則是由高層(即tcp/ip體系結構中的應用層)來的使用者資料。但由於tcp只有一種tpdu格式,所有型別的資料段格式都統一在如下圖所示的tcp資料段格式中,不同型別資料段是通過其中的多個控制位來實現的。

來自:源埠和目的埠

源埠和目的埠分別代表呼叫方和被呼叫方的tcp埠號,各佔16位。乙個埠與主機的ip位址就可以完整地標識乙個端點了,也就是構成套接字(socket)。

序號(sequence number)

序號指tcp資料段中的「資料」部分(不包含「資料段頭」部分)的第乙個位元組的編號,佔32位。在乙個tcp連線中,傳送的資料字節流的每乙個資料位元組都要按順序進行編號,在「資料段頭」中標識的只是每個資料段的第乙個資料位元組的編號。整個要傳送的位元組流的起始序號必須在連線建立時設定。例如,乙個資料段的「序號」字段值是101,而該數字段中共有100個位元組,表明本資料段的最後乙個位元組的編號是200。這樣一來,下乙個資料段的。這樣以來,下乙個資料段的「序號」字段值應該是201,而不是102,這點要注意。

確認號

確認號指期望接收到對方下乙個資料段中「資料」部分的第乙個位元組序號,佔32位。注意,「確認號」不是代表已經正確接收到的最後乙個位元組的序號。例如,主機b已收到主機a發來的乙個資料段,其序號值是101,而該資料段的長度是100位元組。這表明主機b已收到主機a前200個位元組,下乙個期望要收到的資料段的第乙個位元組的序號應該是201,於是主機b在給主機a傳送確認資料段時要把「確認號」設定為201。

「序號」和「確認號」兩個字段共同用於tcp服務中的差錯控制,確保tcp資料傳輸的可靠性。

資料偏移

資料偏移指資料段中的「資料」部分起始處距離tcp資料段起始處的位元組偏移量,佔4位。其實這裡的「資料偏移」也是在確定tcp資料段頭部分的長度,因為「資料」部分是緊接著資料段頭的。因為tcp資料段頭中有不確定的「可選項」字段,所以資料偏移欄位是非常必要的。但是注意的是,資料偏移量是以32位(即4位元組)為單位來計算的,而不是以單個位元組來計算的。因為4個位元位可以表示的最大數為15,所以資料偏移量最大為60位元組,這也是tcp資料段頭部分的最大長度。

保留

這是為將來應用而保留的6個位元位,目前應全設定為0。

ack

acknowledgement(確認)控制位,指示tcp資料段中的「確認號」字段是否有效,佔1位。僅當ack位置1時才表示「確認號」字段有效,否則表示「確認號」字段無效,應用層實體在讀取資料時可以不管「確認號」字段。

psh

push(推)控制位,指示是否需要立即把收到的該資料段提交給應用程序,而置0時沒有這個要求,可以先快取起來。

rst

reset(重置)控制位,用於重置、釋放乙個已經混亂的傳輸連線,然後重建新的傳輸連線,佔1位。當rst位置1時,釋放當前傳輸連線,然後可以重新建立新的傳輸連線。

syn

synchronization(同步)控制位,用來在傳輸連線建立時同步傳輸連線序號,佔1位。當syn位置1時,表示這是乙個連線請求或連線確認報文。當syn=1,而ack=0時,表明這是乙個連線請求資料段。如果對方同意建立連線,則對方會返回乙個syn=1、ack=1的確認。

fin

final(最後)控制位,用於釋放乙個傳輸連線,佔1位。當fin位置1時,表示資料已經全部傳輸完成,傳送端沒有資料要傳輸了,要求釋放當前訊號,但是接收端仍然可以繼續接受還沒有接受完的資料。在正常傳輸時,該位置0。

視窗大小

指示傳送此tcp資料段的主機上用來儲存傳入資料段的視窗大小,也即傳送者當前還可以接受的最大位元組數,佔16位。tcp的「視窗大小」欄位與cdt一樣是使用可變大小的滑動視窗協議來進行流量控制。「視窗大小」欄位的值告訴接受本資料段的主機,從本資料段中所設定的「確認號」值算起,本端目前允許對端傳送的位元組數,是作為讓對方設定其傳送視窗大小的依據。假設本次所傳送的資料段的「確認號」字段值501,而「視窗大小」字段值是100,則從501算起,本端還可以接受100位元組(位元組號是501~600)。

檢驗和

中的檢驗和的計算方法,裡面有詳細的例子。

緊急指標

僅當前面的urg控制位置1時才有意義,它指出本資料段中為緊急資料的位元組數,佔16位。「緊急指標」字段指明了緊急資料的末尾在資料段中的位置。當所有緊急資料處理完後,tcp就會告訴應用程式恢復到正常操作。要注意一點,即使當前視窗大小為0,也是可以傳送緊急資料的,因為緊急資料無須快取。

可選項

「可選項」欄位時可選的,且長度可變,最長達40位元組。當沒有使用該字段時,tcp頭部的長度是20位元組。它可以包括視窗縮放選項(windows scale option, wsopt)、mss(最大資料段大小)、sack(選擇性確認)選項、時間戳(timestamp)選項等。

資料

這是有應用層的應用程序提交的資料,作為tcp資料段的「資料」(有效載荷)部分。

TCP資料報格式

tcp 提供一種面向連線的 全雙工的 可靠的位元組流服務。在乙個tcp 連線中,僅有兩方進行彼此通訊。廣播和多播不能用於tcp。tcp 的接收端必須丟棄重複的資料。tcp 對位元組流的內容不作任何解釋。對位元組流的解釋由tcp 連線雙方的應用層解釋。tcp 通過下列方式來提供可靠性 應用資料被分割成...

TCP協議資料格式

tcp協議間交換的資料單元稱為 tcp段 包括兩部分 首部和資料。標準首部長20位元組,帶有選項的首部會更長。1.源埠和目的埠 各佔2位元組,埠號加上ip位址,共同構成socket。互相通訊的程序使用一對socket,包括協議 源ip 源埠 目的ip 目的埠,這五個元素唯一確定乙個tcp連線。2.序...

TCP資料段頭的標誌位

tcp共有六位標誌位,分別是 urg ack psh rst syn和fin tcp標誌位 urg 此標誌表示tcp包的緊急指標域 後面馬上就要說到 有效,用來保證tcp連線不被中斷,並且督促中間層裝置要盡快處理這些資料 ack 此標誌表示應答域有效,就是說前面所說的tcp應答號將會包含在tcp資料...