ipv4和tcp報頭資料格式

2021-05-10 05:09:24 字數 4941 閱讀 2505

ipv4 (internel協議)頭部

iphdr->version:版本(4位),目前的協議版本號是4,因此ip有時也稱作ipv4。

iphdr->ihl:首部長度(4位):首部長度指的是ip層頭部佔32 bit字的數目(也就是ip層頭部包含多少個4位元組 — 32位),包括任何選項。由於它是乙個4位元字段, 因此首部最長為60個位元組。普通ip資料報(沒有任何選擇項)欄位的值是5 <==> 5 * 32 / 8 = 5 * 4 = 20 bytes。

iphdr->tos

:服務型別字段(8位): 服務型別(tos)字段包括乙個3 bit的優先權子欄位(現在已被忽略),4 bit的tos子字段和1 bit未用位但必須置0。4 bit的tos子欄位分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。4 bit中只能設定其中1 bit。如果所有4 bit均為0,那麼就意味著是一般服務。

iphdr->tot_len

總長度字段(16位)是指整個ip資料報的長度,以位元組為單位。利用首部長度欄位和總長度字段,就可以知道 ip資料報中資料內容的起始位置和長度。由於該字段長16位元,所以ip資料報最長可達65535位元組總長度欄位是ip首部中必要的內容,因為一些資料鏈路(如乙太網)需要填充一些資料以達到最小長度。儘管乙太網的最小幀長為46位元組,但是ip資料可能會更短。如果沒有總長度字段,那麼ip層就不知道46位元組中有多少是ip資料報的內容。

iphdr->id:標識字段(16位)唯一地標識主機傳送的每乙份資料報。通常每傳送乙份報文它的值就會加1。

iphdr->frag_off (16位)

:frag_off域的低13位 —分段偏移(fragment offset)域指明了該分段在當前資料報中的什麼位置上。除了乙個資料報的最後乙個分段以外,其他所有的分段(分片)必須是8位元組的倍數。這是8位元組是基本分段單位。由於該域有13個位,所以,每個資料報最多有8192個分段。因此,最大的資料報長度為65,536位元組,比 iphdr->tot_len域還要大1。

iphdr->frag_off的高3位:(1) 位元0是保留的,必須為0;(2) 位元1是「更多分片」(mf — more fragment)標誌。除了最後一片外,其他每個組成資料報的片都要把該位元置1。(3)位元2是「不分片」(df — don』t fragment)標誌, 如果將這一位元置1,ip將不對資料報進行分片。這時如果有需要進行分片的資料報到來,會丟棄此資料報並傳送乙個icmp差錯報文給起始端。

iphdr->ttl:ttl(time-to-live) — 8位,生存時間字段設定了資料報可以經過的最多路由器數。它指定了資料報的生存時間。ttl的初始值由源主機設定(通常為32或64),一旦經過乙個處理它的路由器,它的值就減去1。當該字段的值為0時,資料報就被丟棄,並傳送icmp報文通知源主機。ttl(time to live)域是乙個用於限制分組生存期的計數器。這裡的計數時間單位為秒,因此最大的生存期為255秒。在每一跳上該計數器必須被遞減,而且,當資料報在一台路由器上排隊時間較長時,該計數器必須被多倍遞減。在實踐中,它只是跳計數器,當它遞減到0的時候,分組被丟棄,路由器給源主機傳送乙個警告分組。此項特性可以避免資料報長時間地逗留在網路中,有時候當路由表被破壞之後,這種事情是有可能發生的。

iphdr->protocol:協議字段(8位): 根據它可以識別是哪個協議向ip傳送資料。當網路層組裝完成乙個完整的資料報之後,它需要知道該如何對它進行處理。協議(protocol)域指明了該將它交給哪個傳輸程序。tcp是一種可能,但是udp或者其他的協議也是可能的。

iphdr->check

:首部檢驗和字段(16位)是根據ip首部計算的檢驗和碼。它不對首部後面的資料進行計算。 icmp、igmp、udp和tcp在它們各自的首部中均含有同時覆蓋首部和資料檢驗和碼。為了計算乙份資料報的ip檢驗和,首先把檢驗和字段置為0。然後,對首部中每個16 bit進行二進位制反碼求和(整個首部看成是由一串16 bit的字組成),結果存在檢驗和字段中。當收到乙份ip資料報後,同樣對首部中每個16 bit進行二進位制反碼的求和。由於接收方在計算過程中包含了傳送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那麼接收方計算的結果應該為全1。如果結果不是全1(即檢驗和錯誤),那麼ip就丟棄收到的資料報。但是不生成差錯報文,由上層去發現丟失的資料報並進行重傳。

iphdr->saddr

:32位源ip位址

iphdr->daddr

:32位目的ip位址

網路位元組序

4個位元組的32 bit值以下面的次序傳輸:首先是0~7bit,其次8~15bit,然後16~23bit,最後是24~31 bit。這種傳輸次序稱作big endian位元組序。由於tcp/ip首部中所有的二進位制整數在網路中傳輸時都要求以這種次序,因此它又稱作網路位元組序。

