您好,登錄后才能下訂單哦!
本篇內容介紹了“linux中iphdr指的是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在linux中,iphdr是ip數據包的描述結構體;iphdr所在的頭文件為“/usr/src/linux/include/linux/ip.h”,結構體是由一批數據組合而成的結構型數據,組成結構型數據的每個數據稱為結構型數據的成員,其描述了一塊內存區間的大小及解釋意義。
本教程操作環境:linux7.3系統、Dell G3電腦。
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指的是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。