Linuxのipdrとは何ですか

WBOY
リリース: 2022-07-15 15:35:07
オリジナル
2663 人が閲覧しました

Linux では、iphdr は ip データ パケットの記述構造であり、iphdr が配置されるヘッダー ファイルは "/usr/src/linux/include/linux/ip.h" であり、この構造は次のように構成されます。データのバッチの結合された構造化データ構造化データを構成する各データは、構造化データのメンバーと呼ばれ、メモリ間隔のサイズと解釈の意味を記述します。

Linuxのipdrとは何ですか

#このチュートリアルの動作環境: 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地址
};
ログイン後にコピー

Linuxのipdrとは何ですか

拡張知識

##iphdr->version

バージョン (4 桁)、現在のプロトコルのバージョン番号は 4 であるため、IP は IPv4 と呼ばれることもあります。

iphdr->ihl

ヘッダー長 (4 ビット): ヘッダー長は、IP 層ヘッダー内の 32 ビット ワードの数を指します (つまり、4 ビットがいくつあるかを示します)。 IP 層ヘッダーには、オプションを含むバイト (32 ビット) が含まれます。ヘッダーは 4 ビットのフィールドであるため、最大 60 バイトの長さになります。通常の IP データグラム (オプションなし) フィールドの値は、5 5 * 32 / 8 = 5 * 4 = 20 バイトです。

iphdr->tos

サービス タイプ フィールド (8 ビット): サービス タイプ (TOS) フィールドには、3 ビットの優先サブフィールド (現在は無視されています)、4 ビットの TOS サブフィールド、および1 ビットは未使用ですが、0 に設定する必要があります。4 ビット TOS サブフィールドは、それぞれ最小遅延、最大スループット、最大信頼性、最小コストを表します。 4ビットのうち1ビットのみ設定可能です。 4 ビットすべてが 0 の場合は、通常のサービスを意味します。

iphdr->tot_len

合計長フィールド (16 ビット) は、IP データグラム全体の長さをバイト単位で表します。ヘッダ長フィールドと全長フィールドを使用して、IP データグラム内のデータ内容の開始位置と長さを知ることができます。このフィールドの長さは 16 ビットであるため、IP データグラムの長さは最大 65535 バイトになります。一部のデータ リンク (イーサネットなど) では、最小長に達するために一部のデータを埋める必要があるため、合計長フィールドは IP ヘッダーに必要な内容です。長さ。イーサネットの最小フレーム長は 46 バイトですが、IP データの場合はそれより短い場合があります。全長フィールドがない場合、IP 層は 46 バイトのうちどれだけが IP データグラムの内容であるかを知りません。

iphdr->id

識別フィールド (16 ビット) は、ホストによって送信された各データグラムを一意に識別します。通常、その値はメッセージが送信されるたびに 1 ずつ増加します。

推奨学習:

Linux ビデオ チュートリアル

以上がLinuxのipdrとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート