Назад | Перейти на главную страницу

Потеря пакетов во время установления связи TCP

Мне нужно реализовать псевдо-TCP-рукопожатие, которое приводит к передаче файла. У меня нет проблем с передачей файлов: простая отправка-подтверждение. Что я не могу понять, так это то, как выполнить трехстороннее рукопожатие, предполагая, что во время одного из трех шагов произойдет потеря пакетов.

Например: мой клиент отправляет SYN-пакет. Если истекает время ожидания (потеря пакета или просто медленное) в ожидании SYN-ACK, он отправляет его повторно. Сервер отправляет SYN-ACK. Если время ожидания ACK истекло, повторно отправьте SYN-ACK. Теперь как клиент теперь получил его ACK?

Клиент не знает, что его ACK был получен, но почему его это волнует? Соединение устанавливается вне зависимости от того, получен ли ACK. Вы никогда не узнаете наверняка, что был получен последний отправленный пакет, поэтому вам нужно разработать протокол, который этого не требует.