Поскольку traceroute необходимо получить сообщение, когда дейтаграмма UDP достигла места назначения.
Traceroute работает следующим образом:
- Отправляет дейтаграмму UDP с TTLкак 1 к хосту назначения. Маршрутизатор считывает дейтаграмму, уменьшает TTL и отправляет обратно сообщение об превышении времени ICMP.
- Traceroute получает вышеуказанное сообщение и отправляет другую дейтаграмму UDP с TTL как 2. Маршрутизаторы в Интернете читаютэта датаграмма, каждый уменьшает TTL и, наконец, отправляет обратно сообщение об превышении времени ICMP.
- Вышеприведенные шаги продолжаются и, наконец, с TTL, равным N, UDP-датаграмма достигла хоста назначения.Тогда что должен вернуть хост?Он не может отправить обратно сообщение об превышении времени ICMP, как раньше - TTL не превышен.
Проект трассировки для отправки дейтаграммы UDP на порт хоста, и почти невозможно, чтобы порт прослушивался (например, 33435
).Хост назначения получает дейтаграмму UDP, находит, что целевой порт дейтаграммы не прослушивается, а затем возвращает сообщение «Destination Unreachable» - точнее, «Port Unreachable».
Вот почему traceroute ожидает «Destination Unreachable»сообщение в последнем прыжке, чтобы определить, что дейтаграмма UDP уже достигла пункта назначения.
Кстати, если целевой порт случайно прослушивается на хосте назначения, это всего лишь сценарий, описанный Ги Харрисом: «если вы недостаточно неудачно, чтобы отправить пакет UDP на порт с прослушивателем "