Как traceroute и tracepath выполняют сходную функцию по-разному?
Обе программы по существу делают одно: отправляют и получают определенные IP-пакеты.
Для этого вы можете использовать обычный API сокетов или манипулировать необработанными пакетами из интерфейса. API сокетов не требует привилегий суперпользователя, поскольку он достаточно безопасен. Существуют механизмы, встроенные для предотвращения доступа одной программы к IP-пакетам, созданным другой программой.
Tracepath использует API сокетов для всей своей функциональности. Traceroute манипулирует необработанными пакетами для некоторых своих функций.
Что делает traceroute, для чего требуются права суперпользователя, а чего нет?
Он манипулирует необработанными пакетами.
Чтобы манипулировать необработанными пакетами, вам нужны привилегии суперпользователя, потому что, делая это, вы обходите механизмы безопасности API сокетов. Вы получаете доступ к сообщениям всех других процессов и пользователей, использующих этот интерфейс. Подумайте, что мог бы сделать вирус, если бы мог манипулировать необработанными пакетами.
Существуют ли сценарии, в которых лучше использовать tracepath, а не traceroute, или наоборот?
Одна из расширенных команд, доступных в Traceroute, - это возможность запуска сетевой трассировки с использованием протокола IPv4 или IPv6. Для зонда также можно выбирать между форматами данных ICMP, TCP или UDP. Traceroute может выбрать конкретные исходные маршруты для зонда и выбрать порт для отправки. Он может устанавливать пределы минимального и максимального TTL для приема от исходящего зонда. Кроме того, Traceroute может показывать время ожидания для ответных эхо-запросов, а также устанавливать, сколько пакетов отправляется в каждом тесте и сколько тестов для отправки. Некоторые из этих команд могут не поддерживаться сетевым оборудованием вдоль пути, которое может завершить зонд до того, как он достигнет своего конечного пункта назначения.
источники:
1
2
3
Вы можете использовать
traceroute
для расширенного сетевого отслеживания, вы можете выбрать между протоколами IPv4 и Ipv6, вы также можете выбрать между форматами данных ICMP, TCP или UDP для зонда.Так что
traceroute
имеет более продвинутые опции, чем те,tracepath
которые используют UDP-пакеты для трассировки.Теперь о привилегиях суперпользователя :
Вы можете использовать
traceroute
как с обычным пользователем, так и с суперпользователем, который зависит от опции, которую вы хотите использовать, вот пример:Здесь мы используем UDP- пакеты, которым не нужны привилегии суперпользователя
Здесь мы используем эхо-пакеты ICMP , которым нужны привилегии.
С помощью ICMP- пакетов вы можете совершить DDOS-атаку.
Чтобы узнать о возможностях ICMP Traceroute Man Page
Для просмотра
traceroute
параметров введите в терминалеman traceroute
ICMP нужны привилегии суперпользователя, чтобы гарантировать, что только его администраторы могут использовать некоторые из его опций, потому что он может использоваться для проверки смерти и сбора информации о конкретной сети, привилегия здесь даст суперпользователю возможность изменять опции, используя ICMP пакеты.
То, что вы можете видеть это, когда вы пытаетесь пинговать так, как веб-сайты
www.microsoft.com
, ваш пинг не будет работать даже онлайн, и это потому, что маршрутизаторы Microsoft блокируют ICMP_requests.Поэтому linux защищает систему от непривилегированного пользователя, поэтому они не могут использовать эти команды для атаки.
источник
я думаю, что вы должны прочитать это http://www.ehow.com/list_7526520_differences-between-traceroute-tracepath.html
Из приведенной выше ссылки:
источник
traceroute
требуется доступ суперпользователя (тем более , что он на самом деле кажется , что это делает меньше , чемtracepath
по умолчанию)? И, кроме сценариев, когда вы не являетесь суперпользователем, почему вы должны выбирать один из других?ping
иtraceroute
использовать протокол ICMP. Как и UDP и TCP, это доступно через обычный API сокетов. Только номера портов UDP и TCP менее 1024 защищены от использования, кроме как root. ICMP свободно доступен для всех пользователей.Если вы действительно хотите увидеть, как работают ping и traceroute, вы можете загрузить пример реализации кода C для них из CodeProject .
Короче говоря, они просто открывают сокет ICMP, и traceroute изменяет приращения TTL, используя setsockopt, пока цель не будет достигнута.
Источник: Ссылка
источник