Почему traceroute отправляет пакеты UDP, а не ICMP?

Согласно Стивенсу (TCP / IP Illustrated), программа traceroute отправляет пакеты UDP на хост назначения с инкрементным TTL (1, 2, 3 и т. Д.), Чтобы получить информацию о промежуточных переходах от ICMP TTL EXPIRED сообщения.
Условие «пункт назначения достигнут» - это сообщение ПОРТ ICMP НЕДОСТУПЕН, потому что traceroute адресует случайный порт с большим номером (то есть маловероятно, что кто-то его прослушивает. )
Итак, мой вопрос: есть ли техническая причина (недостатки, RFC и т. д.) для использования пакетов UDP вместо, например, сообщений эхо-запроса ICMP (с увеличением TTL) и использовать ответ эхо-ответ в качестве конечного условия?
Я понимаю, что эхо-ответ ICMP может быть отфильтрован межсетевыми экранами или другими сетевыми устройствами посередине, но я предполагаю, что это может происходить также с пакетами UDP;)

Большое спасибо
Серхио


person sergico    schedule 25.04.2012    source источник


Ответы (1)


На самом деле это «старый» метод трассировки маршрутов. Я предполагаю, что основная мотивация заключалась в том, что для отправки простых пакетов UDP не требуются специальные привилегии, в отличие от отправки пакетов ICMP (сырые сокеты или аналогичные). Вот почему, например, ping обычно устанавливается как root, что представляет большой риск с точки зрения безопасности.

В настоящее время traceroute также поддерживает пробные пакеты ICMP и TCP, так что вы, скорее всего, сможете проникнуть через брандмауэры, которые, скорее всего, будут развернуты без рассмотрения. Это также означает, что traceroute, вероятно, также имеет root-права в вашей системе. См. Его справочную страницу, особенно часть о доступных методах: http://linux.die.net/man/8/traceroute < / а>

person ldx    schedule 25.04.2012