共計 1519 個字符,預計需要花費 4 分鐘才能閱讀完成。
本篇內容介紹了“linux 中 iphdr 指的是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在 linux 中,iphdr 是 ip 數據包的描述結構體;iphdr 所在的頭文件為“/usr/src/linux/include/linux/ip.h”,結構體是由一批數據組合而成的結構型數據,組成結構型數據的每個數據稱為結構型數據的成員,其描述了一塊內存區間的大小及解釋意義。
本教程操作環境:linux7.3 系統、Dell G3 電腦。
linux 中 iphdr 是什么
iphdr,是一種計算機用語。是 Linux 下 IP 數據包的描述結構體。
所在頭文件為 /usr/src/linux/include/linux/ip.h,結構如下:
struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD) // 小端模式下
__u8 ihl:4,// 首部長度(4 位)
version:4;//ip 協議版本 IPv4
#elif defined (__BIG_ENDIAN_BITFIELD) // 大端模式下
__u8 version:4,
ihl:4;
#else
#error Please fix asm/byteorder.h
#endif
__u8 tos;// 服務類型字段(8 位)
__be16 tot_len;//16 位 IP 數據報總長度
__be16 id;//16 位標識字段(唯一表示主機發送的每一分數據報) __be16 frag_off;//(3 位分段標志 +13 位分段偏移數)
__u8 ttl;// 8 位數據報生存時間
__u8 protocol;// 協議字段(8 位) __be16 check;//16 位首部校驗
__be32 saddr; // 源 IP 地址
__be32 daddr; // 目的 IP 地址
};
擴展知識
iphdr- version
版本(4 位),目前的協議版本號是 4, 因此 IP 有時也稱作 IPv4。
iphdr- ihl
首部長度 (4 位): 首部長度指的是 IP 層頭部占 32 bit 字的數目(也就是 IP 層頭部包含多少個 4 字節 – 32 位), 包括任何選項。由于它是一個 4 比特字段, 因此首部最長為 60 個字節。普通 IP 數據報(沒有任何選擇項) 字段的值是 5 == 5 * 32 / 8 = 5 * 4 = 20 Bytes。
iphdr- tos
服務類型字段 (8 位): 服務類型(TOS) 字段包括一個 3 bit 的優先權子字段(現在已被忽略),4 bit 的 TOS 子字段和 1 bit 未用位但必須置 0。4 bit 的 TOS 子字段分別代表: 最小時延、最大吞吐量、最高可靠性和最小費用。4 bit 中只能設置其中 1 bit。如果所有 4 bit 均為 0, 那么就意味著是一般服務。
iphdr- tot_len
總長度字段 (16 位) 是指整個 IP 數據報的長度, 以字節為單位。利用首部長度字段和總長度字段, 就可以知道 IP 數據報中數據內容的起始位置和長度。由于該字段長 16 比特, 所以 IP 數據報最長可達 65535 字節,總長度字段是 IP 首部中必要的內容, 因為一些數據鏈路 (如以太網) 需要填充一些數據以達到最小長度。盡管以太網的最小幀長為 46 字節, 但是 IP 數據可能會更短。如果沒有總長度字段, 那么 IP 層就不知道 46 字節中有多少是 IP 數據報的內容。
iphdr- id
標識字段 (16 位) 唯一地標識主機發送的每一份數據報。通常每發送一份報文它的值就會加 1。
“linux 中 iphdr 指的是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!