首頁  >  文章  >  ip資料報的格式是什麼

ip資料報的格式是什麼

醉折花枝作酒筹
醉折花枝作酒筹原創
2021-06-17 15:55:0019940瀏覽

TCP/IP協定定義了一個在網際網路上傳輸的包,稱為IP資料報,這是由首部和資料兩部分組成。首部的前一部分是固定長度,共20字節,是所有IP資料封包必須具有的;在首部的固定部分的後面是一些可選字段,其長度是可變的。

ip資料報的格式是什麼

本教學操作環境:windows7系統、Dell G3電腦。

TCP/IP協定定義了一個在因特網上傳輸的包,稱為IP數據報(IP Datagram).這是一個與硬體無關的虛擬包,由首部和數據兩部分組成.首部的前一部分是固定長度,共20 位元組,是所有IP資料封包必須具有的.在首部的固定部分的後面是一些可選字段,其長度是可變的.

IP協定提供不可靠無連線的資料封包傳輸服務,IP層提供的服務是透過IP層對資料封包的封裝與拆封來實現的。 IP資料封包的格式分為標頭區和資料區兩大部分,其中標頭區是為了正確傳輸高層資料而加的各種控制訊息,資料區包括高層協定需要傳輸的資料。

IP資料報的格式如下:

ip資料報的格式是什麼

注意,上圖表示的數據,最高位在左邊,記為0位;最低位在右邊,記為31位。在網路中傳輸資料時,先傳輸0~7位,其次是8~15位,然後傳輸16~23位,最後傳輸24~31位。由於TCP/IP協定頭部中所有的二進制數在網路中傳輸時都要求以這種順序進行,因此稱它為網路位元組順序。在實際程式設計中,以其他形式儲存的二進制數必須在傳輸資料前使用網路程式API對應的函數把頭部轉換成網路位元組順序。

IP資料封包各欄位功能如下:

1)版本號碼:佔用4位元二進位數,表示該IP資料封包使用的IP協定版本。目前Internet中使用的主要是TCP/IP協定族中版本號為4的IP協定。

2)頭長度:佔用4位二進位位,此域指出整個標頭的長度(包括選項),該長度是以32位二進制數為一個計數單位的,接收端透過此域可以計算出報頭在何處結束及從何處開始讀取資料。普通IP資料封包(沒有任何選項)該欄位的值是5(即20個位元組的長度)。

3)服務類型(TOS、type of service):佔用8位元二進位位,用於規定本資料報的處理方式。服務類型欄位的8位元分成了5個子域:

ip資料報的格式是什麼

(1)—優先權(0-7)數越大,表示該資料封包優先權越高。網路中路由器可以使用優先權進行壅塞控制,如網路發生壅塞時可以根據資料封包的優先權來決定資料封包的取捨。

(2)—短延遲位元D(Delay):此位置1時,資料封包請求以短延遲通道傳輸,0表示正常延遲。

(3)—高吞吐量位元T(Throughput):該位置1時,資料封包請求以高吞吐量通道傳輸,0表示普通。

(4)—高可靠位元R(Reliability):此位置1時,資料封包請求以高可靠性頻道傳輸,0表示普通。

(5)—保留位元。

目前在Internet中使用的TCP/IP協定大多數情況下網路並未對TOS進行處理,但在實際編程時,有專門的函數來設定該欄位的各域。在一些重要的網際應用協定中都設定了建議使用的TOS值:

ip資料報的格式是什麼

從上表可以看出,對於與使用者直接互動的應用,一般使用短延時;對於有大量資料需要傳輸的應用,一般選用高吞吐量;對於資料封包要傳輸控制資訊的應用,一般選用高可靠性。在資料報的生存期間內不支援TOS的,TOS欄位就設定為0x00。

4)總長度:佔用16位元二進位位,總長度欄位是指整個IP資料封包的長度(標頭區 資料區),以位元組為單位。利用頭部長度欄位和總長度欄位就可以計算出IP資料封包中資料內容的起始位置和長度。由於此欄位長度為16位元二進制數,因此理論上IP資料封包最長可達65536個位元組(事實上受實體網路的限制,要比這個數值小很多)。

5)生存時間(TTL,time to live):佔用8位元二進位位,它指定了資料封包可以在網路中傳輸的最長時間。實際應用中把生存時間欄位設定成了資料封包可以經過的最大路由器數。 TTL的初始值由來源主機設定(通常為32、64、128或256),一旦經過一個處理它的路由器,它的值就減1。當此欄位為0時,資料封包就會被丟棄,並傳送ICMP封包通知來源主機,因此可以防止進入一個循環迴路時,資料封包會無止盡地傳送下去。

