Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist IPHDR unter Linux?

Was ist IPHDR unter Linux?

WBOY
WBOYOriginal
2022-07-15 15:35:072666Durchsuche

Unter Linux ist iphdr die Beschreibungsstruktur des IP-Datenpakets; die Header-Datei, in der sich iphdr befindet, ist „/usr/src/linux/include/linux/ip.h“, und die Struktur besteht aus einem Datenstapel Strukturdaten: Jedes Datenelement, aus dem strukturierte Daten bestehen, wird als Strukturdatenelement bezeichnet, das die Größe und Interpretationsbedeutung eines Speicherintervalls beschreibt.

Was ist IPHDR unter Linux?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.

Was ist iphdr unter Linux?

iphdr ist ein Computerbegriff. Es handelt sich um die Beschreibungsstruktur von IP-Datenpaketen unter Linux.

Die Header-Datei ist /usr/src/linux/include/linux/ip.h und die Struktur ist wie folgt:

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地址
};

Was ist IPHDR unter Linux?

Erweiterte Kenntnisse

iphdr->version

Version (4 Ziffern), derzeit Die Versionsnummer des Protokolls ist 4, daher wird IP manchmal als IPv4 bezeichnet.

iphdr->ihl

Header-Länge (4 Bits): Die Header-Länge bezieht sich auf die Anzahl der 32-Bit-Wörter im IP-Layer-Header (d. h. wie viele 4 Bytes – 32 Bits in der IP-Layer enthalten sind). Header), einschließlich beliebiger Optionen. Da es sich um ein 4-Bit-Feld handelt, beträgt die maximale Länge des Headers 60 Byte. Der Wert des normalen IP-Datagrammfelds (ohne Optionen) beträgt 5 5 * 32 / 8 = 5 * 4 = 20 Bytes.

iphdr->tos

Feld „Typ des Dienstes“ (8 Bit): Das Feld „Typ des Dienstes“ (TOS) enthält ein 3-Bit-Prioritätsunterfeld (jetzt ignoriert), ein 4-Bit-TOS-Unterfeld und 1 Bit, das nicht verwendet wird Bit, muss aber auf 0 gesetzt werden. Das 4-Bit-TOS-Unterfeld steht für: minimale Verzögerung, maximaler Durchsatz, maximale Zuverlässigkeit und minimale Kosten. Von den 4 Bits kann nur 1 Bit gesetzt werden. Wenn alle 4 Bits 0 sind, bedeutet dies, dass der Dienst normal ist.

iphdr->tot_len

Das Feld „Gesamtlänge“ (16 Bit) bezieht sich auf die Länge des gesamten IP-Datagramms in Bytes. Mithilfe des Header-Längenfelds und des Gesamtlängenfelds können Sie die Startposition und Länge des Dateninhalts im IP-Datagramm ermitteln. Da dieses Feld 16 Bit lang ist, kann das IP-Datagramm bis zu 65535 Byte lang sein. Das Feld „Gesamtlänge“ ist ein notwendiger Inhalt im IP-Header, da einige Datenverbindungen (z. B. Ethernet) einige Daten ausfüllen müssen, um das Minimum zu erreichen Länge. Obwohl die minimale Framelänge von Ethernet 46 Byte beträgt, können IP-Daten kürzer sein. Wenn kein Gesamtlängenfeld vorhanden ist, weiß die IP-Schicht nicht, wie viel der 46 Bytes der Inhalt des IP-Datagramms ist.

iphdr->id

Das Identifikationsfeld (16 Bit) identifiziert jedes vom Host gesendete Datagramm eindeutig. Normalerweise wird sein Wert bei jedem Senden einer Nachricht um 1 erhöht.

Empfohlenes Lernen: Linux-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist IPHDR unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn