ネットワークアダプターは単一のストリームで着信ビットを読み取りますか?


9

ギガビットネットワークアダプターがデータを受信して​​いる場合、ビットをどのように受信しますか?0と1の1つのストリームですべてを表示していますか?または、どういうわけか、0と1の複数のストリームが同時に入ってくるのですか?

たとえば、2つの送信デバイスと1つの受信デバイスがあるとします。

デバイス1と2は、デバイス3へのネットワークデータの送信を同時に開始します。

私の仮定は、デバイス3のネットワークアダプターの観点から、すべての0と1が単一のデータストリームで出くわすことです。デバイス1または2からのデータを把握できますが、データは数百万/数十億ビットの1つのストリームにすぎません。

私は完全に間違っていますか?:)


1
半二重接続ですか、それとも全二重ですか?1000Base-Tの半二重デバイスは、まだその標準にあるにもかかわらず、存在することはありませんでした。全二重接続では、リンク上で同時に3番目のデバイスをめぐって競合する2つのデバイスからのフレームはありません。
Ron Maupin

全二重。OK、つまり、0と1の単一のストリーム(例:01010101010001010010101001010100001101011010)があり、デバイス3の観点(レシーバー)から見ると、デバイス1と2はそのストリームを順番に使用できますが、両方を同時に使用することはできません。 0と1を同時に送信しますよね?
shihku7 2018年

何か回答がありましたか?もしそうなら、あなたは答えを受け入れて、質問が永遠にポップアップし続けないようにして、答えを探します。または、独自の回答を提供して受け入れることもできます。
ロンモーピン

回答:


14

場合によります。

多くのイーサネットPHYは純粋にシリアル方式でデータを送信しますが(100BASE-TX、1000BASE-SX、10GBASE-SRなど)、データストリームを複数のレーンに分割して並列に送信するものもあります。

最も一般的には、1000BASE-T(一般的なGigabit-over-copperバリアント)は、エンコードされたデータストリームを4つのレーンに分割し、それぞれをCat-5ケーブルの4つのツイストペアの1つで個別に送信します。ギガビット以上のすべてのツイストペアバリアントは、これらの4つのレーンを使用します。

一部の高速(10G +)ファイバーPHYは、最大16ファイバー(マルチモードファイバーと短距離)または波長(シングルモードファイバーと長距離)で複数のレーンを使用します。

ただし、すべてがフレームで送信され、それぞれが単一の送信元から単一の宛先まで実行されます。フレームは一般的にアトミックです。それらは常に1つのピースで送信されます。各フレームは、単一の特定の接続/アプリケーションからのデータのみを転送します。ヘッダーには送信元アドレスと宛先アドレスが含まれているため、ネットワーク上での経路を見つけることができます。

ネットワークが同じ宛先ポートの異なる送信元から2つのフレームを同時に受信した場合、宛先へのスイッチポートが最初のフレームの送信を完了するまで、フレームの1つをキューに入れる必要があります。

これは、ソースとデスティネーションが同じ速度で実行されることを前提としていますが、必ずしもそうとは限りません。1 Gbit / sリンクで接続されたファイルサーバーと、10のクライアントがそれぞれ100 Mbit / sリンクでフルスピードで(重要な)キューイングなしで送信しているとします。これは、「複数のストリーム」の提案に多少近づきますが、これらのストリームはビットレベルではなく、フレームレベルでインターリーブされます。

ネットワークポートのレートは、1秒間に数千または数百万のフレームになる可能性があるため、人間の観点からは、複数のストリームを区別することは不可能です-すべてが「同時」のようです。


他の回答者@jonathanjoと一緒になって、1000Base-Tのどの記述が正しいかを理解してください。
davidbak

1
jonathanjoの「同じ媒体」は、ギガビットイーサネットでは(実際には)存在せず、10/100 Mbitでも廃止されたマルチポート衝突ドメインを表しています。
Zac67、18年

2
@davidbakはここではすべて正しいようです-通常Zacは正しいです!-強調が異なるだけです。実際の1000baseTでは衝突が発生しないことを明確にするなど、回答のいくつかを修正しました。
ジョナサンジョ

2
これに、基本的に複数のビットを1つに到達させるPAM16および同様のエンコーディングを追加する必要もあります。
PlasmaHH 2018年

1
@PlasmaHH 1000BASE-Tはすでに4つのレーンとPAM5を使用しているため、各クロックステップにはおよそ9.3のrawビットがあります(もちろん、L1の125 MBdで8つの「ユーザー」ビット)。
Zac67、18年

13

ここではギガビットの部分は無視して、「2つのデバイスが同時に送信している」部分に少し注目してみましょう。

上の共有メディア、これは実際に起こると問題になる可能性があります。ほとんどのワイヤレス伝送は共有メディアであり、かつてのイーサネットは以前は次のとおりでした。

  • 10base2(同軸)は、ほぼすべてのケーブルを1本のケーブルで使用したものです。明らかに、2つ(またはそれ以上)のステーションが同時に送信できました。
  • (スイッチではなく)ハブを備えた10baseTおよび100baseT(ツイストペアベース)は、接続されたデバイスから受信した信号が他のすべてに繰り返されるため、2つ(またはそれ以上)のステーションが同時に送信できることも意味します。