tcp頭

:16位源埠號

tcphdr->dest:16位目的埠號

tcphdr->seq

:表示此次傳送的資料在整個報文段中的起始位元組數。序號是32 bit的無符號數。為了安全起見,它的初始值是乙個隨機生成的數,它到達32位最大值後,又從零開始。

tcphdr->ack_seq

指定的是對方所期望接收的位元組。

tcphdr->dofftcp頭長度,指明了在tcp頭部包含多少個32位的字(即單位為4位元組)。此資訊是必須的,因為options域的長度是可變的,所以整個tcp頭部的長度也是變化的。從技術上講,這個域實際上指明了資料部分在段內部的其起始位址(以32位字作為單位進行計量),因為這個數值正好是按字為單位的tcp頭部的長度,所以,二者的效果是等同的。

tcphdr->res1

:為保留位。

tcphdr->window

:是16位滑動視窗的大小,單位為位元組,起始於確認序列號字段指明的值,這個值是接收端正期望接收的位元組數,其最大值是63353位元組。tcp中的流量控制是通過乙個可變大小的滑動視窗來完成的。window域指定了從被確認的位元組算起可以接收的多少個位元組。window = 0也是合法的,這相當於說,到現在為止多達ack_seq-1個位元組已經接收到了,但是接收方現在狀態不佳,需要休息一下,等一會兒再繼續接收更多的資料,謝謝。以後,接收方可以通過傳送乙個同樣ack_seq但是window不為0的資料段,告訴傳送方繼續傳送資料段。

tcphdr->check

:檢驗和,覆蓋了整個的tcp報文段,這是乙個強制性的字段,一定是由傳送端計算和儲存,並由接收端進行驗證。

tcphdr->urg_ptr

:這個域被用來指示緊急資料在當前資料段中的位置,它是乙個相對於當前序列號的位元組偏移值。這個設施可以代替中斷資訊。

fin, syn, rst, psh, ack, urg為6個標誌位

這6個位域已經保留了超過四分之一個世紀的時間而仍然原封未動,這樣的事實正好也說明了tcp的設計者們考慮的是多麼的周到。它們的含義如下:

tcphdr->fin:被用於釋放乙個連線。它表示傳送方已經沒有資料要傳輸了。

tcphdr->syn

:同步序號,用來發起乙個連線。syn位被用於建立連線的過程。在連線請求中,syn=1; ack=0表示該資料段沒有使用捎帶的確認域。連線應答捎帶了乙個確認,所以有syn=1; ack=1。本質上,syn位被用來表示connection request和connection accepted,然而進一步用ack位來區分這兩種情況。

tcphdr->rst

:該為用於重置乙個已經混亂的連線,之所以會混亂,可能是由於主機崩潰,或者其他的原因。該位也可以被用來拒絕乙個無效的資料段,或者拒絕乙個連線請求。一般而言,如果你得到的資料段設定了rst位,那說明你這一端有了問題。

tcphdr->psh

:接收方在收到資料後應立即請求將資料遞交給應用程式,而不是將它緩衝起來直到整個緩衝區接收滿為止(這樣做的目的可能是為了效率的原因)。

tcphdr->ack

ack位被設定為1表示tcphdr->ack_seq是有效的,需要check ack_seq欄位是否為所需要。如果ack為0,則該資料段不包含確認資訊,所以,tcphdr->ack_seq域應該被忽略。

tcphdr->urg

:緊急指標有效。

tcphdr->ece

:用途暫時不明。

tcphdr->cwr

:用途暫時不明。

核心源**在函式tcp_transmit_skb()中建立tcp首部。

IPV4資料報頭部格式

摘自 深入理解計算機網路 王達著 機械工業出版社 來自 來自 傳送端的網路層在收到它的上一層 傳輸層發來的資料段時,需要通過網路層協議將其封裝成資料報,也就是加上網路層ip協議 在此僅以ip協議為例進行介紹 頭部。ip協議頭部主要是源和目的網路的ip位址,以便可以資料分段傳輸到目的網路中。然後資料報...

OSPF後記加IPV4報頭

ospf的限制lsa數量 abr 區域邊界路由器,能夠產生3類lsa的路由器 are0 和非are0之間 的路由器 asbr 自治系統邊界路由器,能夠產生5類或7類lsa的路由器 屬於 ospf和非ospf之間的路由,將非ospf引入它們之間的路由 特殊區域 1.區域劃分 2.特殊區域 3.lsa彙...

IPv4資料報結構

目錄 一 ip包頭 1 涵義詳解 1 ip大小範圍 2 第一行 32bit 3 第二行 32bit 4 第三行 5 第四行 6 第五行 7 第六行 二 tcp報頭 三 udp報頭 當options 0時,1行是4位元組 共4 5 20位元組 當ihl 1111 15 時,15 4 60位元組 所以i...