ip報文欄位
- 4位版本號
- 4位首部長度
- 8位服務型別
- 16位總長度
- 16位標識, 3位標志, 13位片偏移
- 8位生存時間TTL
- 8位協議號
- 16位首部檢驗和
- 32位源IP地址和32位目的IP地址
- 后面就是一個完整的TCP資料報或者UDP資料報
4位版本號
代表是ipv4, 還是ipv6協議
4位首部長度
代表ip的報文頭部長度, 變長的
8位服務型別
就是代表這個ip更注重于什么要求

16位總長度
ip報文的總長度, 最大為2的16次方為64K, 和UDP一樣最大長度為64K
但是他們兩個有個區別是, UDP不支持自動的拆包和組包
想要實作需要用戶自己在應用層實作. 但是ip協議, 支持自動的拆包和組包
下面要介紹的三個欄位則是用來輔助拆包和組包的
16位標識, 3位標志, 13位片偏移
這三個欄位是用來實作拆包和組包的, 當TCP報文長度超出范圍時, 就會進行拆包和組包
下面就來說明一下, 比如我現在有a, b, c, d 四個ip包, 他們是由同一個TCP報文拆解下來的.
16位標識 : 代表這幾個包是屬于同一個資料報的嗎, 如果16位標識都相同, 那么就代表屬于同一個報文中的.
13位位偏移 : 按照偏移量的大小, 來確認先后的順序. a的偏移量小于b的偏移量, b小于c, c小于d . 那么先后的順序就是 a, b, c, d 防止"后發先至"
3位標志 : 這個的作用只有一個確認是否到達結尾, 就相當于鏈表的NULL
比如a:0 > b:0 > c :0 > d : 1
d為1, 代表此處的組裝就可以結束了, 因為他是最后一個需要組裝的了
8位生存時間TTL
表示一個資料報在網路上能傳輸多久(代表可用經過幾個路由器轉發)
初始值一般是64(可配置)
每次進過一個路由器轉發, 他的值就會減1如果減到了0, 這個包就認為不可達, 將會被丟棄
8位協議號
8位協議號, 代表你傳輸層應用的是什么協議
如果是6那么就是TCP, 如果是17那么就是UDP
16位首部檢驗和
16位首部檢驗和的作用是用來檢測ip報文頭部的完整性
32位源IP地址和32位目的IP地址
ip地址其實是一個32位的整形二進制數字, 平常我們寫的192.168.0.1, 這種叫做點分十進制, 是為了我們人理解起來方便, 就將每8位二進制, 化成十進制
后面就是一個完整的TCP資料報或者UDP資料報
值得一提的是TCP的總長度在TCP報文的頭部并沒有提及, 需要配合著IP報文才能算出.
TCP的報文資料長度 = (IP資料報總長度 - IP首部長度) - TCP的報頭長度
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/379448.html
標籤:其他
上一篇:靜態路由綜合實驗
下一篇:【TCP/IP】期末復習DAY8
