High-Level Data Link Control
実際に送受信されるバイナリデータはフラグシーケンスと同じビット列を含む可能性がある。そのまま送信した場合、受信する側はそのままフラグシーケンスと解釈し問題を生じ得るため、別のビット列に変換する必要がある。
同期リンク上での場合、その変換方法としてbit stuffingを使う。送信デバイスにおいて0の後ろに1が連続して5つ続いた場合、ハードウェア側でその後ろに0を挿入するといった変換を行う。受信デバイス側で0の後に1が5つ続きさらにその後ろに0があった場合、データと判断しその0を取り除く。1が6つ続いた場合はフラグシーケンスと判断して対応する。これをビットスタッフィングという。
シリアルポートやUniversal Asynchronous Receiver Transmitter (UART) のように8ビット(オクテット)単位で送出する非同期リンクにおいては、bit stuffingを行うと半端が出てしまうため別の変換を行う必要がある。代わりの変換方法は“byte stuffing”もしくは“octet stuffing”と呼ばれる。