イーサネットフレームの「インザワイヤ」サイズとは何ですか?1518または1542?


22

ここの表によると MTU = 1500バイトであり、ペイロード部分は1500-42バイトまたは1458バイトであると言います(<-これは実際に間違っています!)。さらにその上に、28バイト(20 IP + 8 UDP)のIPv4およびUDPヘッダーを追加する必要があります。これにより、アプリケーションメッセージの最大可能数は1430バイトになります。しかし、インターネットでこの番号を探すと、代わりに1472が表示されます。ここでこの計算を間違っていますか?

私が知りたいのは、断片化のリスクなしにネットワークを介して送信できる最大のアプリケーションメッセージだけです。フレームヘッダーが含まれているため、確実に1500ではありません。誰か助けてもらえますか?


混乱は、PAYLOADが実際に1500バイトにもなることがあり、それがMTUであるということです。それでは、1500のペイロードのワイヤ内サイズはどのくらいですか?そのテーブルからは、1542バイトまで大きくなる可能性があります。

したがって、送信できるアプリメッセージの最大数は1472(1500-20(ip)-8(udp))で、ワイヤーサイズは1542で最大です。実際に単純な場合に、事態がどのように複雑になるかは驚きです。また、テーブルに1542と表示されている場合、誰かが1518という数字をどのように思いついたかはわかりません。


ここでの本当の質問は、「ワイヤサイズで」とはどういう意味ですか、この情報をどうしますか。1秒あたりのパケット数を計算しようとしていますか?
マイクペニントン

@MikePennington有線中継時間を決定しようとしています。パケットサイズとイーサネット速度(10ギガビット)で計算できます。
-chrisapotek

回答:


26

ウィキペディアの図は恐ろしいです。うまくいけば、私がこれから書こうとしていることはより明確になります。


802.3イーサネットの最大ペイロードは1500バイトです。
これは、ネットワーク経由で送信しようとしているデータ(およびMTUが参照しているデータ)です。
[payload]<-1500バイト