ここで、2つのデバイスが同時に送信している場合、2つのことが起こります。

  • ある形式の多重化(時分割、周波数分割...)を使用すると、個別の「チャネル」が可能になるため、特定のチャネルをリッスンし、他のチャネルに煩わされることはありません。これは、ワイヤレス伝送で多く使用され、有線伝送ではあまり使用されません(ファイバー上のWDM / DWDMは例外です)。

  • または、2つ以上のデバイスが同じチャネルで同時に送信している場合、衝突と呼ばれるものを取得します。たとえば、2人が同時に話していると、どちらが言っているのか理解できません。受信デバイスはそうではありません。任意のデバイスから送信されたデータをデコードできます(多くの場合、デバイスはデータをデコードできますが、意味がなく、CRCチェックに合格しません)。

これは、CSMA-CD(Carrier-Sense Multiple Access、Collision Detection)のようなスキームの出番です。

  • 送信を試みる前に、デバイスは他の誰かが送信しているかどうかをチェックします(キャリアセンス)
  • チャネルが空いている場合は、送信を開始します。
  • しかし、それでも、2つのデバイスがまったく同時に起動する可能性があるため、衝突が発生する可能性があります。
  • チャネルでの過度の時間の浪費を避けるために、デバイスは衝突を検出し(送信するものと受信するものを比較することにより、一致しない場合は、他の誰かが同時に送信していることを意味します)、送信を中止します、ランダムな遅延の後に再試行します(新しい衝突を回避するため)。

これは非常に面白く、負荷の軽いネットワークでは非常にうまく機能しましたが、トラフィックが大きくなるとすぐに大量の衝突が発生し、共有メディアの使用量が増加し、結果として衝突が増加します。かなり悪くなる可能性があります。

これに対する答えは、全二重交換ネットワークへの切り替えでした。ハブは何も考えずに信号を繰り返しました。一方、スイッチは実際にフレームを受信し、それを宛先リンクに再送信します(追加のボーナス:フレームは全員に送信されるのではなく、ほとんどの場合宛先に送信されます)。

2つのデバイスが同じ宛先デバイスに送信する場合、スイッチはフレームの1つをキューイングするため、同時に送信された2つのフレームは実際には次々に宛先に到着します。

さらに、物理レベルでは、データが複数のペアまたは複数のケーブルで並列に交換される可能性がかなりあります。これがビットレベルで行われるか、フレーム全体が各ペア/ケーブルで送信されるかは、使用されるテクノロジーによって異なります。しかし、それは本当にあなたの質問ではなかったと思います。


1
これは優れた点です。おそらく、質問に対する最も適切な答えです。非常に高速(ファイバー)になると、衝突を避けるために、回線上の単一の送信者と単一の受信者に制限されるのが一般的です。別の入力を追加する必要がある場合は、別のチャネルに取り込まれ、着信ストリームと結合されて、発信ストリームに送信されます。最近では、イーサネットでさえも「切り替え」される傾向があり、衝突を回避します-衝突が見られる主な場所(質問のように2台のデバイスが1台と通信している)最近はwifiです-他のほとんどすべてが1送信者から1受信者
ビルK

12

この特定のケースは複雑なケースです。

1000baseTについて。

まず、2つのデバイスが同時に送信していると一般的に言った場合、それらは通常、実際には同じメディア上で同時にビットを送信していません。そうすると、衝突が発生し、すべてのリスニングデバイスがこれを解決します(最終的には、さまざまな衝突検出スキームによって)。2つの送信デバイスがわずかに異なるタイミングでメディアにアクセスします。しかし、1000baseTでは、特定のペアのセットに2つのデバイスしかありません。通常、1つのデバイスはスイッチで、もう1つのデバイスはホストです。

次に、1000baseTはペアで一度に2つのデータビットを送信し、5つの電圧レベルで複雑な方法でエンコードされます。したがって、それは、一連の2桁ではなく、一連の4桁の数字です。

第3に、1000baseTは同じペアで同時に両方向に送信できます。ハイブリッドと呼ばれる回路によって、発信信号と着信信号を分離できます。

他のメディア上のギガビットイーサネットの動作は異なります。遅い速度、たとえば10baseTや100baseTの方がスキームが単純です。ハブを介した10baseTには実際に衝突があります。スイッチを介して、通常はスイッチによって編成され、発信フレームがキューに入れられます。全二重の場合、衝突はまったくありません。


他の回答者@ Zac67と一緒になって、1000Base-Tのどの記述が正しいかを理解してください。
davidbak

@jonathanjo 3ビットシンボルは正しいですが、PAMレベルは5つしかありません。おおまかに言って、これは8ビットから4つの3ビットシンボルとスクランブルエンコーディングであり、3ビットシンボルは(シフトする)PAMレベルにマッピングされます。
Zac67、18年

