質問

PPP などのデータリンク レベルの規格を検討する 一般的なフレームフォーマット または イーサネット, 、チェックサムが無効な場合に何が起こるかは不明です。 プロトコルは次のフレームがどこから始まるかをどのようにして知るのでしょうか?

次の「フラグ」の出現をスキャンするだけですか (PPP の場合)。もしそうなら、パケットのペイロードにたまたま「フラグ」自体が含まれていた場合はどうなるでしょうか?私が言いたいのは、パケット フレーミングまたは「長さ」フィールドが使用されているかどうかに関係なく、「長さ」フィールドが破損している可能性がある、または「フレーミング」バイトがたまたまパケットの一部である可能性がある無効なパケットから回復する方法が明確ではないということです。パケットペイロード。

アップデート:「GFP CRC ベースのフレーミング」を検索すると、探していたもの (厳密には質問した内容ではありません) が見つかりました。によると 通信ネットワーク

GFP 受信機は、スリーステート プロセスを通じて GFP フレーム境界に同期します。受信機は最初は ハント状態 ここでは、一度に 4 バイトを調べて、最初の 2 バイトで計算された CRC が次の 2 バイトの内容と等しいかどうかを確認します。一致が見つからない場合、GFP は物理層によって与えられたオクテット同期送信を想定するため、1 バイトずつ進みます。受信者が一致するものを見つけると、次の場所に移動します。 同期前の状態. 。この中間状態にある間、受信機は暫定的な PLI (ペイロード長インジケーター) フィールドを使用して、次のフレーム境界の位置を決定します。目標数字なら N フレーム検出が成功すると、受信機は次の状態に移行します。 同期状態. 。同期状態は、受信機が各 PLI を検査し、cHEC (コア ヘッダー エラー チェック) を使用して検証し、ペイロードを抽出して次のフレームに進む通常の状態です。

つまり、各パケットは「長さ」と「CRC(長さ)」で始まります。文字をエスケープする必要はなく、パケット長は事前にわかっています。

パケット フレーミングには 2 つの主なアプローチがあるようです。

  • エンコーディング スキーム (ビット/バイト スタッフィング、マンチェスター エンコーディング、4b5b、8b10b など)
  • 変更されていないデータ + チェックサム (GFP)

前者はより安全であり、後者はより効率的です。ペイロードにたまたま有効なパケットが含まれており、行破損によって後続のバイトに「フレームの開始」バイト シーケンスが含まれる場合、どちらもエラーが発生する傾向がありますが、それは非常にありそうもないことのように思えます。GFP の堅牢性を示す明確な数値を見つけるのは困難ですが、多くの最新プロトコルで GFP が使用されているようですので、何をしているのかわかっていると考えることができます。

役に立ちましたか?

解決

あなたはすでに正しい答えにかなり近いです。基本的にはプリアンブルで始まり、チェックサムと一致して何かに終了した場合、それはフレームだと上位層まで渡されます。

PPPとイーサネットの両方の次のフレーム開始信号を探します。イーサネットの場合には、プリアンブル、64交番ビットのシーケンスです。イーサネットデコーダがそれを見れば、それは単に次にくるものがあるフレームを前提としています。それは有効なフレームを持っている場合はビットをキャプチャして、チェックサムが一致するかどうかをチェックすることで、決定します。

フラグを含むペイロードについては、PPPでは、このような誤解を防ぐために、追加のバイトでエスケープされている。

他のヒント

PPP とイーサネットの両方には、フレーム化のためのメカニズムがあります。つまり、受信機が何が何であるかを見失う場合でも、次のフレームの先頭で認識できるように、ビット ストリームをフレームに分割するためのメカニズムがあります。これらはプロトコル スタックの一番下に位置します。プロトコルのその他の詳細はすべて、フレームの概念に基づいて構築されています。特に、プリアンブル、LCP、FCS はより高いレベルにあり、 ない フレーミングを制御するために使用されます。

PPP は、ダイヤルアップなどのシリアル リンクを介して、次のようにフレーム化されます。 HDLC のようなフレーム化. 。バイト値 0x7e はフラグ シーケンスと呼ばれ、フレームの開始を示します。フレームは次のフラグ バイトまで継続します。フレームのコンテンツ内にフラグ バイトが出現するとエスケープされます。エスケープは、制御エスケープ バイトとして知られる 0x7d を書き込むことによって行われ、その後にエスケープされるバイトが 0x20 と XOR 演算されます。フラグ シーケンスは 0x5e にエスケープされます。コントロール エスケープ自体も 0x5d にエスケープする必要があります。他の値が存在するとモデムが混乱する場合は、他の値もエスケープできます。その結果、受信機が同期を失った場合、0x7e を見つけるまでバイトを読み取って破棄することができ、その時点で再びフレームの先頭であることがわかります。次に、フレームの内容が構造化され、実際には重要ではないが、PPP パケット (プロトコル データ ユニット、PDU と呼ばれる)、およびフレーム チェックとともに、以前の IBM プロトコルから保持されているいくつかの奇妙な小さなフィールドが含まれます。シーケンス(FCS)。

