フレーム内容の透過性
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/12 08:40 UTC 版)
「High-Level Data Link Control」の記事における「フレーム内容の透過性」の解説
実際に送受信されるバイナリデータはフラグシーケンスと同じビット列を含む可能性がある。そのまま送信した場合、受信する側はそのままフラグシーケンスと解釈し問題を生じ得るため、別のビット列に変換する必要がある。 同期リンク上での場合、その変換方法としてbit stuffingを使う。送信デバイスにおいて0の後ろに1が連続して5つ続いた場合、ハードウェア側でその後ろに0を挿入するといった変換を行う。受信デバイス側で0の後に1が5つ続きさらにその後ろに0があった場合、データと判断しその0を取り除く。1が6つ続いた場合はフラグシーケンスと判断して対応する。これをビットスタッフィングという。 bit stuffing元・受信データ:01111110 01111110 01111110 01111110 …送信データ :01111101 00111110 10011111 01001111 1010… シリアルポートやUniversal Asynchronous Receiver Transmitter (UART) のように8ビット(オクテット)単位で送出する非同期リンクにおいては、bit stuffingを行うと半端が出てしまうため別の変換を行う必要がある。代わりの変換方法は“byte stuffing”もしくは“octet stuffing”と呼ばれる。送信デバイスでデータ内のオクテットがフレームデリミタの“01111110”(0x7E)か、もしくはエスケープオクテットの“01111101”(0x7D)と同じであるものを検知すると、そのオクテットの前にエスケープオクテット“01111101”(0x7D)を挿入し、そのオクテットの先頭(最下位)から3番目のビット(16進数で20)の0と1を入れ替える。受信デバイスはエスケープオクテットを検知するとエスケープオクテットを削除し、次のオクテットの3番目のビットの0と1を入れ替える。その他の予約ビット列(XONやXOFFなど)やエスケープオクテット自体についても、必要であれば同様にしてエスケープできる。 octet stuffing元・受信データ:01111110 01010101 01111101 01011110 …送信データ :01111101 01011110 01010101 01111101 01011101 01011110 … また、符号化を強化したものとして、7バイト(7オクテット)データ中の各オクテットから末尾のビットを取り除き、取り除いたビットを8バイト目に集約させる方法も規格化されている。これにより全てのオクテットの末尾が0になるため、誤り制御の強化につながる。
※この「フレーム内容の透過性」の解説は、「High-Level Data Link Control」の解説の一部です。
「フレーム内容の透過性」を含む「High-Level Data Link Control」の記事については、「High-Level Data Link Control」の概要を参照ください。
- フレーム内容の透過性のページへのリンク