Я пытался найти реализацию программы traceroute для MS Windows, которая могла бы использоваться обычным пользователем (без прав администратора), и я не смог ее найти. Те, кого я мог найти (например, tracetcp или nmap), нуждаются в библиотеке PCAP, и для установки winpcap, я думаю, требуются права администратора.
Я не знаю много о внутренностях Windows, но мне интересно, что за "магия" позади. Если tracert, поставляемый MS с Win OS, работает нормально для обычного пользователя (но он может использовать только ICMP), то есть ли проблема (техническое ограничение) с настройкой TTL для пакета TCP / UDP обычным пользователем и получением соответствующего ответа на сокете, такого как :
- ICMP: истек TTL в пути
- UDP: порт недоступен
- и, возможно, несколько других (например, TCP RST, недоступность хоста ICMP и т. Д.)?
Так в основном:
- если нет проблемы, почему нет разумной реализации traceroute
для окон?
- если есть технические ограничения для TCP / UDP, то почему
traceroute MS ICMP отлично работает для пользователей без прав администратора?
Я знаю, что для самой популярной в Linux трассировки с опцией -T (для использования зондов SYN) также требуются привилегии пользователя root, но я предполагаю, что это просто потому, что он не хочет завершать полное TCP-рукопожатие и отправку RST после получения SYN-ACK может быть ограничено для root. Как бы то ни было, пока TQL может быть установлен обычным пользователем (для UDP он работает нормально), тогда я мог бы представить, что трассировка TCP, завершающая полное TCP-рукопожатие, должна быть возможна для пользователей, не являющихся пользователями root?
Кстати, для трассировки ICMP также необходимы права администратора из-за использования сокетов RAW, но, к удивлению, для Windows это, похоже, не проблема.