イーサネットは、データではなくフレームの開始および終了マーカーとして認識できるシンボルを持つという論理的に同様のアプローチを使用しますが、予約されたバイトとエスケープ メカニズムを持たせるのではなく、区別できる特別な制御シンボルを表現できるコーディング スキームを使用します。データバイトから - 句読点を使用して一連の文字を分割するのと少し似ています。使用されるシステムの詳細は速度によって異なります。

標準 (10 Mb/s) イーサネットは、と呼ばれるものを使用してエンコードされます。 マンチェスター符号化, 、送信される各ビットは、ライン上の 2 つの連続するレベルとして表され、すべてのビットでレベル間の遷移が常に存在するため、受信機の同期を維持するのに役立ちます。フレーム境界はエンコード規則に違反することで示され、遷移のないビットが存在します (これを何年も前に本で読みましたが、オンラインで引用が見つかりません。これについては間違っている可能性があります)。実際、このシステムはバイナリ コードを 0、1、および違反の 3 つのシンボルに拡張します。

高速 (100 Mb/s) イーサネットは、 5b/4bコード, ここで、4 つのデータ ビット (ニブル) のグループは、回線上では 5 ビットのグループとして表され、マンチェスター方式を使用せずに直接送信されます。5 ビットへの拡張により、頻繁なレベル遷移の要件を満たすために使用される 16 の必要なパターンが選択され、受信機の同期を維持できるようになります。ただし、送信できるがデータ値に対応しない追加のシンボルを選択する余地がまだあり、事実上、ニブルのセットを 24 個のシンボル (ニブル 0 ~ F、および Q、I と呼ばれるシンボル) に拡張します。 、J、K、T、R、S、H。イーサネットは JK ペアを使用してフレームの開始をマークし、TR を使用してフレームの終了をマークします。

ギガビット イーサネットは高速イーサネットに似ていますが、コーディング スキームが異なります。光ファイバー バージョンでは、 8b/10bコード 5b/4b コードの代わりに、ツイストペア バージョンでは非常に複雑な 5 値コードの配置が使用されていますが、私にはよくわかりません。どちらのアプローチでも同じ結果が得られます。つまり、データ バイトまたは追加の特殊シンボルの小さなセットの 1 つを送信でき、それらの特殊シンボルがフレーミングに使用されます。

この基本的なフレーム構造の上に、固定のプリアンブルがあり、その後にフレーム区切り文字、およびさまざまな無意味な制御フィールド (こんにちは、LLC/SNAP!) が続きます。これらのフィールドの有効性はフレームを検証するために使用できますが、フレームを独自に定義するために使用することはできません。

私の知る限りでは、PPPは、誤り検出のみをサポートし、エラー訂正または回復のいずれかの形式をサポートしていません。

ここではシスコによってバックアップ:のhttp:/ /www.cisco.com/en/US/docs/internetworking/technology/handbook/PPP.htmlする

これ ウィキペディア PPP 回線のアクティベーション このセクションでは、RFC 1661 の基本について説明します。フレーム チェック シーケンスは、フレーム内の送信エラーを検出するために使用されます (前述の「カプセル化」セクションで説明)。

この Wikipedia ページにある RFC 1661 の図は、エラー発生時にネットワーク プロトコル フェーズがリンク確立からどのように再開されるかを説明しています。


また、Suv​​esh が参照した Cisco ページのメモ。

PPP リンク制御プロトコル

PPP LCP は、ポイントツーポイント接続を確立、構成、維持、および終了する方法を提供します。LCP は 4 つの異なるフェーズを経ます。

まず、リンクの確立と構成のネゴシエーションが行われます。ネットワーク層のデータグラム (IP など) を交換する前に、LCP はまず接続を開いて構成パラメーターをネゴシエートする必要があります。このフェーズは、構成確認フレームの送信と受信の両方が完了すると完了します。

続いて、リンク品質の判定が行われます。LCP では、リンク確立および構成ネゴシエーション フェーズに続いて、オプションのリンク品質決定フェーズが可能です。このフェーズでは、リンクの品質がネットワーク層プロトコルを起動するのに十分であるかどうかを判断するためにリンクがテストされます。このフェーズはオプションです。LCP は、このフェーズが完了するまでネットワーク層プロトコル情報の送信を遅らせることができます。

この時点で、ネットワーク層プロトコル構成のネゴシエーションが発生します。LCP がリンク品質判定フェーズを完了すると、ネットワーク層プロトコルは適切な NCP によって個別に設定でき、いつでも起動および停止できます。LCP がリンクを閉じると、ネットワーク層プロトコルに通知して、適切なアクションを実行できるようにします。

最後に、リンクの終了が発生します。LCP はいつでもリンクを終了できます。これは通常、ユーザーの要求に応じて行われますが、キャリアの喪失やアイドル期間タイマーの期限切れなどの物理的なイベントが原因で発生する場合もあります。

LCP フレームには 3 つのクラスが存在します。リンク確立フレームは、リンクを確立および構成するために使用されます。リンク終了フレームはリンクの終了に使用され、リンク維持フレームはリンクの管理とデバッグに使用されます。

これらのフレームは、LCP の各フェーズの作業を実行するために使用されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top