Комбинирование подтверждений и данных в сетевых протоколах
Piggybacking (data transmission)
Задержка подтверждения (piggybacking) в двусторонней связи: объединение ACK с исходящим фреймом данных для повышения эффективности. Отличие от протоколов с окном.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
В двухсторонней связи, когда принимается кадр, приемник ждет и не отправляет управляющий кадр (подтверждение или ACK) обратно отправителю немедленно. Приемник ждет, пока его сетевой уровень не передаст следующий пакет данных. Задержанное подтверждение затем добавляется к этому исходящему пакету данных. Этот метод временной задержки подтверждения с целью его присоединения к следующему исходящему пакету данных известен как "piggybacking" (комбинирование).
In two way communication, whenever a frame is received, the receiver waits and does not send the control frame (acknowledgment or ACK) back to the sender immediately. The receiver waits until its network layer passes in the next data packet. The delayed acknowledgment is then attached to this outgoing data frame. This technique of temporarily delaying the acknowledgment so that it can be hooked with next outgoing data frame is known as piggybacking.
Принцип работы
Передача данных piggybacking несколько отличается от протоколов скользящего окна, используемых в модели OSI. В самом кадре данных мы добавляем одно дополнительное поле для подтверждения (т.е. ACK). Каждый раз, когда сторона А хочет отправить данные стороне B, она также включает дополнительную информацию ACK в PUSH. Например, если А получил от B 5 байт с порядковым номером, начиная с 12340 (до 12344), А также поместит "ACK 12345" в текущий пакет PUSH, чтобы сообщить B, что он получил байты до порядкового номера 12344 и ожидает получить 12345 в следующий раз. (Номер ACK – это следующий порядковый номер данных, которые должна отправить другая сторона.) Три правила регулируют передачу данных piggybacking. Если станция А хочет отправить как данные, так и подтверждение, она сохраняет оба поля. Если станция А хочет отправить только подтверждение, она выжидает некоторое время, чтобы определить, нужно ли отправлять кадр данных, а затем решает, отправить ли кадр ACK отдельно или прикрепить к нему кадр данных. Если станция А хочет отправить только данные, то предыдущее поле подтверждения отправляется вместе с данными. Станция B просто игнорирует этот дублирующий кадр ACK при получении.
Piggybacking data is a bit different from sliding window protocols used in the OSI model. In the data frame itself, we incorporate one additional field for acknowledgment (i. e., ACK). Whenever party A wants to send data to party B, it will carry additional ACK information in the PUSH as well. For example, if A has received 5 bytes from B, with a sequence number starting from 12340 (through 12344), A will place "ACK 12345" as well in the current PUSH packet to inform B it has received the bytes up to sequence number 12344 and expects to see 12345 next time. (ACK number is the next sequence number of the data to be pushed by the other party.) Three rules govern the piggybacking data transfer. If station A wants to send both data and an acknowledgment, it keeps both fields there. If station A wants to send the acknowledgment, after a short period of time to see whether a data frame needs to be sent, then decide whether send an ACK frame alone or attach a data frame with it. If station A wants to send just the data, then the previous acknowledgment field is sent along with the data. Station B simply ignores this duplicate ACK frame upon receiving.