Вопрос

Я читаю о реализациях надежного UDP (т. Е. Отправка пакетов ACK и снова отправляя ненушенные пакеты).

Из двух основных моделей, которые я, кажется, нахожу сетую сеть:

  1. Клиент отправляет ACK для каждого принятого пакета с последовательностью этого пакета. Сервер предполагает, что пакет не возрастает, если он не получает ACK.

  2. Клиент отправляет пакет ACK с последовательностями пакетов, которые он думает, отсутствуют. Сервер предполагает, что пакет доставляется, если он не получает ACK от клиента, говоря, что он отсутствует последовательность, то снова поправляется запрошенные (отсутствующие) пакеты.

Короче говоря, в 1. Клиенты посылают последовательность принятых пакетов, а в 2. Клиент отправляет последовательность пропущенных пакетов.

Просто удивляюсь, каковы плюсы / минусы каждого метода, и какой из них более распространен (я предполагаю, что 1, но 2 кажется очень умным способом, поскольку при условии, что большинство пакетов приезжают, и только несколько обычно теряются).

Редактировать: короткий пример на обоих методах:

Method 1: Server sends: 1,2,3,4,5 
Client received: 1,3,5,4 
Client sends back: ACK 1, ACK 3, ACK 5, ACK 4  
Server resends: 2.. maybe more if ACK packets were lost


Method 2:
Server sends 1,2,3,4,5,6,7,8
Client receives: 1,3,2,5,7
Client Sends :ACK (lowest continuous 3,highest received 7,  seem to be missing 4,6)
Server resends: 4,6,8
Это было полезно?

Решение

#2 Также известен как отрицательный ACK, AKA NAK, это оптимистичная точка зрения транспорта. Это означает, что масштабируется лучше, когда транспортировка функционирует правильно.

#1 это пессимистичная точка зрения и предполагает, что транспортировка будет часто потерпеть неудачу.

TCP использует ACKS, потому что существует фундаментальная зависимость от контроля затований для пакетов для выполнения трафика для создания справедливой сети. Надежные каналы UDP обычно используют NAKS, поскольку вы используете надежную высокоскоростную среду или низкопробный поток с требованием для низкой задержки на стадии блокировки, типичного для базовой реализации ACK.

Примечание. Если вы поднимаетесь на шаг выше и посмотрите на сказное управление подписки выше надежного канала UDP Нет четкого победителя для использования ACK или NAK. Мир рыночных данных доказал использование обеих технологий на высокой скорости на сетях высоких мощностей. У Acks есть преимущество, с подписками, которые вам не нужна сложная повторная синхронизация после неисправности сети, однако вы увидите последовательный пик использования сети и процессора, когда каждый хост выпускает повторную подписку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top