什么是 IP 協議
IP 作為整個 TCP/IP 協議族中至關重要的協議,主要負責將數據包發送給最終的目標計算機,為上層協議提供無狀態、無連接、不可靠的服務。
IP 協議頭部
通過 IP 進行通信時,需要在數據的前面加入 IP 首部信息。IP 首部包含著用于 IP 協議進行發包控制時所有的必要信息。
IPv4協議頭
版本
由 4 比特構成,用來標識 IP 首部的版本號。IPv4 版本號就是 4。關于 IP 所有版本如下圖所示:
首部長度
表示 IP 首部的大小,單位是 4字節(32bit)。IP 頭部的長度也就是 * 4 的字節數. 當沒有可選項時ip數據包格式圖, 是 5,也就是20字節。
區分服務(TOS)
用來表示服務的質量。可劃分為 DSCP 和 ECN,DSCP 用來進行質量控制,ECN 用來報告網絡擁堵情況。
總長度
表示的是 IP 首部與數據部分合起來的總字節數,最大長度是 65535 字節。
標識
用于分片重組。同一個分片的標識值是相同的,不同分片的標識值不同。每發送一個 IP 包,它的值也會逐漸遞增。
標志
表示包被分片的相關信息。每一位的具體含義如下圖。
片偏移
用來標識被分片的每一個分段相對于原始數據的位置。
生存時間(TTL)
這個不是一個時間的概念,實際上是指可以中轉多少個路由器的意思,每經過一個路由器,TTL會減少 1,直到變成0 則丟棄該包。
協議
表示 IP 首部的下一個首部屬于哪個協議。
首部校驗和
該字段只會校驗數據包的首部,不會去校驗數據部分。這個字段主要目的是用來確保 IP 數據包不被破壞。
源地址
表示發送端的 IP 地址。
目標地址
表示接收端的 IP 地址。
可選字段
長度可變,通常只在進行實驗或診斷時使用。
填充
在有可選字段的情況下,首部長度可能不是 32 比特的整數倍。通過向字段填充 0,調整為 32 比特的整數倍。
數據
用來存入實際要傳輸的數據ip數據包格式圖,同時將 IP 上層協議的首部也作為數據進行處理。
IPv6 協議首部
IPv6 相比 IPv4 已經發生了巨大變化。IPv6 中為了減輕路由器的負擔,省略了首部校驗和字段。提高了包轉發的效率。
IPv6協議首部
版本
與 IPv4 是一樣的,其版本號是 6。
通信量類
相當于 IPv4 的 TOS 字段。
流標號
由 20 比特構成,準備用于服務質量的控制。在進行服務質量控制時,將流標號設置為一個隨機數,然后利用一種可以設置流的協議在路由器上進行服務質量設置。
有效載荷長度
有效載荷是指包的數據部分。這個是不包含首部的,只表示數據部分的長度。
下一個首部
相當于 IPv4 的協議字段。通常表示 IP 的上一層協議是 TCP 或 UDP。
跳數限制
與 IPv4 中的 TTL 相同,表示可通過路由器的個數。數據每經過一次路由器就減1,減到 0 則丟棄數據。
源地址
表示發送端的 IP 地址。
目標地址
表示接收端的 IP 地址。