Когда я выполняю трассировку домена www.google.com со своего ноутбука, я использую icmp или udp?
Я думал, что это icmp type 11, но, ища что-то еще, я наткнулся на правила, в которых использовался icmp type 30, и я увидел правила, в которых использовался udp.
Может кто-нибудь объяснить мне, как это работает?
Я работаю над межсетевым экраном (iptables) для виртуального выделенного сервера.
Тип отправляемого пакета различается в зависимости от реализации. По умолчанию Windows tracert
использует ICMP и Mac OS X и Linux traceroute
использовать UDP. У меня нет под рукой машин BSD, Solaris или любой другой ОС, чтобы проверить, но на странице руководства для версии Mac OS X упоминается, что ее происхождение - BSD 4.3.
Версии для Mac и Linux, которые у меня есть, предлагают возможность выбора множества различных протоколов, включая пакеты ICMP, TCP, UDP и GRE. Другие протоколы можно указать по их имени или номеру, но traceroute ничего не знает о том, как работают другие протоколы. Он их просто слепо посылает.
Они также могут изменять полезную нагрузку и порты источника и назначения, чтобы избежать использования брандмауэров или обнаружить, какой маршрутизатор на пути отбрасывает пакеты определенного размера.
Все версии traceroute полагаются на ICMP типа 11 (Превышено время) ответов от каждого перехода по маршруту. Если ответы ICMP типа 11 блокируются вашим брандмауэром, traceroute не будет работать. Эти пакеты являются входящими, а не исходящими.
ICMP типа 30 специально предназначен для traceroute и помечен как «Запрос информации». Мне не удалось найти нигде, где это действительно используется. На странице руководства для версий Mac OS X и Linux говорится, что -I
пошлет ICMP типа 8 (эхо-запрос). Википедия говорит, что Windows tracert
также использует эхо-запросы ICMP. ICMP типа 30 или типа 8 - это исходящие пакеты, а не входящие.
ICMP типа 0 (эхо-ответ) может вернуться как самый последний пакет, когда TTL точно равно количеству переходов. Traceroute узнает о завершении, когда получит одно из них. Это входящий пакет.
TCP SYN пакеты вызовут либо RST
пакет или SYN ACK
пакет в ответ, когда они достигнут пункта назначения. Если вы получите SYN ACK
пакет, вежливо послать RST
пакет, чтобы не оставлять полуоткрытое соединение на сервере.
Это возможно получить ICMP тип 3 код 4 ответы вместо ответов ICMP типа 11, если вы отправляете большой пакет с установленным флагом «Не фрагментировать», однако это, скорее всего, позволит вам найти переход с наименьшим MTU. Обычно вы получите такой ответ только после одного перехода по маршруту. Не все из них.
Традиционный traceroute использует UDP для увеличения количества портов для каждого перехода.
Вы можете использовать любой тип пакета для его реализации - ICMP, TCP SYN и т. Д. Все, что требуется, - это истечение срока действия IP-пакета, и вы - золотые.
Различные реализации, такие как MacOS, предлагают поддержку нескольких типов трассировки, а также режимов, которые не увеличивают порты и т. Д., Для обхода ограничений брандмауэра.