Я занимаюсь трассировкой маршрутов, мое приложение отправляет ICMP-запрос эха с ttl 0 каждый раз, когда я получаю сообщение о превышении времени, я увеличиваю ttl на один и возмущаюсь пакетом, но что происходит, у меня есть 2 маршрутизаторы в моей сети, я могу проследить маршрут через этот маршрутизатор, но третий прыжок всегда заканчивается тем, что он является одним из открытых серверов DNS таким же образом, что и каждый раз, независимо от того, где находится traceroute. AFAIK это правильная реализация traceroute, может ли кто-нибудь сказать мне, что я делаю неправильно?Traceroute Theory
ответ
Возможно, оба маршрутизатора подключены к одному и тому же партнеру, и вы получите описанное поведение.
Без дополнительной информации, на самом деле невозможно ответить на ваш вопрос.
«Маршрутизаторы подключаются к одному и тому же партнеру», можете ли вы объяснить, что вы имели в виду? –
Я имею в виду, что нет ничего особенно странного в том, что ваши маршрутизаторы маршрутизируются на одну машину. –
Хотя сложно сказать без какой-либо дополнительной информации, лучшим вариантом было бы установить пакетный сниффер - возможно, wirehark/www.wireshark.org - и сравнить пакеты icmp - то, что идет на провод с вашим traceroute, и что посылает система/usr/bin/traceroute (или \ windows \ system32 \ tracert).
Если у вас есть NAT маршрутизатор на пути он может ввернуть
У меня есть два маршрутизатора на пути, один из которых мой, который я использую внутри комнаты, другой принадлежит зданию, в котором я живу, в котором очень хочется возиться с моей связью, но регулярная трассировка отлично работает в этой ситуации. –
Я вижу. Этот «открытый DNS-сервер» - это также маршрутизатор «в здании» или где-то рядом? Вы пытались использовать обычную команду traceroute (с ICMP и UDP), чтобы увидеть, отличается ли результат? Без дополнительной информации я бы сделал вывод, что третий маршрутизатор, который также действует как DNS, блокирует ваши пакеты - возможно, потому что это также NAT. – joveha
Вы говорите, что если вы используете команду traceroute, она работает, но ваше приложение, которое имитирует traceroute, не работает? Видя код, вы можете помочь нам. – dbasnett
Первый пакет вашего красиво подстроенной TTL должен иметь ТТЛ 1, а не 0. Это звучит для меня как маршрута переадресации всех запрос ICMP на в определенном месте. Сделайте свое приложение в другом месте и посмотрите, работает ли он там. – dbasnett