Я читаю о реализациях надежного UDP (т.е. отправка пакетов ACK и повторная отправка пакетов без ACK снова).
Из двух основных шаблонов я, кажется, нахожу в сети:
Клиент отправляет ACK для каждого полученного пакета с последовательностью этого пакета. Сервер предполагает, что пакет не доставлен, если он не получает ACK.
Клиент отправляет ACK-пакет с последовательностями пакетов, которые, по его мнению, отсутствуют. Краткий пример обоих методов:
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