Допустим, я создаю неисправный TCP-сервер, который говорит, например, другому
компьютер, через который будут проходить 7 пакетов, но только 6 будут отправлены.
Что бы сделал другой компьютер?
2 ответа
Сам протокол TCP никогда не определяет, сколько пакетов предполагается передать с сервера клиенту. Клиент просто отправляет пакеты ACK (подтверждение) обратно на сервер всякий раз, когда он получает пакет TCP. Протокол разработан с учетом неисправных сетей, поэтому сервер, не отправивший другой пакет, не причинит никакого вреда.
Теперь на прикладном уровне вы можете написать программный продукт, который ожидает количество переданных ранее байтов (например, менеджер загрузок), и наличие неисправного сервера действительно может привести к его неисправности. Но это выходит за рамки вашего вопроса.
Это зависит от того, как или если соединение было отключено. Если вы имеете в виду сбой системы и отправитель просто прекращает передачу, эта статья поможет объяснить сообщения активности, если они используются. Keepalive не требуется TCP.