Maison  >  Article  >  Opération et maintenance  >  Qu'est-ce que l'iphdr sous Linux

Qu'est-ce que l'iphdr sous Linux

WBOY
WBOYoriginal
2022-07-15 15:35:072658parcourir

Sous Linux, iphdr est la structure de description du paquet de données ip ; le fichier d'en-tête où se trouve iphdr est "/usr/src/linux/include/linux/ip.h", et la structure est composée d'un lot de données. Données structurelles, chaque élément de données qui constitue des données structurées est appelé un membre de données structurelles, qui décrit la taille et la signification d'interprétation d'un intervalle de mémoire.

Qu'est-ce que l'iphdr sous Linux

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Qu'est-ce que iphdr sous Linux ?

iphdr est un terme informatique. C'est la structure de description du paquet de données IP sous Linux.

Le fichier d'en-tête est /usr/src/linux/include/linux/ip.h, et la structure est la suivante :

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

Quest-ce que liphdr sous Linux

Connaissances étendues

iphdr->version

Version (4 chiffres), actuellement le numéro de version du protocole est 4, donc IP est parfois appelé IPv4.

iphdr->ihl

Longueur de l'en-tête (4 bits) : La longueur de l'en-tête fait référence au nombre de mots de 32 bits dans l'en-tête de la couche IP (c'est-à-dire combien de 4 octets - 32 bits sont inclus dans la couche IP en-tête), y compris les options Any. Puisqu'il s'agit d'un champ de 4 bits, l'en-tête peut avoir une longueur maximale de 60 octets. La valeur du champ datagramme IP ordinaire (sans aucune option) est 5 5 * 32 / 8 = 5 * 4 = 20 octets.

iphdr->tos

Champ Type de service (8 bits) : Le champ type de service (TOS) comprend un sous-champ de priorité de 3 bits (maintenant ignoré), un sous-champ TOS de 4 bits et 1 bit inutilisé bit mais doit être mis à 0. Le sous-champ TOS de 4 bits représente : le délai minimum, le débit maximum, la fiabilité maximale et le coût minimum. Seul 1 bit parmi les 4 bits peut être défini. Si les 4 bits sont à 0, cela signifie un service normal.

iphdr->tot_len

Le champ de longueur totale (16 bits) fait référence à la longueur de l'intégralité du datagramme IP, en octets. À l'aide du champ de longueur d'en-tête et du champ de longueur totale, vous pouvez connaître la position de départ et la longueur du contenu des données dans le datagramme IP. Étant donné que ce champ a une longueur de 16 bits, le datagramme IP peut atteindre 65 535 octets. Le champ de longueur totale est un contenu nécessaire dans l'en-tête IP car certaines liaisons de données (telles qu'Ethernet) doivent remplir certaines données pour atteindre le minimum. longueur. Bien que la longueur minimale de la trame Ethernet soit de 46 octets, les données IP peuvent être plus courtes. S'il n'y a pas de champ de longueur totale, alors la couche IP ne sait pas quelle part des 46 octets représente le contenu du datagramme IP.

iphdr->id

Le champ d'identification (16 bits) identifie de manière unique chaque datagramme envoyé par l'hôte. Habituellement, sa valeur est incrémentée de 1 à chaque fois qu'un message est envoyé.

Apprentissage recommandé : Tutoriel vidéo Linux

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn