Введение

В двухсторонней связи, когда принимается кадр, приемник ждет и не отправляет управляющий кадр (подтверждение или ACK) обратно отправителю немедленно. Приемник ждет, пока его сетевой уровень не передаст следующий пакет данных. Задержанное подтверждение затем добавляется к этому исходящему пакету данных. Этот метод временной задержки подтверждения с целью его присоединения к следующему исходящему пакету данных известен как "piggybacking" (комбинирование).

Принцип работы

Передача данных piggybacking несколько отличается от протоколов скользящего окна, используемых в модели OSI. В самом кадре данных мы добавляем одно дополнительное поле для подтверждения (т.е. ACK). Каждый раз, когда сторона А хочет отправить данные стороне B, она также включает дополнительную информацию ACK в PUSH. Например, если А получил от B 5 байт с порядковым номером, начиная с 12340 (до 12344), А также поместит "ACK 12345" в текущий пакет PUSH, чтобы сообщить B, что он получил байты до порядкового номера 12344 и ожидает получить 12345 в следующий раз. (Номер ACK – это следующий порядковый номер данных, которые должна отправить другая сторона.) Три правила регулируют передачу данных piggybacking. Если станция А хочет отправить как данные, так и подтверждение, она сохраняет оба поля. Если станция А хочет отправить только подтверждение, она выжидает некоторое время, чтобы определить, нужно ли отправлять кадр данных, а затем решает, отправить ли кадр ACK отдельно или прикрепить к нему кадр данных. Если станция А хочет отправить только данные, то предыдущее поле подтверждения отправляется вместе с данными. Станция B просто игнорирует этот дублирующий кадр ACK при получении.