Тип надісланого пакету відрізняється залежно від реалізації. За замовчуванням 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 заблоковані вашим брандмауером, трасування не буде працювати. Ці пакети є вхідними, а не вихідними.
Тип 30 ICMP спеціально призначений для 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 . Зазвичай ви отримаєте таку відповідь лише з одного стрибка по маршруту. Не всі вони.