@TOC
目次
1. リンク、データリンク、フレーム
1.リンク
リンクは、間に他のスイッチング ノードが存在しない、1 つのノードから隣接するノードへの物理回線 (有線または無線) です。
2.データリンク
データがリンク上で送信される場合、リンク自体が必要になるだけでなく、これらのデータの送信を制御するために必要な通信プロトコルも必要になります。これらのプロトコルを実装するハードウェアとソフトウェアをリンクに追加すると、データ リンクが形成されます。
3. フレーム
フレームは、データリンク層のピア エンティティ間の水平方向の論理通信のためのプロトコル データ ユニット (PDU) です。
(注: エンティティとは、信号を送受信できるハードウェアまたはソフトウェア プロセスを指します。
ピアエンティティとは、通信当事者の同じレベルにあるエンティティを指します。 )
2. データリンク層における 3 つの重要な課題
1. フレームへのカプセル化と透過伝送
1.1 フレームへのカプセル化
フレームへのカプセル化とは、データリンク層が、上位層によって配信されたプロトコル データ ユニット PDU にフレーム ヘッダーとフレーム トレーラーを追加してフレームを形成することを意味します。
フレームのヘッダーとトレーラーには、いくつかの重要な制御情報が含まれています。
受信側のデータリンク層は、物理層から配信されたビットストリームからどのようにフレームを抽出するのでしょうか?
答え:フレーム ヘッダーとフレーム トレーラーの機能はフレームの区切りです
上の図は PPP プロトコルのフレームのフォーマットで、フレームの先頭と末尾に 1B マークがあります。ただし、すべてのフレームの先頭と末尾にフレーム区切りフラグがあるわけではありません。図に示すように:
イーサネットが MACz フレームをカプセル化した後、そのフレームは物理層に配信されます。物理層はフレームに 8 バイトのプリアンブルを追加します と入力され、電気信号に変換されて送信されます。8 バイトのプリアンブルのうち、最初の 7 バイトがプリアンブルであることに注意してください。. 目的 受信機のクロックを同期させるために、 は 1- の始まりの区切り文字です。バイト フレーム。MAC フレームが後に続くことを示します。 イーサネットでは 96 ビットのフレーム間間隔が指定されているため、MAC フレームにはフレーム終了デリミタは必要ありません。
データリンク層でのフレーム送信の効率を向上させるには、フレームのデータ ペイロードの長さをヘッダーとテールの長さよりもできるだけ大きくする必要があります。
キャッシュ スペースやエラー制御の需要、その他多くの要因を考慮して、各データ リンク層プロトコルはフレームのデータ ロードの長さの上限、つまり最大転送単位 (MTU) を指定します。
1.2 透過的な送信
透過的な送信とは、あたかもデータリンク層が存在しないかのように、データリンク層が上位層によって配信される送信データに制限がないことを意味します。
図に示すように、送信側はフレームを送信しますが、フレームのデータ部分にはフレームの区切り文字と同じデータ列が含まれており、受信側がそのデータ列をフレームの区切り文字と間違えるのを防ぐためです。データを受信すると、送信することができます。 透過的な送信には 2 つの方法があります。
1.2.1 バイトパディング
バイト指向の物理リンクを使用する場合は、透過的な送信を実現するためにバイト スタッフィング方式を使用します。フレームを送信する前に、送信前にフレームをスキャンする必要があります。データ ロードがフレーム区切り文字と一致するデータで表示される場合、データ ロードはフレーム区切り文字によって変更されます。エスケープ文字(16 進数値は 1B) また、エスケープ文字と同じデータが出現する場合は、データの前にエスケープ文字を追加する必要があります。
1.2.2ビットパディング
ビット指向の物理リンクを使用する場合、透過的な伝送を実現するためにビット スタッフィング方式が使用されます。たとえば、データリンク層プロトコルが 8 ビット 0111 1110 の特定のビット列をフレーム区切り文字として使用する場合、送信側はフレームを送信する前にフレームのデータ ロードをスキャンします。1 のビットが 5 つ連続して現れたら、ビット 0 を追加するだけです。その後にフレーム区切り文字が含まれていないことを確認します。
受信側のデータリンク層がデータロードをネットワーク層に上方に配信する前にデータをスキャンするとき、1 のビットが 5 つ連続して現れるたびに、次の 0 を削除して元のデータロードを復元します。
2. エラー検出
実際の通信リンクは理想的ではなく、送信中にビットにエラー (ビット エラーと呼ばれます) が発生する可能性があります。
つまり、ビット 1 がビット 0 になる可能性があります。
ビット0がビット1になる可能性があります
2.1 パリティ効果
奇数パリティとは、送信するデータの後にチェックディジットを付加し、チェックディジット付加後のデータ全体の1ビットの数が奇数になるようにすることです。
偶数パリティとは、送信するデータの後にチェックディジットを付加し、チェックディジット付加後のデータ全体のビット1の数が偶数になるようにすることです。
送信されたデータにエラーがある奇数のビット数が発生した場合、ビット数のパリティ1には変更が含まれ、ビットエラーを検出できます。
送信データにおいて、偶数個のビットエラーが発生した場合、含まれるビット1の数のパリティが変化せず、エラーを検出できません(検出漏れ)。
もちろんパリティチェック方式は限られているので稀ですが、実際のデータリンク層では誤検出率が極めて低い巡回冗長検査によるエラーチェック技術が広く使われています。
2.2 巡回冗長検査
送信側と受信側は生成多項式 G(x) について合意します。
送信側は、送信するデータと生成多項式に基づいて誤り検出符号(冗長符号)を計算し、送信するデータの後ろに付加して送信します。
受信機は多項式を生成して受信データに誤りがあるかどうかを計算します。
簡単な例を挙げてみましょう。
送信するデータは101001で、多項式G(x) = x^3 + x^ 2 + 1を生成し、冗長コードを計算します。
ステップ 1: 被除数を作成する 送信するデータの後に、生成多項式の最高次数 0、つまり 101001000 を追加します。
ステップ 2: 除数を構築し、除数としての多項式の係数で構成されるビット列、つまり 1101 を生成します。
ステップ 3: 「バイナリ モジュロ 2 除算」を実行します。対応するビットに対して論理 XOR 演算を実行するのと同等です。
ステップ 4: 「余り」を確認します。余りの桁数は生成多項式の最高次数と同じでなければなりません。桁数が足りない場合は、余りの前に 0 を追加して桁数を補います。 。
受信した情報は 101101001、生成多項式は G(X)=
計算の最初の 3 つのステップは受信者と送信者の両方で同じですが、4 番目のステップは異なります。
受信機の 4 番目のステップ: 剰余は 0 であり、送信プロセスにエラーがないことを意味します。
残りは0ではありません。送信プロセス中に少しエラーが発生したと考えることができます
注: エラー チェックでは、フレーム送信中のエラーのみを検出できますが、エラーの場所を特定できないため、エラーを修正できません。
3. 確実な伝送
3.1 基本概念
エラー検出技術を使用して、受信側のデータリンク層は送信中にフレームにビットエラーがあるかどうかを検出できます。次に、データリンク層が上位層に提供するサービスの種類に応じて、送信の2つのタイプに分けられます。サービス:
(1) 信頼性の低い伝送サービス: エラーのあるフレームを破棄するだけで、他には何も行わない
(2) 信頼性の高い伝送サービス: 送信者が何を送信し、受信者が何を受信するかを実現する方法を見つけます。
一般に、有線リンクのビット誤り率は比較的低く、オーバーヘッドを削減するために、データリンク層は上向きに信頼性の高い伝送サービスを提供する必要はありません。ビットエラーが発生した場合でも、信頼性の高い伝送の問題は上位層で処理されます。
ワイヤレス リンクは干渉を受けやすく、ビット エラー レートが比較的高いため、データ リンク層は上位層に信頼性の高い送信サービスを提供する必要があります。
注: 信頼性の高い伝送サービスはデータ リンク層に限定されず、他のすべての層で信頼性の高い伝送を実現することを選択できます。
3.2 確実な伝送の実現機構——停止待機調整SW
停止待ちプロトコルの実装原理
(1) 送信側データの送信中にビットエラーが発生した場合
(2) 送信側のデータが受信側に届かなかった場合(タイムアウト再送)
受信側がデータパケットを受信できない場合、理由もなく対応する ACK を送信せず、何も対策を講じなければ、送信側は常に受信側の ACK を待つことになります。
この問題を解決するために、送信者はデータ パケットの送信後にタイムアウト タイマーを開始できます。タイムアウト タイマーが設定された時間に達すると、しかし、 受信者から確認パケット ACK を 受信しない場合、送信者は送信されたグループ化されたデータを 再送信します。
(3) 受信側の確認パケット情報が消失した場合(確認ロス)
ここでパケットが失われたことが確認されますが、タイムアウトタイマーで設定した時間を超えると送信者はパケットを再送しますが、受信者はこのパケットが以前に受信したパケットと同じかどうかをどうやって知るのでしょうか?このとき、データ パケットには番号を付ける必要があります。このパケットが前のパケットと同じかどうかを示すために必要なのは 1 ビットだけです。シーケンス番号には 0 と 1 だけが必要です。
(4) グループが遅刻していることを確認する
予防:
1. タイムアウト再送信メカニズムを使用した後は、拒否メカニズムを使用する必要がなくなり、プロトコルの実装が簡単になります。ただし、ポイントツーポイント リンクのビット エラー レートが高い場合、確認応答メカニズムを使用すると、送信者はタイムアウト タイマーが期限切れになる前にできるだけ早く再送信できるようになります。
2. 受信側が受信したデータ パケットが重複しているかどうかを判断するには、データ パケットに番号を付ける必要があります。 stop-wait プロトコルの特性により、シーケンスに番号を付けるのに必要なビットは 1 ビットだけです (シーケンス番号 0 とシーケンス番号 1)。
3. 送信者が受信した確認パケットが重複しているかどうかを判断するには、確認パケットにデータ パケットで使用されているビット数と同じ番号を付ける必要があります。
(1) データリンク層には通常、遅延確認パケットがないため、ストップアンドウェイトプロトコルはデータリンク層の確認パケットに番号を付ける必要がありません。
4.タイムアウト タイマーに設定するタイムアウト再送信時間 RTO は慎重に選択する必要があります。一般に、RTO は両方の平均往復時間 RTT よりもわずかに大きく設定されます。送り手と受け手。
5. stop-wait プロトコルは、自動リクエスト再送プロトコルに属します。つまり、再送信の要求は、受信者が送信者にエラーコード化されたデータ パケットの再送信を要求するのではなく、送信者によって自動的に行われます。
3.3 フォールバック N フレーム プロトコル
3.3.1 特徴
送信者は、送信ウィンドウ W_T を維持する必要があります。受信者から確認パケットを受信しない場合、送信者は、シーケンス番号が W_T 内にあるすべてのデータ パケットを継続的に送信できます。パケットの順序付けには n ビットを使用します。その後、 W_T は、値の範囲は 1
受信機は受信ウィンドウ Wr を維持する必要があります。受信機に正しく (エラーなしで) 到着し、シーケンス番号が Wr 以内に収まるデータ パケットのみが受信機で受信できます。
注: この Wr は 1 のみにすることができ、これは停止および待機プロトコルと同じです。
3.3.2 具体的なプロセス
受信側は、シーケンス番号が受信側のウィンドウに入るデータ パケットを正しく受信するたびに、受信ウィンドウを 1 つ前にスライドさせて、新しいシーケンス番号が受信ウィンドウに入るようにします。送信者にメッセージを送信し、このデータ パケットに対する確認パケットを送信します。
送信者がデータ パケットの確認パケットを受信するたびに、送信ウィンドウが 1 つ前にスライドして、新しいシーケンス番号が送信ウィンドウに入り、送信ウィンドウに入ったときにシーケンス番号を送信できます。
フォールバック N フレーム プロトコルでは、送信側の送信ウィンドウと受信側の受信ウィンドウが上記の規則に従ってスライドし続けるため、このタイプのプロトコルはスライディング ウィンドウ プロトコルになります。
3.3.3 利点
1. ネットワークに注入される確認パケットの数を減らす
2. パケット損失が確認された場合でも、データパケットを再送する必要がない場合があります。
フォールバック N フレーム プロトコルの受信側は累積確認応答方式を採用しているため、受信側はアレイ パケットを受信するたびに確認応答パケットを送信する必要がなく、代わりに、連続したシーケンス番号を持つ複数のデータ パケットを受信した後、受信側はデータ パケットを送信します。確認パケットとともに送信されます。確認パケット ACKn は、シーケンス番号 n と前のデータが正しく受信されたことを示します。
3.3.4 欠点
受信者が正しく受信したすべてのデータ パケットの数を送信者に迅速かつ正確に反映できない
これにより、一連の配列パケットを送信するときに、シリアル番号 5 のパケットにビット エラーがあると、そのパケットが破棄されてしまい、他のデータ パケットが受信パケットのデータと一致しないという不快な問題が発生します。これらのパケットはすべて破棄され、再送信を要求するために n 個の ACK5 が送信されます。1 つのデータ パケットのエラーにより、多数のデータ パケットが再送信される可能性があります。
チャネル品質が悪い (ビット エラーが発生しやすい) 場合、フォールバック N フレーム プロトコルのチャネル使用率はストップ アンド ウェイト プロトコルのチャネル使用率より高くありません。
注: 送信ウィンドウ W_T のサイズは値の範囲を超えることはできませんが、一度エラーが発生すると判断が困難になります。
送信者はパケット番号 0 ~ 7 を送信し、受信者は ACK7 確認パケットを受信して送信し、受信ウィンドウを 8 ビット進めて次の 0 を指しますが、ACK7 は送信プロセス中に失われ、送信ウィンドウは変化しません。確認パケットを受信するとタイムアウトとなり、パケット番号0から再送が開始されます。しかしこのとき、たまたま受信ウィンドウがパケット0の位置にあるため、そのパケットが新しいパケットなのか、前のスーパーマーケットが再送したパケットなのかを判断することはできない。
3.4 再送プロトコルの選択
再送信プロトコルは、パケット エラーを処理する際にフォールバック N フレーム プロトコルより効率的になるように最適化されており、受信ウィンドウはエラー パケットを直接スキップして他のパケットを受信し、その確認パケットを順番に送信します。エラーパケットシーケンス番号が受信されない場合、受信ウィンドウは前に進みませんが、パケットをスキップしてウィンドウ内の他のパケットを確認します。エラーパケットシーケンス番号が長時間受信されない場合、確認パケットはタイムアウト再送信を引き起こします。受信ウィンドウは、受信者が送信した確認サブリースを受信して受信するまで再送信されません。
3. ポイントツーポイントプロトコル
ポイントツーポイント プロトコル (PPP) プロトコルは、現在最も広く使用されているポイントツーポイント データ リンク層プロトコルです。
PPPフレームフォーマット
PPP透過伝送
フラグ フィールド: PPP フレームの区切り文字であり、値は、バイトの観点からは 0x7E、ビットの観点からは 01111110 です。
送信者の処理:
(1) データ ペイロードに表示される各 0x7E から 0x20 を減算し (XOR 0x20 に相当)、その前にエスケープ文字 0x7D を挿入します。
(2) データ ロードに元々 0x7D が含まれている場合は、各 0x7D から 0x20 を減算し、その前にエスケープ文字 0x7D を挿入します。
(3) データロードに現れる各 ASCII コード制御文字 (つまり、0x20 未満の値を持つ文字) に 0x20 (非制御文字に変換するための XOR 0x20 に相当) を追加し、その前に逃げてください。文字 0x7D。
受信側の処理:
送信側の逆変換を実行することで、バイト パディングのない元のデータ ペイロードを正しく復元できます。
PPP フレームの透過的な送信
データリンク層での一般的な問題について話すとき、PPP フレームを例にとりますが、1 のビットが 5 つ連続して出現するたびに、その後ろのビットが 0 で埋められます。
PPPフレームエラー検出
ここでの知識は前回の誤り検出でも触れましたが、フレーム区切りとフレーム検出順序を除いたFCSの計算範囲がFCSの計算範囲内であることが重要です。
PPP稼働状況
この記事のイラストは以下から引用しました。
胡科学技術大学教師の個人空間 - 胡科学技術大学教師の個人ホームページ - Bilibili動画 (bilibili.com)
複製は許可されています