ペイロードはイーサネットフレームにカプセル化されます(これにより、ソース/宛先MAC、VLANタグ、長さ、CRCチェックサムが追加されます。これは、合計22バイトの追加「スタッフ」
[SRC+DST+VLAN+LENGTH+[payload]+CRC]<-1522バイトです。

フレームはワイヤで送信されます-イーサネットカードが基本的に立ち上がる前に、他の人がワイヤ(CSMA / CD)を使用していないことを確認するために大声で叫びます-これがプリアンブルフレームの開始デリミタです(SFD)-追加の8バイトなので、次のようになります:
[Preamble+SFD+[Ethernet Frame]]<-1530バイト

最後に、イーサネットトランシーバーがフレームの送信を完了すると、802.3は次のフレームの送信を許可する前に、12バイトの無音(「フレーム間ギャップ」)を送信する必要があります。
[Preamble+SFD+[Ethernet Frame]+Silence]<-ワイヤで送信された1542バイト。


プリアンブル、SFD、およびフレーム間ギャップは、フレームの一部としてカウントされません。これらは、イーサネットプロトコル自体のサポート構造です。

MTUはペイロードに適用されます。これは、パケットに詰め込むことができるデータの最大単位です。したがって、MTUが1500バイトのイーサネットパケットは、実際には1522バイトフレームであり、ワイヤ上で1542バイトです(vLANタグがあると仮定)。

あなたの質問への答え- 断片化なしで802.3イーサネット経由で送信できる最大のパケットは何ですか?- ペイロードデータ1500バイトです

ただし、イーサネット層は制限要因ではない場合があります。途中で何かがMTUをペイロードデータの1500バイト未満に制限しているかどうかを確認するには、次のいずれかを使用します。

  • Windows:ping hostname -f -l sizeofdata(John Kが言及した手法)
  • BSD: ping -D -s sizeofdata hostname
  • Linux: ping -M do -s sizeofdata hostname

それが機能する最大の値sizeofdataは、MTU(データが通過する特定のパス上)です。


ただし、この1500からIPおよびUDPヘッダーを除外する必要がありますか?したがって、UDPの最大アプリケーションメッセージ長は1472です。
-chrisapotek

@chrisapotek正しい-IPとUDP(またはTCP、GREなど)ヘッダーは、イーサネットフレームに入れられるペイロードの一部です
-voretaq7

2
Linuxのtraceroute --mtu {target}も最大mtuを表示します
Rqomey

もう少し「物理的」にすべきですか?en.wikipedia.org/wiki/8b/10b_encoding
SaveTheRbtz

@SaveTheRbtzああ、いいえ-バイナリ表現を
理解

2

フレームに入れるデータの量に依存します。1500バイトのデータをフレームに入れると、合計フレームサイズは1518バイトになります。1472バイトのデータを使用すると、合計フレームサイズは1500になります。

http://en.wikipedia.org/wiki/Ethernet_frame

そうは言っても、本当にフラグメンテーションのテストに興味があるなら、これをテストする良い方法はいくつかのフラグのある古き良きpingを使うことです:

ping hostname -f -l sizeofdata

パケットが断片化されている場合、-fフラグにより​​pingが失敗します。ここで理解する鍵は「sizeofdata」です。断片化せずにメッセージに入れることができるデータの量です。したがって、1500のペイロードを送信すると、1500バイトを超えると断片化が始まります。ただし、これを1472(1500-18バイトのオーバーヘッド)に下げると、pingが通過することがわかります。


申し訳ありませんが、1542バイトはIEEE 802.3で定義されている標準のイーサネットフレームを大きく上回っています。タグなしの1500バイトのイーサネットペイロードは1518バイトです(SFD / preableは含まれません)。802.1qタグ付きフレームは1522バイトです(同じ注意事項)
マイクペニントン

それは非常に紛らわしいです。MTU = 1500ですが、フレームサイズは1542です??? したがって、MTUは単なるペイロードです。言い換えると、1542のフレームサイズから42の余分なものを引いたものです。あれは正しいですか?
-chrisapotek

申し訳ありませんが、間違って入力しました-答えを更新しましたが、まだ間違っている場合はお知らせください-これは私が覚えている数学です:S
Univ426

ごめんなさい、私は間違っている必要があります-それはその1518年のように見える、私はそれを理解したと思ったが、私ははっきりとオフ私の番号を持っている:そのことについて申し訳ありませんS
Univ426

混乱しているのはあなたではなく、皆さんです。だから私の質問は続きます。MTUとイーサネットフレームサイズの違いは何ですか?ペイロードは1500以下ですか?
chrisapotek

0

基本的なEthernet_IIフレームの場合、フレームサイズは1518バイト(回線上または回線外)です。これは、宛先および送信元アドレスごとに6バイト、ペイロード用に46〜1500バイトのタイプフィールド用に2バイト(IPヘッダーとUDPヘッダーを含むIPパケット全体)、およびFCS。これに加えて、フレームの大きさ(64バイト)には制限があります。これが、範囲が46バイトである理由です(これを2つのアドレスとタイプとFCSに追加すると、64バイト-46 + 6 + 6 + 2 + 4 = 64になります)。

フレームが複数のVLANをサポートするネットワーク上にあり、VLANタグでフレームにタグを付ける必要がある場合、1つの余分なフィールドがtypeフィールドの前に追加されます。これは4バイトです。これは、ペイロードのサイズの範囲を下端で4バイト減らすことができることを意味しますが、最低でも64バイトが残っています。したがって、42です。(VLANタグの場合は42 + 6 + 6 + 2 + 4 + 4です= 64)

したがって、範囲が1500-42と書かれている場合、1500から42を引いたという意味ではなく、1500から42バイトが有効であることを意味します。ワイヤの1つであるこのタグ付きフレームは、最大で1522バイトです(1つのタグのみが使用される場合、または2つのタグが使用される場合は1526)。いずれも番号1542を説明していません。

この数に到達するには、イーサネットでフレームを送信する方法を検討する必要があります。イーサネットLANにはクロックがないため、クロックを設定するために一連の1と0がフレームの送信機によって送信されます。これはプリアンブルと呼ばれます。すべてのリスナーが前文のすべてを「聞く」わけではありませんが、ほとんどの人がその一部を聞く必要があります。プリアンブルの終了を通知するために、送信された最後の8ビットの1つが反転され、10101010の代わりに10101011になります。このバイトはStart of Frame Delimiter(SDF)と呼ばれます。これは、有線でキャプチャするのに技術的には役に立たないため、通常、プリアンブルの7バイトと1バイトのSDFはカウントされませんが、元の1518であれば1526になります。まだ1542ではありません。

フレームが送信されると、フレーム間ギャップと呼ばれる強制的な無音がワイヤ上にあります。これは、12バイトの送信に相当します。これもカウントまたはキャプチャされませんが、それがあった場合、1538バイトになります。1538から1542に到達する唯一の方法は、フレームにタグが付けられている(つまり、4バイトのプランタグが含まれている)と言うことです。やっと、1542。

すべて用語で説明しています。標準フレームは、ワイヤ上で1518バイトです(キャプチャデバイスに関する限り)。タグ付きフレーム(単一タグ)は、ワイヤ上で1522バイトです。これらは、ワイヤ上で1538バイトまたは1542バイトの伝送スペースを占有します。

それが明確に役立つことを願っています。


-1

断片化を発生させたくないので、パケットを断片化する必要がありますが、dfセットはセミの全体が多い2ウェイのハイウェイと、両方に向かう小さなスマートカーの全体が同じハイウェイのようになります同じ目的の準決勝はより多くのペイロードを運ぶが、より遅く、混雑しやすい


1
この答えは、質問とほとんど無関係ですが、完全ではありません。
カスペルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.