Для TCP-соединения, когда я отсоединяю кабель и через 30-40 секунд снова подключаюсь, проблем с потерей пакетов не возникает. Но когда время повторного подключения превышает несколько минут, все пакеты теряются. Я знаю, что это работает с таймером повторной передачи, но я хочу знать, что именно происходит, когда сетевой кабель отключен.
networking
connection
tcp
Вход J
источник
источник
windows mediasense
.Ответы:
По определению для многоуровневой модели, как OSI или TCP / IP, каждый уровень работает независимо и не знает о нижних уровнях.
Когда вы отсоединяете кабель, это физическое нарушение ( уровень 1 ), поэтому почти моментально Ethernet ( уровень 2 ) обнаруживает потерю сигнала (если вы работаете в Windows, вы увидите очень страшное всплывающее окно с информацией об отключении сети )
IP ( уровень 3 ) и TCP ( уровень 4 ) не заметят этого, поэтому они попытаются продолжать работать.
TCP не будет разрывать установленное TCP-соединение в течение определенного периода времени, потому что когда TCP отправляет данные, он ожидает ACK в ответ и, если он не приходит в течение определенного периода времени, он повторно передает данные.
TCP будет повторно передавать данные, передавая их по IP, который передает их в Ethernet, который не может их отправить и просто отбрасывает.
TCP будет ждать снова и повторять этот процесс, пока не истечет тайм-аут, позволяющий объявить, что соединение установлено. TCP сбрасывает порядковый номер сегмента, отбрасывает информацию, которую пытался отправить, и освобождает ресурсы буфера и памяти, выделенные для этого соединения.
Подключите кабель, прежде чем это произойдет, и все будет продолжаться. Это то, что делает TCP надежным и в то же время уязвимым для атак DDos.
Если ОС имеет более одного интерфейса (например, ethernet и wi-fi), возможно, что, когда ethernet выйдет из строя, он попытается через wifi. Это зависит от того, как настроена маршрутизация, но в общих чертах « TCP не будет об этом знать ».
Базовая структура DDoS-атак: тысячи клиентов открывают каждое TCP-соединение каждые несколько секунд к серверу, а затем прекращают соединение. Каждое TCP-соединение остается открытым на сервере в течение длительного времени (тратит впустую ценные активы, такие как TCP-порты, выделенная память, пропускная способность и т. Д.), Что приводит к засорению ресурсов сервера для посещения законных пользователей.
источник