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

Могу ли я остановить рукопожатие tcp, отправив icmp недоступного хоста

Это то, что случилось:

клиент - отправить синхрон

сервер - отправить icmp (недостижимый хост [я также пытаюсь добавить код = 10]) ждать 100 мс отправить синхронное подтверждение

client - отправить подтверждение в ответ на синхронное подтверждение.

Dosnt клиент должен сбросить рукопожатие tcp, когда был отправлен icmp недоступного хоста? Есть ли способ заставить клиента сбросить соединение, отправив какой-то ICMP?

Тест проводился на двух машинах Ubunto, подключенных напрямую. В wirehark я вижу, что icmp был восстановлен перед синхронизацией, и соединение не было сброшено. Клиент запускает telnet (через порт 80) на сервер. На сервере запустите apache. Я моделирую icmp перед синхронизацией с помощью python scapy.

Спасибо

Да клиент должен прекратить попытки подключения ... но:

  1. Многие безумные интернет-провайдеры блокируют ICMP или подмножество сообщений ICMP.
  2. Многие NAT не передают правильно входящие сообщения ICMP.
  3. Многие операционные системы блокируют ICMP на своем брандмауэре.
  4. Многие "защитные" пакеты блокируют ICMP.
  5. Не все IP-стеки правильно отвечают на ICMP.
  6. Не все приложения / API правильно реагируют на ICMP.

При этом описанная вами ситуация не только более распространена, чем должна быть, но и очень распространена.