IP 数据报首部分析
來來來, 爺們. 不是一直說紙上得來終覺淺么. 今咱就抓個數據報具體看一看真實網絡中的 IP 報首部.
操作方法很簡單, 使用wireshark進行抓包. 抓包后隨便找個包看一下就行, 畢竟所有通信的包都需要經過網絡層.(同時,?wireshark會對協議的相關信息給出標識, 更方便我們查看)
其中數據鏈路層的首部信息在整個數據的最前面, 其后跟著的是網絡層, 傳輸層, 最后剩下的是傳輸的數據內容. 這個很好理解, 數據從上到下, 每過一層, 都會添加對應的頭部信息, 先過傳輸層就先加上咯.
咱們今兒個主要就看看 IP 協議的首部內容. 走著...
要查看指定字段在其中的位置, 左鍵點擊一下, 數據內容就會高亮了. 好貼心哦.
簡單介紹一下各個字段的意思:
- 協議版本號(4b): 標識當前 IP 協議的版本號.
- 首部長度(4b): 標識首部長度. 單位是/4B. 也就是首部最長15*4=60B
- 區分服務(8b):
- 總長度(16b): 首部+數據的長度. 因為 TCP 的首部是在傳輸層加上的, 所以傳輸層的首部也會被認為是數據的一部分. IP 層可傳輸的數據長度為 65535-60=65475B
- 標識(16b): 當數據包被分組時, 用于標識不同的分組. 方便接收方對數據包進行重組
- 標志(3b): 用于一些特殊標志
- 片偏移量(13b): 當數據包超出長度后, 會分組傳輸. 此字段標識數據的偏移量. 單位是/8B
- 生存時間(8b): 數據包在網絡中的壽命, 經過 n 跳之后就不再轉發了
- 協議(8b): 標識當前包的數據部分協議
- 校驗和(8b): 用于校驗在網絡傳輸中是否失真. 僅校驗首部
- 源地址(32b): 數據包的源IP地址
- 目標地址(32b): 數據包的目標 IP 地址
- 可選內容: 一些其他的可選字段
對于網絡層協議來說, 每增加一個字段, 都會影響整體的傳輸速度. 所以當初設計協議的時候, 定是經過了一再斟酌, 最終才保留了這些不可獲取的字段.
協議版本號
標識當前協議的版本, 目前主要用來區分 IPV4和 IPV6.
若此字段缺失, 則無法區分不同版本 IP 協議
首部長度
因為協議的首部存在可選字段, 所以需要添加字段用來指明首部的長度. 以4B 為一個單位應該也是經過多次探討的了. 當首部為20b 時, 則沒有使用可選字段.
若此字段缺失, 無法正確識別協議首部結尾.
區分服務
標識此數據包在傳輸過程中的一些要求服務.
- 1-3位: 標識數據包重要性. 在網絡分組傳輸種, 較為重要的包會優先傳輸. 如一個語音通話的數據包, 和一個文件下載的數據包, 明顯前者更為優先.
- 4位: 0(正常延遲), 1(想要較低的延遲)
- 5位: 1(想要高流量)
- 6位: 1(要高可靠性)
- 7位: 也是擁塞控制相關的.
- 8位: 1(網絡擁塞預警)
總長度
用于對識別當前數據報的結尾.
標識
因為數據在網絡層會被分片, 所以增加標識分片所在分組.
若此字段缺失, 則無法對數據包進行正確重組.
標志
- 第一位: 保留
- 第二位: 0(可以分段), 1(不能分段)
- 第三位: 0(當前是最后一個分段), 1(后面還有更多的分段)
偏移量
當接收方接收到多個數據分段時, 進行重組的依據. 該字段占13b, 單位是8B. 也就是說 IP 協議傳輸數據超過: (2^14-1)*8=131064B≈123kb. 不過一個網絡層的包也不會這么大.
而網絡層對數據包進行分段是依據 MTU 計算的. MTU 則是其自動協商, 取鏈路最小值.
若此字段缺失, 則接收方無法對數據包進行正確重組.
生存時間
就是你在使用ping命令時, 現實的ttl. 此值每經過一次轉發, 就會減一. 當減到0的時候, 該數據包就被丟棄了.
若此字段缺失, 當出現在網絡中不存在的目標, 導致數據包在網絡中循環傳輸時永遠都不會消失. 而這樣的數據一多, 則整個網絡都會變得擁堵.
協議
標明數據部分的協議, 用于正確識別數據包上層協議, 并將數據正確轉交給指定進程.
搜一下: IP 協議號, 隨便打開一個可以看到所有的協議.
若此字段缺失, 則網絡層無法將數據正確上交.
校驗和
接收方校驗在物理傳輸過程中, 協議首部是否存在損壞. 數據部分不做檢查.
若此字段缺失, 則接收方無法缺失接收的數據與發送的數據是否一致.
源地址
用于標識數據包的源地址.
目標地址
用于標識數據包的目標地址.
可選內容
方便后面對協議的擴充. 現在已有的如:
- 記錄路徑: 每個路由器都記下其IP 地址
- 記錄時間戳: 每個路由都記下其IP 與時間
- 等等
感覺可選內容在使用中很少用到, 我抓了各種包, 暫時還沒有碰到過有使用的.
協議在設計的時候真的是省吃儉用啊, 平常開發時用到的數據都是以字節為單位的, 人家網絡層協議是以位為單位使用的.
后面再看TCP首部的時候, 也可以如此查看其在傳輸過程種的真正模樣.
爺們, 希望你看到這里了...
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的IP 数据报首部分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker建多个mysql_《容器化系
- 下一篇: maven 对于java的要求_如何在M