データリンク層の基本概念#
データリンクは簡単な通信で、異なるプロトコルを使用することがあります。
リンク#
これは、あるノードから隣接ノードへの一段の物理回線(有線または無線)を指し、その間に他の交換ノードが存在しないことを意味します。
データリンク#
リンク上でデータを送信する際(物理的な性質において)、必要なリンク自体に加えて、データの送信を制御するためのいくつかの必要な通信プロトコルが必要です。これらのプロトコルを実現するハードウェアとソフトウェアがリンクに追加され(物理的実装)、データリンクが構成されます。
例えば、ネットワークカード、ネットワークアダプタ、およびそれに関連するソフトウェアドライバがこれらのプロトコルを実現しています。一般的なネットワークアダプタは、データリンク層と物理層の 2 つの機能を含んでいます。
フレーム#
データリンク層の対等なエンティティ間で水平方向に論理通信を行うプロトコルデータユニット PDU
WAN と LAN#
WAN(広域ネットワーク)はポイントツーポイントリンク(PPP、HDLC)を使用します。
- 帯域幅が大きく、距離が遠い(遅延が大きい)帯域幅遅延が大きい
LAN(ローカルエリアネットワーク)はマルチポイント接続(イーサネット、無線 LAN、VLAN)を使用します。
- 接続ノードが非常に便利です。
- 共有メディア(またはネットワークスイッチ)に接続されると、他のすべてのノードに接続できます。
- マルチポイントアクセスは、各ノードの共有メディアへのアクセスと使用を調整し、衝突後の調整を考慮します。
データリンク層が提供するサービス#
解決すべき 3 つの問題:フレームの境界、透明な伝送、エラー検出
フロー制御:隣接する送信者と受信者ノードの速度を一致させます。
エラー検出:エラーは信号の減衰とノイズによって引き起こされ、受信者はエラーを検出し、送信者に再送信を通知するか、フレームを破棄する必要があります。
フレームへのカプセル化と透明な伝送、エラー検出、信頼性のある伝送#
フレームへのカプセル化#
データリンク層が上位層に渡すもの、プロトコルデータユニット PDUにフレームヘッダとフレームテールを追加してフレームにします。
- フレームヘッダとフレームテールには重要な制御情報が含まれています。
- フレームヘッダとフレームテールの役割の 1 つはフレームの境界を定義することです。(すべてのデータリンク層プロトコルのフレームにフレーム境界マークが含まれているわけではありません。MAC アドレスはフレーム間隔方式でフレームを定義します)
- ==データリンク層のフレーム伝送の効率を向上させるために、フレームのデータペイロードの長さはヘッダとテールの長さよりもできるだけ大きくする必要があります。==
- キャッシュスペースの需要やエラー制御などの多くの要因を考慮して、各データリンク層プロトコルはフレームのデータペイロードの長さの上限を規定しています。すなわち、最大伝送単位(Maximum Transfer Unit、MTU)。例えば、イーサネットの MTU は 1500 バイトです。
フレームへのカプセル化と MAC アドレス#
FCS フィールド
フレーム開始境界マーカー
前同期コード
PPP フレーム#
フレームの識別とチェック#
01m38s
前導コード間のフレーム間隔:96 ビット
透明な伝送#
フレーム境界のエラー:フレームのデータペイロードフィールドに同じフレームのヘッダまたはテールの同じフィールドが出現した場合、他の手段を講じない限り、受信者のリンク層でフレーム境界のエラーが発生します。
透明な伝送は、データリンク層が上位層に渡すプロトコルデータユニット PDU に対して何の制限もなく、データリンク層が存在しないかのように扱われます。
透明な伝送を実現する方法#
バイト充填 - エスケープ文字の利用 - バイト指向の物理リンク#
送信者は物理層で送信するビットストリームをスキャンし、フレームを物理層に渡す前に、データペイロードをスキャンします。フレーム境界マーカーが出現するたびに、その前にエスケープ文字を挿入します。受信者は最初のフレーム境界マーカーに遭遇すると、それがフレームの開始であることを認識し、エスケープ文字に遭遇すると、その後の 1 バイトの内容がデータであることを知り(フレーム境界マーカーと同じであっても)、エスケープ文字を除去した後、その後の内容をデータとして引き続き抽出します。再びフレーム境界マーカーに遭遇したとき、データを受信します。
- フレーム内にエスケープ文字がある場合、エスケープ文字の前にさらにエスケープ文字を追加します。
- エスケープ文字は特別な制御文字で、長さは 1 バイト、10 進数値は 27 で、ESC の 3 文字ではありません。
ビット充填 - ビット指向の物理リンク#
連続する 5 つの 1 の後に 0 を追加します。
0 ビット充填の演習
エラー検出#
受信者はどのように誤りを知るか
- ビットエラー:実際の通信リンクは理想的ではなく、ビットの送信中にエラーが発生することがあり、1 は 0 に、0 は 1 に変わる可能性があります。(ノイズ干渉、伝送メディアの品質などの要因の影響を受けます)
- 誤り率 BER(Bit Error Rate):一定の時間内に送信された誤りのあるビットの割合を誤り率と呼びます。
- リンクの信号対雑音比を向上させることで、誤り率を低下させることができます。しかし、実際の通信リンクでは、誤り率をゼロにすることは不可能です。
- エラー検出はビットエラーを検出します。
- 受信者と送信者の両方が同じエラーチェック技術を使用し、エラーチェックコードでエラーを検出します。
- フレームテールはエラーチェックコードを格納するフィールドであり、フレームチェックシーケンス(FCS:Frame Check Sequence)と呼ばれます。
- エラーチェックコードは、フレームが伝送中にエラーが発生したことを検出することはできますが、エラーの位置を特定することはできないため、エラーを修正することはできません。== ただエラーが発生したことはわかりますが、どこでエラーが発生したかはわかりません。==
- より進んだ == エラー訂正 == を行うためには、冗長情報が多いエラー訂正コード(例えばハミングコード)を使用して前方エラー訂正を行うことができます。しかし、エラー訂正コードのオーバーヘッドは大きいため、コンピュータネットワークではあまり使用されません。
- 伝送中のエラーを修正するためにエラー訂正再送信方式を使用するか、単に検出されたエラーのあるフレームを破棄します。
- 再送信は信頼性のある伝送サービスと呼ばれます。
- 破棄は信頼性のない伝送サービスです。
奇数偶数チェック#
02m18s
奇数チェックは、送信するデータの後に 1 つのチェックビットを追加し、そのチェックビットを追加した後の全データ中のビット 1 の数が奇数になるようにします。
偶数チェックは、送信するデータの後に 1 つのチェックビットを追加し、そのチェックビットを追加した後の全データ中のビット 1 の数が偶数になるようにします。
- 送信されたデータ中に奇数個のビットが誤りを起こした場合、含まれるビット 1 の数の奇偶性が変わり、誤りを検出できます。
- 送信されたデータ中に偶数個のビットが誤りを起こした場合、含まれるビット 1 の数の奇偶性は変わらず、誤りを検出できません(見逃し)。
- 実際の使用時には、奇数偶数チェックは垂直奇数偶数チェック、水平奇数偶数チェック、および水平垂直奇数偶数チェックに分けられます。
循環冗長検査#
05m43s
データリンク層では、見逃し率が非常に低い循環冗長検査(Cyclic Redundancy Check、CRC)エラーチェック技術が広く使用されており、ハードウェアでの実装が非常に容易であるため、データリンク層で広く使用されています。
- 送信者は生成多項式 **G (X)** を事前に合意します。
- 送信者は送信するデータと生成多項式 G (X) に基づいて、** エラーチェックコード(冗長コード)** を計算し、冗長コードを送信するデータの後に追加して一緒に送信します。
- 受信者はデータと冗長コードを受け取った後、生成多項式 G (X) を使用して受信したデータと冗長コードに誤りが発生したかどうかを計算します。
生成多項式#
余りについて#
余りが除数と同じビット数になると、除数が足りると呼ばれ、その場合は上に 1 がマークされます。
足りない場合は、足りないと呼ばれ、その場合は上に 0 がマークされます。
10m03s
信頼性のある伝送#
有線リンクと無線リンクが提供するサービスは異なります。
-
有線リンク:誤り率が低く、リンク層に信頼性のある伝送を要求せず、上位層で誤り処理を行います。
-
一般的に、有線リンクの誤り率は比較的低いです。コストを削減するため、データリンク層に上位層に信頼性のある伝送サービスを提供することは要求されません。たとえ誤りが発生しても、信頼性のある伝送の問題は上位層で処理されます。
-
低誤りリンク(リンク自体が非常に信頼性が高い)ではほとんど使用されません(光ファイバー、一部のツイストペアケーブル):イーサネット
-
無線リンク:誤り率が高く、リンク層は信頼性のある伝送を提供する必要があります。
-
干渉を受けやすく、誤り率が比較的高いため、データリンク層は上位層に信頼性のある伝送サービスを提供する必要があります。
-
高誤りリンクで信頼性のあるデータ送信が必要です:無線 LAN
ARQ プロトコル#
自動再送信プロトコル
OSI モデルのデータリンク層とトランスポート層のエラー訂正プロトコルの 1 つです。
- 分類
- 停止待機 ARQ プロトコル:停止待機プロトコル
- 連続 ARQ プロトコル(ウィンドウメカニズムを組み合わせたもの):バックアップ N ステッププロトコルと選択再送信プロトコル
ARQ はどの層で動作するのか?
- ==ARQ は信頼性のないデータチャネル上でデータを信頼性を持って送信するためのスキームであるため、実際にはリンク層とトランスポート層の両方で ARQ が使用されており、特定の層に専属ではありません。==
- 接続が 1 つの層で ARQ を使用している場合、その上位層の通信が信頼性があるとは限りません。なぜなら、ARQ はそれを使用するポイントツーポイントが信頼性があることを保証するだけだからです。たとえば、データリンク層はあなたとルーター間の通信が信頼性があることを保証しますが、ルーターから地区のルーターへの通信も信頼性がありますが、ルーター自体が故障したり、混雑してパケットを失ったりする可能性があります。つまり、ポイント自体に問題が発生する可能性があります。
- したがって、トランスポート層またはアプリケーション層で再度 ARQ を追加して、全体のデータチャネルの信頼性を保証する必要があります。たとえば、プログラムを自分で書いてアプリケーション層で通信する場合、トランスポート層で TCP を使用せずに UDP を使用することもできますが、プログラム内で ARQ プロトコルを使用して信頼性を実現することができます。
伝送エラーの種類#
各層の伝送が信頼性があるかどうか#
信頼性のある伝送サービスはデータリンク層に限らず、他の各層でも信頼性のある伝送を実現することができます。
信頼性のある伝送の実現は比較的複雑で、オーバーヘッドが大きいため、信頼性のある伝送を使用するかどうかはアプリケーションの要求によります。
信頼性のある伝送のメカニズム(三種類)#
停止 - 待機プロトコル(Stop-and-Wait) SW---ARQ の一種#
01m08s
メカニズム:確認と否認、再送信、タイムアウト再送信、データパケットに番号を付ける、確認パケットに番号を付ける
送信者は受信者にデータパケットを送信し、受信者はそれを受信した後、エラーチェックを行います。エラーが検出されなければ、そのデータパケットを受け入れ、送信者に確認パケットを送信します。略して ACK。送信者は送信したデータパケットの確認パケット番号を受け取った後、次のデータパケットを送信することができます。このデータパケットが伝送中にエラーが発生したと仮定すると、受信者はそれを受信した後、エラーチェックを行い、エラーが発生した場合はそのデータパケットを破棄し、送信者に否認パケットを送信します。略して NAK。
送信者は送信したデータパケットに対する否認パケットを受け取った後、自分が以前に送信したデータパケットがエラーで受信者に破棄されたことを知り、すぐにそのデータパケットを再送信します。受信者はそれを受信した後、エラーチェックを行い、エラーが検出されなければ、そのデータパケットを受け入れ、送信者に確認パケットを送信します。== したがって、送信者はデータパケットを送信した後、すぐにそのデータパケットを送信キャッシュから削除することはできません。なぜなら、その後再送信が必要になる可能性があるからです。== そのデータパケットに対する確認パケットを受け取った後にのみ、送信キャッシュから削除できます。
より複雑な SW
04m48s
送信者が送信中にパケットを失った場合
ポイントツーポイントのデータリンク層では、実際にはパケットが失われることはあまりありません。
しかし、複雑なトポロジーの相互接続ネットワークでは、ルーター間で発生する可能性があります。
送信者はデータパケットを送信するたびにタイムアウトタイマーを起動します。タイムアウトタイマーが設定されたタイムアウト再送信時間 RTO に達しても、送信者が受信者の確認パケットまたは否認パケットを受け取らなかった場合、以前に送信したデータパケットを再送信します。図に示すように、== この時間は送信者と受信者間の平均往復時間 RTT== であり、一般的にはタイムアウト再送信時間 RTO を送信者と受信者の平均往復時間 RTT よりもわずかに大きく設定できます。送信者のタイムアウトタイマーがタイムアウトすると、以前に送信したデータパケットをすぐに再送信します。受信者が再送信されたデータパケットを正しく受信すると、送信者に対応する確認パケットを送信し、送信者はそれを受け取った後、次のデータパケットを送信できます。受信者がそのデータパケットを正しく受信すると、送信者に対応する確認パケットを送信します。この時点で、確認、否認、再送信の 2 つのメカニズムに基づいて、停止待機プロトコルにタイムアウト再送信メカニズムが追加されました。
==確認パケットの喪失==
確認パケットが伝送中に失われると、== 送信者のタイムアウト再送信 == が必然的に発生し、== 受信者は 2 つの同じデータパケットを受信することになります ==。受信者が == 受信したデータパケットが前回受信したデータパケットと重複していることを == 認識できない場合、== パケットの重複という伝送エラーが発生します ==。== パケットの重複という伝送エラーを回避するためには、== 各パケットに == 番号を付ける必要があります ==。図に示すように、停止待機プロトコルでは、==** 各データパケットを送信するたびに停止待機を行うため、== 各データパケットを送信するたびに、その番号が前回送信したデータパケットの番号と異なることを保証するだけで済みます。== したがって、1 ビットを使用して番号を付けるだけで十分で、番号 0 または 1 を持ち、受信者が連続して同じ番号のデータパケットを受信した場合、パケットの重複という伝送エラーを認識できます。この時、受信者は重複したデータパケットを破棄し、送信者に再度確認パケットを送信する必要があります。送信者はそれを受け取った後、受信者に次のデータパケットを送信できますが、その番号は前のデータパケットの番号とは異なります。受信者がそのデータパケットを正しく受信すると、送信者に対応する確認パケットを送信します。この時点で、確認、否認、再送信、タイムアウト再送信の 3 つのメカニズムに基づいて、停止待機プロトコルにデータパケットに番号を付けるメカニズムが追加されました。
- 各パケットに番号を付け、識別子を持たせ、1 回だけ受信されることを保証し、再送信によって 2 回受信されることはありません。
==確認パケットの番号の問題==
送信者が 0 番データパケットを送信し、受信者が正しく受信した後、送信者に確認パケットを送信しますが、何らかの理由でその確認パケットが遅れた場合、送信者は 0 番データパケットのタイムアウト再送信を必然的に行います。0 番データパケットの再送信中に、送信者は遅れた確認パケットを受け取り、1 番データパケットを送信します。受信者は再送信された 0 番データパケットを受信し、番号からこれは重複したデータパケットであることを知り、破棄し、0 番データパケットに対して再度確認パケットを送信します。こうして、送信者は 0 番データパケットに対して 2 つの確認を受け取ることになります。しかし、送信者は 0 番データパケットに対する 2 番目の確認を 1 番データパケットに対する確認と誤解するでしょう。確認パケットにも番号を付けることで、送信者はこれは 0 番データパケットに対する重複確認であることを知り、無視できます。受信者が 1 番データパケットを正しく受信した後、送信者に 1 番データパケットに対する確認を送信し、パケット確認番号は 1 となります。送信者はそれを受け取った後、受信者に次のデータパケットを送信し、その番号は 0 番データパケットの番号とは異なります。受信者がそのデータパケットを正しく受信すると、送信者に対応する確認パケットを送信し、確認番号は 0 となります。
注意事項、まとめ:
SW のチャネル利用率
横軸は時間です。簡単のために、送信者と受信者の間に直通のチャネルがあると仮定し、送信者がデータパケットを送信した後、受信者からそのデータパケットの確認を待ちます。確認パケットを受け取った後、次のデータパケットを送信し、このプロセスを繰り返します。この時間は送信者がデータパケットを送信するのにかかる送信遅延、すなわち TD です。この時間は信号が送信者と受信者の間を往復するのにかかる時間で、RTT と呼ばれます。
この時間は受信者が確認パケットを送信するのにかかる送信遅延で、TA と呼ばれます。これは、停止待機プロトコルを使用する送信者がデータパケットを送信し始めてから次のデータパケットを送信できるまでに経過する総時間です。時間 TD 内にのみ有用なデータ、すなわちデータパケットが送信されるため、チャネル利用率は良好であり、次の式で計算できます。TA は一般的に TD よりもはるかに小さく、これは確認パケットの長さが一般的にデータパケットの長さよりもはるかに小さいため、TA は無視できます。
信号が送信者と受信者の間を往復するのにかかる時間 RTT がデータパケットの送信時間 TD よりもはるかに大きい場合、たとえば、地球同期衛星リンクの RTT は非常に大きいです。このようなリンクを使用し、送信するデータパケットが非常に小さく、送信速度が非常に大きい場合、チャネル利用率は非常に低くなります。RTT がデータパケットの送信時間 TD よりもはるかに小さい場合、たとえば、無線 LAN の RTT は一般的に TD よりもはるかに小さいため、この時点でのチャネル利用率は比較的高いです。上記の導出では、タイムアウト再送信が発生する場合は考慮されていません。タイムアウト再送信が発生した場合、有用なデータ情報の送信に関して、チャネル利用率はさらに低下します。
以上のことから、== 往復時間 RTT が比較的大きい場合、チャネル利用率を向上させるために、送信者と受信者は停止待機プロトコルを使用するのが適切ではなく、バックアップ n ステッププロトコルまたは選択再送信プロトコルを使用することができます。==
例題
14m13s
まとめ
バックアップ N フレームプロトコル GBN#
00m37s
SW プロトコルでは、1 回の送信ごとに受信を待つ必要があり、各操作は 1 対 1 であるため、効率が低いです。GBN は一度に複数のパケットを送信したいと考えており、これらの複数のパケットは一括で確認されるため、逐次的に送信する必要がありません。
- パイプライン伝送方式を使用する場合、送信者はデータパケットを無制限に連続して送信することはできません。そうしないと、ネットワーク内のルーターや受信者がこれらのデータパケットを処理するのに間に合わず、データパケットの損失を引き起こす可能性があります。これは実際にはネットワークリソースの無駄です。(送信数を制限する)
- バックアップ N フレームプロトコルはパイプライン伝送方式を採用し、送信ウィンドウを利用して送信者が連続して送信するデータパケットの数を制限します。これは連続 ARQ プロトコルに属します。
n ビットでパケットに番号を付け、範囲は 0-2^n-1 です。この例では、3 ビットでパケットに番号を付けると仮定し、番号の範囲は 0-7 です。番号が 7 に達すると、次の番号は再び 0 から始まります。
送信者の送信ウィンドウと受信者の受信ウィンドウは、上記のルールに従って前方にスライドし続けるため、この種のプロトコルはスライディングウィンドウプロトコルとも呼ばれます。
エラーなしの伝送
06m03s
伝送中にエラーが発生した場合、バックアップ N フレーム
07m33s
受信したものは緑色になり、失われた場所で停止し、受信した数だけ青いウィンドウが移動します。
エラーが発生した場合、送信済みの N 個のデータパケットを再送信する必要があります。
12m17s 例を示します。
送信ウィンドウと受信ウィンドウ
送信ウィンドウ Wt が値の範囲を超えた場合
例題
18m04s
選択再送信プロトコル SR#
前の 2 つと比較
- 送信者がエラーのあるデータパケットのみを再送信するようにするため、受信者は ==累積確認を採用しない== 必要があり、正しく受信したデータパケットを 1 つずつ確認する必要があります。
- Wr はもはや 1 ではなく、== 受信者は失順で到着したがエラーがなく、番号が受信ウィンドウ内にあるデータパケットを先に受け入れ、欠落したパケットが揃ったら、まとめて上位層に送信します。==
例を示します
03m47s
論理的な鍵は、この方法では少し待つことになり、受信していない確認を単独で再送信し、偶発的なエラーの問題を犠牲にして、全体の安定性を保証します。
例題:
09m48s
受信していないものを返すだけです。
ポイントツーポイントプロトコル PPP#
ポイントツーポイントプロトコル(Point-to-Point Protocol、PPP)は、現在使用されている ==最も広く== 使用されているポイントツーポイント == データリンク層プロトコル == です。
アプリケーションの現状
- 個人ユーザーのコンピュータが PPP を介して ISP に接続し、インターネットにアクセスします。個人ユーザーと ISP の通信は、データリンク層では一般的に PPP です(PPPoE はイーサネット上で動作するプロトコルで、ISP がデジタルユーザー回線モデムやイーサネットなどのブロードバンド接続技術を介してユーザーにインターフェースサービスを提供できるようにします)。
- 広域ルーター間の専用回線
PPP の構成#
- 様々なプロトコルデータグラムのカプセル化方法(フレームへのカプセル化)
- リンク制御プロトコル LCP
- データリンクの接続を確立、構成、テストするために使用されます。
- 一連のネットワーク制御プロトコル NCPs
- それぞれのプロトコルは異なるネットワーク層プロトコルをサポートします。
PPP フレームのフォーマット#
PPP が透明な伝送の問題を解決し、データ部分にフレームの識別を追加#
- バイト指向の非同期リンク(バイトは基本情報単位)
- バイト充填法を使用し、エスケープ文字を挿入します。
- ビット指向の同期リンク(ビットは基本情報単位)
- ビット充填法を使用し、0 を挿入します。
バイト指向の非同期リンクの透明な伝送#
ビット指向の同期リンク#
ビット充填、0 を挿入し、以前も同様に行います。
PPP フレームのエラー検出#
テールの FCS フィールドでフレームチェックを行います。
循環冗長検査を使用します。
受信者は PPP フレームを受信するたびにCRC 検査を行います。
CRC 検査が正しい場合、そのフレームを受け入れます。そうでない場合、そのフレームを破棄します。
PPP を使用するデータリンク層は、上位に信頼性のないデータ伝送サービスを提供します。
ダイヤルアップ接続の例としての PPP#
10:15
開始と終了は静止状態です。
イーサネット#
データ通信の 3 つの方法#
- [[ユニキャスト]]:1 対 1 の通信
- [[ブロードキャスト]]:1 対全員の通信、送信された情報は全員に届く必要があります。
- == ローカルエリアネットワークは主に共有チャネル == の方式で通信を行い、主に採用される方式はブロードキャストです。
- イーサネット、無線 LAN
- [[マルチキャスト]]:1 対特定のグループの通信、特定のグループのユーザーに情報を送信します。
LAN と WAN におけるリンク層の違い#
メディアアクセス制御:データがチャネルを通じて伝送される過程での衝突問題を解決します。
- ローカルエリアネットワークでは、すべてのノードがチャネルを共有します。
- 広域ネットワークでは、ポイントツーポイントでチャネルの共有はなく、衝突もなく、メディアアクセス制御は必要ありません。
ポイントツーポイントデータリンク(広域ネットワーク)制御(ダイヤルリンク)
- メディアアクセス制御は不要です。
- 明示的な MAC アドレス指定は不要です。
- 一般的なプロトコル:HDLC、PPP
チャネルの 2 つの割り当て方法#
チャネルの静的割り当て#
ある方法に従って、事前に各ユーザーに割り当てられ、異なるユーザーの使用状況は異なります。
- 例:周波数分割多重、時間分割多重
- 1 人のユーザーが自分のものを得ると、他のユーザーと衝突することはありません。
チャネルの動的割り当て#
複数のユーザーが 1 つの回線を共有し、チャネルは需要に応じて動的にユーザーに割り当てられます(多重アクセスプロトコルを採用)。チャネルは事前に割り当てる必要はなく、オープンです。
- ランダムアクセス
- 特徴:サイトまたはユーザーがチャネルを争奪し、衝突が発生する可能性があります。
- 典型的なランダムアクセスプロトコル:ALOHA プロトコル、CSMA プロトコル、CSMA/CD プロトコル(共有イーサネットで採用されています)
- (順序付き)制御アクセスプロトコル —— 順次アクセス
- 特徴:サイトが明示的に割り当てられ、衝突が発生しません。
- 例:トークン方式
特殊な場合におけるリンク層のチャネル処理の細分化#
ブロードキャスト多重アクセスリンク(ローカルエリアネットワーク):メディアの競合が存在する可能性があるため
さらに細分化される可能性があります。
- メディアアクセス制御サブレイヤ
- メディアアクセス制御(MAC)サブレイヤは、メディアアクセスの競合と衝突問題を専門に処理します。
- 論理リンク制御サブレイヤ
データリンク層の主要なプロトコル#
- ポイントツーポイントプロトコル(Point-to-Point Protocol)
- イーサネット(Ethernet)
- 高度なデータリンクプロトコル(High-Level Data Link Protocol)HDLC プロトコル
- フレームリレー(Frame Relay)
- 非同期転送モード(Asynchronous Transfer Mode)
ローカルエリアネットワークの一般的な標準(イーサネットは有限ローカルエリアネットワーク)#
- IEEE 802.1 は一連のプロトコルの集合です:
- IEEE 802.1q は VLAN タグプロトコルを定義します。IEEE 802.1s はマルチ生成木プロトコルを定義します。
- 802.2LLC:基本的に使用されません。
- DIX イーサネット V2 イーサネット:LLC サブレイヤは不要です。なぜなら、接続のないデータパケット伝送サービスを実現しているからです。
- 802.3 ローカルエリアネットワーク:略してイーサネット(CSMA/CD アクセス制御方式を採用)
- 802.5 トークンリングネットワーク
- 802.4 トークンバスネットワークなど
- 802.11 無線 LAN:動作方式は DCF(分散制御)と PCF(中央制御)を採用します。
イーサネット#
- イーサネットの MAC 層にはフロー制御、ARQ、エラー訂正コード機能がありません。(これにより、イーサネットハードウェアを非常に容易かつ効率的に実装でき、コストを大幅に削減できます。安価で十分なため、イーサネットは非常に普及しています。)
- このように合理的に設計されている重要な前提は、有線であり、LAN であることです。この物理環境は誤り率が非常に低いことを決定します。単一ホップ伝送はほとんどエラーが発生せず、エラーが発生した場合、イーサネットはパケットを直接破棄し、上位層がパケットの喪失を検出して再送信します。
- もちろん、上位層での再送信のオーバーヘッドは、リンク層での再送信よりもはるかに大きいです。たとえば、TCP に再送信を行わせると、非効率的な点は、1 つはエンドツーエンドの再送信が明らかにネットワーク容量を消費するため、多くのホップを経由することになります。2 つ目は、TCP の検出タイミングがリンク層ほど迅速ではないため、再送信のトリガーが遅れることが多く、伝送性能に影響を与えます。
- WAN や無線ネットワークに目を向けると、データリンク層ははるかに複雑になります。この場合、長距離通信や無線チャネルは誤り率を急激に上昇させ、データリンク層が信頼性のある伝送を行わない場合、上位層に頼るのは非常に非効率的です。たとえば、802.11 ではフロー制御があります。3G や 4G のようなモバイル通信では、さらに複雑になります。
共有イーサネット#
イーサネットは最初に無源ケーブル(電源線を含まない)を共有バスとしてフレームを伝送するために使用し、ベースバンドバスローカルエリアネットワークに属し、伝送速度は 2.94Mb/s です。(共有バスの共有イーサネットとハブを使用した共有イーサネットがあります)
-
イーサネットは現在、従来の共有イーサネットからスイッチングイーサネットに進化し、伝送速度は 10Mb/s から 100Mb/s、1Gb/s、さらには 10Gb/s に向上しています。
-
イーサネットは現在最も普及しているローカルエリアネットワーク技術であり、トークンリング、FDDI、ARCNET などの他のローカルエリアネットワーク技術を置き換えました。(イーサネットはローカルエリアネットワーク技術の 1 つに過ぎません。)
ネットワークアダプタ#
- ネットワークカードと CPU の間の通信は、マザーボード上の I/O バスを介って行われ、並列伝送方式で行われます。
- ネットワークカードと外部イーサネット(ローカルエリアネットワーク)との間の通信は、一般的に == 伝送メディア ==(同軸ケーブル、ツイストペアケーブル、光ファイバー)== を介して == シリアル方式で行われます。
- 物理層とデータリンク層の機能を実現するだけでなく、以下のことも行います。
- 並列伝送とシリアル伝送の変換
- ネットワークの伝送速度とコンピュータ内部バスの伝送速度が異なるため、ネットワークカードのコアチップにはデータをキャッシュするためのメモリが含まれています。
- ネットワークカードドライバ == はネットワークカードのフレームの送信と受信を制御します。==
MAC アドレス#
- 複数のホストが同じブロードキャストチャネルに接続されている場合、2 つのホスト間で通信を実現するためには、== 各ホストが一意の識別子、すなわちデータリンク層アドレスを持っている必要があります ==。(コンピュータのネットワークカードがデータフレームが自分に送信されているかどうかを判断できるようにするため)
- 各ホストが送信するフレームのヘッダには、送信ホスト(ソースホスト)と受信ホスト(宛先ホスト)のデータリンク層アドレスが含まれています。この種のアドレスはメディアアクセス制御(Medium Access Control、MAC)に使用されるため、MAC アドレスと呼ばれます。
- MAC アドレスは一般的にネットワークカードの電気的に消去可能なプログラム可能な読み出し専用メモリ EEPROM に固定されているため、MAC アドレスはハードウェアアドレスとも呼ばれます。
- MAC アドレスは時には物理アドレスとも呼ばれます。(ipconfig/ip コマンドを使用して TCP/IP 設定情報を確認します)
- 物理アドレスの「物理」という言葉に惑わされて、物理アドレスがネットワークアーキテクチャの物理層に属すると誤解しないでください。(物理アドレスはデータリンク層に属します。)
==MAC アドレスはインターフェースの唯一の識別子です。==
MAC アドレスのフォーマット#
Bluetooth も MAC アドレスを占有します。
IEEE 802 ローカルエリアネットワークの MAC アドレス送信順序#
ユニキャストブロードキャスト MAC アドレスの例#
17:31
受信と受け入れの違いに注意してください。
ネットワークカードは、ネットワーク上で受信した各フレームをチェックし、フレームヘッダ内の宛先 MAC アドレスに基づいて以下のように処理します:
(1)宛先 MAC アドレスがブロードキャストアドレス(FF-FF-FF-FF-FF-FF)の場合、そのフレームを受け入れます。
(2)宛先 MAC アドレスがネットワークカードに固定されたグローバルユニキャスト MAC アドレスと同じ場合、そのフレームを受け入れます。
- グローバルユニキャスト MAC アドレスは、身分証明書に記載されている身分証明書番号のように、一意性を持ち、通常はユーザーの個人情報にバインドされています。したがって、ユーザーは自分が持っているグローバルユニキャスト MAC アドレスが漏洩しないようにすることをできるだけ確保する必要があります。
- ユーザーのデバイスが Wi-Fi ホットスポットに接続する際の MAC アドレス漏洩のセキュリティ問題を回避するために、現在ほとんどのモバイルデバイスはランダム MAC アドレス技術を採用しています。
(3)宛先 MAC アドレスがネットワークカードがサポートするマルチキャストアドレスの場合、そのフレームを受け入れます。
(4)上記の(1)、(2)、(3)以外の状況では、そのフレームを破棄します。
CSMA/CD プロトコルの基本原理#
目的は、バス上に多くの情報が同時に流通している場合、全員が一緒にいると衝突の問題に直面しやすくなることです。
- 共有バスイーサネットは天然の == ブロードキャスト特性 == を持ち、バス上の == あるステーションが別のステーションにユニキャストフレームを送信しても、フレームの == 信号はバス上の他の各ステーションに沿って伝播します。
- あるステーションがバス上でフレームを送信すると、== バスリソースはそのステーションによって独占されます ==。この時、バス上の == 他のステーションもフレームを送信しようとすると、信号 == が衝突します。
- 2 つ以上のステーションが同時にバスを使用してフレームを送信すると、信号が衝突します。
各ステーションがバスを争奪する問題を解決するために、共有バスイーサネットは専用プロトコル **CSMA/CD(Carrier Sense Multiple Access Collision Detection)** を使用します。
- キャリアセンスは、バスが空いていることを検出しますが、バスが必ずしも空いているわけではありません。
- CSMA/CD プロトコルを使用する共有バスイーサネット上の各ステーションは、衝突を避けるように努め、衝突が発生した場合にはバックオフして再送信する処理を行いますが、衝突を完全に回避することはできません。
- CSMA/CD プロトコルを使用する場合、送信中のステーションは「フレームを送信しながら衝突を検出しなければならない」ため、== ステーションは送信と受信を同時に行うことはできず ==、全二重通信は不可能で、半二重通信(双方向交互通信)のみが可能です。
CDMA(Code Division Multiplex Access)はコード分割多重アクセスの略です。CDMA の各ユーザーは、同じ時間に同じ周波数帯域を使用して通信できます。
TDMA(Time Division Multiplex Access)は時分割多重アクセスの略です。
時分割多重のすべてのユーザーは、異なる時間に同じ周波数帯域を占有します。
FDMA(Frequency Division Multiplex Access)は周波数分割多重アクセスの略です。周波数分割多重のすべてのユーザーは、同時に異なる周波数帯域リソースを占有します。
CSMA は競合型のメディアアクセス制御プロトコルであり、同じメディアに接続された複数のステーションがこのプロトコルを使用して競争的にデータフレームを送信し、衝突が発生する可能性があります(衝突とも呼ばれます)。
TDMA、FDMA、CDMA は一般的な物理層チャネル多重化技術であり、静的にチャネルを分割し、複数のユーザーがチャネルを共有し、衝突が発生しないようにします。
共有イーサネットの占有期間#
CSMA/CD プロトコルを使用する共有バスイーサネット上の任意のステーションがフレームを送信している間、他のステーションが衝突を検出するまでに最長でどのくらいの時間がかかりますか?
A:共有バスイーサネットの両端に位置する 2 つのステーションが送信するフレームが衝突する場合を考慮する必要があります。
例題:
共有イーサネットの最小フレーム長と最大フレーム長#
最小フレーム長:64 B
最小フレーム長 = バス伝播遅延 * データ伝送速度 * 2(最短フレーム長は 64 B で、到達しない場合はパディングします)
最大フレーム長:1518 B
フレームが長すぎると、バスが常に占有され、受信者ホストのバッファサイズに要求があります。
例題:
共有イーサネットのバックオフアルゴリズム#
https://www.bilibili.com/video/BV1rd4y1P7Zh?t=3.6
CSMA/CD プロトコルを使用する共有バスイーサネットでは、フレームを送信しているステーションはフレームを送信しながら衝突を検出し、衝突が検出されるとすぐに送信を停止し、ランダムな時間バックオフした後に再送信します。
- 共有バスイーサネットの各ステーションは、切り捨て二進指数バックオフ(Truncated Binary Exponential Backoff)アルゴリズムを使用して、バックオフのランダムな時間を選択します。
- 連続して衝突が発生した場合、同時に送信しようとするステーションが多すぎることを示します。しかし、上記のバックオフアルゴリズムを使用することで、再送信の平均時間を再送信の回数に応じて遅らせることができ(すなわち動的バックオフ)、衝突が発生する確率を減少させます。
- 16 回再送信しても成功しない場合、同時にフレームを送信しようとするステーションが多すぎて連続して衝突が発生していることを示します。この場合、再送信を放棄し、上位層に報告します。
- A. 再送信回数 k <= 10 の場合、k と 10 の最小値を選択します。k> 10 の場合、k = 10 を選択します。
- B. 0、1、2、3... 2^k - 1 の中からランダムに数 n を選択し、再送信時間は n 倍の基本バックオフ時間、すなわち 2τn です。
- C. 16 回再送信した時点で、そのフレームを放棄し、上位層にエラーを報告します。
共有イーサネットのチャネル利用率#
ハブを使用した共有イーサネット#
- イーサネットは、バスを置き換えるために大規模集積回路を使用し、非常に高い信頼性を持つデバイスである ** ハブ(Hub)** を開発しました。
- ステーションはハブに接続され、伝送メディアはより安価で柔軟なツイストペアケーブルを使用します。
共有バス型イーサネットとスター型トポロジーイーサネット#
物理トポロジー構造は異なりますが、本質的には同じで、動作ロジックは同じで、CSMA/CD プロトコルを使用して共有(競争)ネットワークリソースを使用します。
10BASE-T スター型イーサネット#
![](ipfs://QmdeczG