@davidbakそれを拾ってくれてありがとう。説明を簡略化して、要点(複雑でバイナリではない)をカバーし、間違いを取り除きました。明確にしてくれたZacに感謝します。
ジョナサンジョ

7

ここではすべての有線イーサネットリンクを想定しています。

同じネットワークセグメント上の2つのデバイスが同時に送信すると、誰に送信するかに関係なく、これをコリジョンと呼びます。衝突が発生した場合、どちらのメッセージも通過しません。幸い、送信者には衝突検出する機能があります。それが発生すると、各送信者はそれぞれランダムな時間(数分の1秒)を選択して待機してから再試行し、最終的に1人の送信者のみがアクティブになるまでプロセスを繰り返します。

しかし、これはもうほとんど起こりません。

代わりに、今日のほとんどの有線接続はスイッチドネットワーク上で行われ、各デバイス(送信側と受信側の両方)はすべてスイッチ上の独自の個別のポートに接続されています。データはパケット(実際には:フレーム)に分割され、スイッチは各ポートで一度に1つのパケットのみがアクティブであることを確認します。リンクがビジーの場合、リンクが再び使用可能になると、スイッチは他のフレームを保存してレシーバーに転送します。

このスキームを使用すると、衝突が発生する唯一の方法は、スイッチに接続された複数のデバイスがスイッチされていないハブを介して相互に接続されている(ホームwifi「ルーター」の一部のモデルのポートがまだスイッチされていない)か、スイッチとデバイス間のリンクは、半二重モードで動作します

代わりに対処するのは、輻輳です。衝突はないかもしれませんが、ネットワーク上の一般的なホストには、リンクがサポートするよりも多くのデータとパケットを送信したいデバイスがあり、バッファがいっぱいになることがあります。しかし、それはまったく別の問題です。


1
気にしないが、イーサネットレベルでは、パケットではなくフレームになります
jcaron

1
@jcaron Nit-nit-picking:もちろん、通常は「パケット」を使用して「IPパケット」を意味します。これはRFC 791に従って編成され、イーサネットフレームの「MACクライアントデータ」です。ただし、「イーサネットパケット」は、プリアンブルの先頭から拡張ビットの末尾までを含む、すべての送信として定義されます。「フレーム」は、宛先アドレスからフレームチェックまでの部分です。(802.3-2015セクション3.1.1「パケット形式」)。スイッチは、一度に1つのEther パケットが送信され、Ether フレームを格納して転送することを保証します。
ジョナサンジョ

5

イーサネットの仕組みについて基本的な理解が必要だと思います。たとえば、送信側ホストは、1と0が交互に並んだプリアンブルを送信して、受信側ホストの注意を引きます。受信側のホストが2つ続けて表示する場合、フレームが次であることを認識しています。フレームが送信されると、次のフレームが送信される前に、ライン上で96ビットの無音が存在する必要があります。

異なるイーサネット標準は、異なるエンコーディングを使用します。たとえば、100Base-Tは4B5Bを使用して、データの4ビットごとに5ビットを送信します。


1

(この質問では、ハブ共有ネットワークを想定しています。)

ネットワークアダプターは単一のストリームで着信ビットを読み取りますか?

はい。PHYの実装に関係なく、これは単一の入力ストリームです。複数のデバイスからの通信は、同時に単一のNIC(MACアドレス)に正常に到達することはできません。

私の仮定は、デバイス3のネットワークアダプターの観点から、すべての0と1が単一のデータストリームで出会うことです。」

「単一ストリーム」はい。ただし、同時に送信する2つのデバイスの例では、さらに処理するために到着するデータのストリームはありません。1と0の「フレーム」が衝突します。

デバイス1または2からのデータを把握できますが、データは数百万/数十億ビットの1つのストリームにすぎません。

できません。信号を組み合わせると衝突が検出され、フレームは破棄されます。

私は完全に間違っていますか?

質問のタイトルは正しい説明ですが、Qポストでの議論は、理解と仮説が間違っていたことを示唆しています。

さらに

  • 「ネットワークアダプター」のタイプに関係なく、ビットの単一ストリームのみを受信します。
  • 信号を送信するための物理的手段には、データの複数のサブストリームを含めることができますが、それらのサブストリームとそのような物理的処理は、「ネットワークアダプター」とは見なされません。これらのサブストリームは相互依存であり、意味を成すために組み合わせる必要があります。そして、それらのサブストリームは単一のソースから発信されなければなりません。
  • この回答(およびここでの他の回答)が不明な場合は、スイッチドパケットイーサネット/ IPネットワークの基礎を学ぶ必要があります。

この質問では、ハブ共有ネットワークを想定しています。OPはギガビットNICを参照し、半二重モードは(実際には)GbEには存在しません。;-)
Zac67

@ Zac67私は寛大で親切な見知らぬ人のようです。私はOPが「ギガビット」を勝手に選択したと想定し、矛盾があることを彼らは認識していなかったと考えました。これにより、最終的に質問のタイトルに直接簡単に答えることができました。OPは他の回答を読んで、矛盾についてさらに学ぶことができます。
トッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.