您好,登錄后才能下訂單哦!
本篇內容主要講解“ip數據報的格式有什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“ip數據報的格式有什么”吧!
TCP/IP協議定義了一個在因特網上傳輸的包,稱為IP數據報,這是由首部和數據兩部分組成。首部的前一部分是固定長度,共20字節,是所有IP數據報必須具有的;在首部的固定部分的后面是一些可選字段,其長度是可變的。
本教程操作環境:windows7系統、Dell G3電腦。
TCP/IP協議定義了一個在因特網上傳輸的包,稱為IP數據報(IP Datagram).這是一個與硬件無關的虛擬包,由首部和數據兩部分組成.首部的前一部分是固定長度,共 20 字節,是所有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個子域:
(1)—優先權(0-7)數越大,表示該數據報優先權越高。網絡中路由器可以使用優先權進行擁塞控制,如當網絡發生擁塞時可以根據數據報的優先權來決定數據報的取舍。
(2)—短延遲位D(Delay):該位置1時,數據報請求以短延遲信道傳輸,0表示正常延時。
(3)—高吞吐量位T(Throughput):該位置1時,數據報請求以高吞吐量信道傳輸,0表示普通。
(4)—高可靠位R(Reliability):該位置1時,數據報請求以高可靠性信道傳輸,0表示普通。
(5)—保留位。
目前在Internet中使用的TCP/IP協議大多數情況下網絡并未對TOS進行處理,但在實際編程時,有專門的函數來設置該字段的各域。一些重要的網際應用協議中都設置了建議使用的TOS值:
從上表可以看出,對于與用戶直接交互的應用,一般使用短延時;對于有大量數據需要進行傳輸的應用,一般選用高吞吐量;對于數據報要傳輸控制信息的應用,一般選用高可靠性。在數據報的生存期內不支持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等處理此報文的上層協議了。
常用網際協議編號:
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數據報頭部有兩點主要不同:標志和片偏移:
(1)—標志:在IP數據報頭部有一個叫“標志”的字段,用3位二進制數表示:
不分片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數據報的格式有什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。