私の質問には2つの部分があります。
イーサネットフレームの「データ」部分は46〜1500バイトになる可能性があることを私は知っています。 20バイトのIPヘッダー+ TCP 20バイトのヘッダーを考慮すると、TCPセグメントの最小「データ」サイズは(46-20-20) = 6 bytes
である必要があります。 8バイトのUDPヘッダーを考慮すると、UDPセグメントの最小「データ」サイズは(46-8-20) = 18 bytes
である必要があります。したがって、アプリケーションデータサイズの下限が6バイトや18バイトなどの高い値になる理由を誰かが説明できます。 1バイトのような小さな値ではありませんか?何かが足りないと思います。
私はいくつかの説明を見つけました[1][2] IPパケットの最小サイズは64バイトである必要があります。上記のリンクの説明は正しいと思います。その場合、イーサネットフレームの最小「データ」サイズが(64-20-20) = 24 bytes
ではないのはなぜですか?
誰かがこれをより明確に説明できますか?
イーサネットの最小フレームサイズは64バイトで指定されています(参考文献にも記載されています)。
DMAC + SMAC + EtherType + Payload + CRC
6 + 6 + 2 + 46 + 4 = 64
レイヤー4(TCPまたはUDP)では、「長さ」はレイヤー4ヘッダーをカバーし、IPヘッダーで追跡されます。
これは、UDPの場合、予想される最小値が8バイト(ヘッダーの場合)であることを意味します。また、TCPの場合は20バイトです(最小TCPヘッダー))。
あなたが欠けているように見える部分が始まります今。
イーサネットデータの長さは46バイト以上である必要がありますが、IPの長さは46-20
バイトである必要はありません。それよりはるかに少ない可能性があります。
したがって、データがまったくない8バイトのUDPパケットがある場合、そのIPの長さは20+8
になりますが、イーサネットのペイロードの長さは46
バイトのままになります。 18
バイトホールはどうなりますか?イーサネットフレームをワイヤ64
バイトにするためにパディングされます(すでに知っている理由により)。
[Eth: DMAC + SMAC + EtherType + [IP: Hdr + [UDP: Hdr + 0data ]] + PAD + CRC ]
結論:あなたがapplication data size
と呼ぶものには、この64
バイトのイーサネット要件に基づく最小の期待はありません。 PAD
は、違いを補正します。
短い答え:
TCPセグメントのデータ部分の最小長はゼロです。UDPデータグラムのデータ部分の最小長はゼロです。
IPスタックが46バイト未満のデータグラムをイーサネットに渡す必要がある場合、イーサネットはパディングバイトを追加して46バイトにパディングします。 IPヘッダーには独自の長さフィールドがあるため(TCPおよびUDPヘッダーと同様))、これらのプロトコルが混乱することはなく、リンク層のパディングを独自のペイロードの一部として解釈しようとします。
追加情報:
イーサネットは、IPを実行できる多くのデータリンク層プロトコルの1つにすぎません。イーサネットの最小パケット長は、従来の技術的な理由から64バイトです(イーサネットネットワークがCSMA/CDであり、衝突が発生する可能性があったときに、最大直径のイーサネットネットワークで「衝突」を確実に検出できるようにするためです。最近のイーサネットネットワークは、あらゆる場所でスイッチを使用しています。すべてのセグメントで全二重であるため、CSMA/CDと衝突はほとんど過去のものです)。
IP over Ethernetを頻繁に使用するため、イーサネットとIPは、2つの別個の機関によって作成された2つの別個のネットワークテクノロジーであることを忘れがちです。 IEEE(Institute of Electrical and Electronics Engineers)によって標準化されたイーサネットは、IP以外の未知の数のネットワーク(レイヤー3)プロトコルを処理するように設計され、IETF(Internet Engineering Task Force)によって作成されたIPは、イーサネット以外の不明な数のデータリンク(レイヤー2)プロトコル。 IPは、1つの一般的なリンク層プロトコルのために、最小または最大のデータグラムサイズを変更しません。リンク層プロトコルが取得する小さなデータグラムが気に入らない場合は、それを埋める必要があります。逆の場合、IPが現在のデータリンクが提供するMTUを気に入らない場合は、フラグメント化する必要があります。