PPPの一般的なフレーム フォーマットやイーサネットなどのデータリンク レベルの規格を見ると、チェックサムが無効な場合に何が起こるかは明確ではありません。プロトコルは次のフレームの開始位置をどのように認識しますか?
次の「フラグ」の発生をスキャンするだけですか (PPP の場合)? もしそうなら、パケットのペイロードにたまたま「フラグ」自体が含まれていたらどうなるでしょうか? 私の要点は、パケットフレーミングまたは「長さ」フィールドが使用されているかどうかにかかわらず、「長さ」フィールドが破損している可能性があるか、「フレーミング」バイトがたまたまパケットの一部である可能性がある無効なパケットから回復する方法が明確ではないということです。パケット ペイロード。
更新:「GFP CRCベースのフレーミング」を検索して、探していたもの(厳密には私が尋ねたものではありません)を見つけました。通信ネットワークによると
GFP レシーバーは、スリーステート プロセスを通じて GFP フレーム境界に同期します。受信側は最初はハント状態にあり、一度に 4 バイトを調べて、最初の 2 バイトで計算された CRC が次の 2 バイトの内容と等しいかどうかを確認します。一致するものが見つからない場合、GFP は物理層によって与えられたオクテット同期送信を想定しているため、GFP は 1 バイトだけ前方に移動します。受信機が一致を見つけると、同期前の状態に移行します。この中間状態にある間、受信機は一時的な PLI (ペイロード長インジケータ) フィールドを使用して、次のフレーム境界の位置を決定します。成功したフレーム検出の目標数Nが達成された場合、受信機は同期状態に移行します。. 同期状態は、受信者が各 PLI を検査し、cHEC (コア ヘッダー エラー チェック) を使用して検証し、ペイロードを抽出して、次のフレームに進む通常の状態です。
つまり、各パケットは「長さ」と「CRC(長さ)」で始まります。文字をエスケープする必要はなく、パケットの長さは事前にわかっています。
パケット フレーミングには 2 つの主要なアプローチがあるようです。
- エンコーディング スキーム (ビット/バイト スタッフィング、マンチェスター エンコーディング、4b5b、8b10b など)
- 変更されていないデータ + チェックサム (GFP)
前者はより安全で、後者はより効率的です。ペイロードに有効なパケットが含まれており、行の破損により、後続のバイトに「フレームの開始」バイトシーケンスが含まれている場合、どちらもエラーが発生しやすくなりますが、それは非常にありそうにないように思えます。GFP の堅牢性を正確に把握するのは困難ですが、最新のプロトコルの多くは GFP を使用しているようです。