6)上層協定標識:佔用8位二進位位,IP協定可以承載各種上層協議,目標端根據協議標識就可以把收到的IP資料報送到TCP或UDP等處理此報文的上層協議了。

常用網路協定編號:

ip資料報的格式是什麼

7)校驗和:佔用16位元二進位數,用於協定頭資料有效性的校驗,可以保證IP報頭區在傳輸時的正確性和完整性。頭部檢定和欄位是根據IP協定頭計算的檢定和,它不會對頭部後面的資料進行計算。

原理:發送端先將檢定和欄位置0,然後對頭部中每16位元二進位數進行反碼求和的運算,並將結果存在校驗和欄位中。 由於接收方在計算過程中包含了發送方放在頭部的校驗和,因此,如果頭部在傳輸過程中沒有發生任何差錯,那麼接收方計算的結果應該是全1。

8)來源位址:佔用32位元二進位數,表示發送端IP位址。

9)目的位址:佔用32位元二進位數,表述目的端IP位址。

======================IP資料報分片與重組================= =======

最大傳輸單元:

IP資料封包在網路上傳輸時,可能要經過多個實體網路才能從來源端傳送到目的端。不同的網路由於連結層和媒體的物理特性不同,因此在進行資料傳輸時,對資料幀的最大長度都有一個限制,這個限制值即最大傳輸單元MTU(Maximum Transmission Unit).

同一個網路上的兩台主機之間通訊時,該網路的MTU值是確定的,不存在分片問題。分片問題一般只存在於不同MTU值的網路中。由於現在互聯網主要使用路由器進行網路連接,因此分片工作通常由路由器負責。

當兩台主機之間的通訊要通過多個具有不同MTU值的網路時,MTU的瓶頸是通訊路徑上最小的MTU值,它被稱為路徑MTU。由於路由選擇不一定是對稱的(從A到B的路由可能與從B到A的路由不同),因此,路徑MTU在兩個方向上不一定是一致的,下表是幾種常用網路的MTU值:

ip資料報的格式是什麼

分片:

把一個資料封包為了適合網路傳輸而分成多個資料封包的過程稱為分片,被分片後的各個IP資料封包可能會經過不同的路徑到達目標主機。

一個IP資料封包在傳輸過程中可能被分片,也可能不被分片。如果被分片,分片後的IP資料封包和原來沒有分片的IP資料封包結構是相同的,也就是也由IP頭部和IP資料區兩個部分組成:

ip資料報的格式是什麼

#分片後的IP資料報,資料區是原IP資料報資料區的連續部分,頭部是原IP資料報頭部的複製,但與原來未分片的IP資料報頭部有兩點主要不同:標誌和片偏移:

(1)—標誌:在IP資料封包頭部有一個叫「標誌」的字段,用3位二進制數表示:

ip資料報的格式是什麼

不分片DF(Do not Fragment)標誌如果被置1,則資料封包在傳輸過程中不能被分片,如網路連通性測試命令ping就可以用-F參數設定為在資料傳輸時不分片,但這樣當資料無法通過MTU較小的網路時,將產生資料不可達的錯誤。

片未完MF(More Fragment)標誌如果被置1,表示該資料報不是分片後的最後一個資料報,最後一個資料報的該位元被置0。

(2)—片偏移:IP資料封包被分片後,各片資料區在原來IP資料區的位置以13位元片偏移表示。上圖中分片1的偏移為0;分片2的偏移為600;分片3的偏移為1200實際在IP位址中,由於偏移是以8個位元組為單位進行計算的,因而在IP資料封包中分片1的偏移是0;分片2的偏移是75;分片3的偏移是150。

重組:

當分了片的IP資料報到達最終目標主機時,目標主機對各分片進行組裝,恢復成來源主機發送時的IP資料報,這個過程叫做IP資料封包的重組。

在IP資料封包頭部中,識別以16位元二進位數表示,它唯一地識別主機發送的每一份資料封包。當一個資料報被分片時,每個分片僅把資料報「標識」欄位的值原樣複製一份,所以一個資料報的所有分片具有相同的標識。

目標端主機重組資料封包的原理是:

(1)—根據「標識」欄位可以確定收到的分片屬於原來哪個IP資料封包;

(2)—根據「標誌」欄位的「片未完MF」子欄位可以確定分片是不是最後一個分片;

(3)—根據「偏移量」欄位可以確定分片在原數據報中的位置。

更多電腦相關知識,請造訪常見問題欄位!

以上是ip資料報的格式是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn