У передаванні даних і телекомунікаціях вставка бітів (bit stuffing, також, хоча й рідко, позитивне вирівнювання (positive justification)) — це вставлення до даних бітів, які не несуть інформації. Вставлені біти не слід плутати з службовими бітами.
Вставка бітів полягає в додаванні до потоку даних додаткових бітів, які не містять жодної корисної інформації. Ці вставлені біти відрізняються від службових бітів. Службові біти також не є даними, однак вони необхідні для передавання, наприклад ті, що використовуються в заголовках, контрольних сумах та іншій службовій інформації.
Вставка бітів використовується для різних цілей, наприклад для приведення бітових потоків, які не обов'язково мають однакові або раціонально пов'язані бітові швидкості, до спільної швидкості, або для заповнення буферів чи фреймів. Розташування вставлених бітів повідомляється приймальному кінцю каналу передавання даних, де ці додаткові біти вилучаються, щоб повернути бітові потоки до їхньої початкової бітової швидкості або початкової форми. Вставка бітів також може використовуватися для синхронізації кількох каналів перед мультиплексуванням або для узгодження швидкостей двох окремих каналів між собою.
Інше застосування вставки бітів — кодування з обмеженням довжини запису (run length limited coding): обмеження кількості послідовних бітів однакового значення в даних, що передаються. Після максимально допустимої кількості однакових послідовних бітів вставляється біт протилежного значення. Оскільки це є загальним правилом, приймачеві не потрібна додаткова інформація про розташування вставлених бітів, щоб виконати їх вилучення (de-stuffing). Це робиться для створення додаткових переходів сигналу, які забезпечують надійне приймання, або для екранування спеціальних зарезервованих кодових слів, таких як послідовності синхронізації кадру, якщо вони випадково трапляються в передаваних даних. Цей метод особливо корисний у ситуаціях, коли кадри даних передаються ненадійними каналами, наприклад бездротовими мережами або зашумленими мідними лініями зв'язку.
Вставка бітів не гарантує цілісності корисного навантаження (тобто того, що воно не було пошкоджене помилками передавання); це лише спосіб забезпечити, щоб передавання починалося і закінчувалося в правильних місцях. Для перевірки кадру на пошкодження після його отримання використовуються методи виявлення та виправлення помилок, а за потреби кадр передається повторно.
Вставка нульового біта
Схема кодування NRZI передає біт 0 як перехід сигналу, а біт 1 — як відсутність зміни сигналу. У цьому випадку вставку бітів найпростіше описати як вставку біта 0 після довгої послідовності бітів 1.
Цей метод був популяризований компанією IBM у протоколі SDLC (пізніше перейменованому на HDLC) і також використовується в USB низької та повної швидкості.
Після довгої послідовності бітів 1 у передаваних даних не відбувалося б жодних переходів сигналу, через що тактові генератори передавача й приймача могли б втратити синхронізацію. Вставляючи біт 0 після п'яти (у SDLC) або шести (в USB) послідовних бітів 1, передавач гарантує, що між переходами сигналу буде не більше шести (SDLC) або семи (USB) бітових інтервалів. Приймач може синхронізувати свій тактовий генератор за цими переходами, забезпечуючи правильне відновлення даних.
У SDLC передавана бітова послідовність 01111110, що містить шість суміжних бітів 1, є байтом прапорця. Вставка бітів гарантує, що така послідовність ніколи не з'явиться у звичайних даних, тому її можна використовувати як маркер початку й кінця кадру без ризику сплутати її зі звичайними даними.Kevin R. Fall and W. Richard Stevens, TCP/IP Illustrated Volume 1: The Protocols, Second Edition, Addison-Wesley, 2012, Kindle Edition loc 3505
Основним недоліком вставки бітів є те, що швидкість кодування є непередбачуваною: вона залежить від даних, які передаються.
Примітки