Apakah traceroute menggunakan UDP atau ICMP atau keduanya?

24

Ketika saya melakukan pelacakan di domain www.google.com dari laptop saya, apakah saya menggunakan icmp atau udp?
Saya pikir itu icmp tipe 11 tetapi ketika mencari sesuatu yang lain saya menemukan aturan di mana icmp tipe 30 digunakan dan saya melihat aturan di mana udp digunakan.
Adakah yang bisa menjelaskan kepada saya bagaimana cara kerjanya?
Saya sedang mengerjakan firewall (iptables) untuk server khusus virtual.

Keris
sumber

Jawaban:

26

Jenis paket yang dikirim berbeda tergantung pada implementasinya. Secara default Windows tracertmenggunakan ICMP dan Mac OS X dan Linux traceroutemenggunakan UDP. Saya tidak memiliki mesin BSD atau Solaris atau OS lain untuk memeriksa tetapi halaman manual untuk versi Mac OS X menyebutkan asalnya adalah BSD 4.3.

Versi Mac dan Linux yang saya tawarkan menawarkan kemampuan untuk memilih berbagai protokol yang berbeda termasuk paket ICMP, TCP, UDP dan GRE. Protokol lain dapat ditentukan dengan nama atau nomor mereka tetapi traceroute tidak tahu apa-apa tentang cara kerja protokol lain. Itu membabi buta mengirim mereka.

Mereka juga dapat mengubah muatan dan port sumber dan tujuan untuk menghindari firewall atau menemukan router mana di sepanjang jalur yang menjatuhkan paket dengan ukuran tertentu.

Semua versi traceroute mengandalkan respons ICMP tipe 11 (Waktu terlampaui) dari setiap lompatan di sepanjang rute. Jika respons ICMP tipe 11 diblokir oleh firewall Anda, traceroute tidak akan berfungsi. Paket-paket ini adalah inbound, bukan outbound.

ICMP tipe 30 dirancang khusus untuk traceroute dan dilabeli sebagai "Permintaan Informasi". Saya belum dapat menemukan di mana pun ini benar-benar digunakan. Halaman manual untuk versi Mac OS X dan Linux mengatakan bahwa -Iakan mengirim ICMP tipe 8 (permintaan gema). Wikipedia mengatakan bahwa Windows tracertjuga menggunakan permintaan gema ICMP. ICMP tipe 30 atau tipe 8 adalah paket keluar, bukan masuk.

ICMP tipe 0 (respon gema) dapat kembali sebagai paket terakhir ketika TTL persis sama dengan jumlah hop. Traceroute akan tahu bahwa itu telah selesai ketika menerima salah satunya. Ini adalah paket masuk.

Paket TCP SYN akan menyebabkan RSTpaket atau SYN ACKpaket sebagai respons ketika mereka mencapai tujuannya. Jika Anda menerima SYN ACKpaket, sopan untuk menindaklanjuti RSTpaket agar tidak meninggalkan koneksi setengah terbuka di server.

Dimungkinkan untuk mendapatkan respons ICMP tipe 3 kode 4 alih-alih respons ICMP tipe 11 jika Anda mengirim paket besar dengan set flag "Jangan pisah", namun ini hanya memungkinkan Anda untuk menemukan hop dengan MTU terkecil. . Anda biasanya hanya akan mendapatkan respons semacam ini dari satu lompatan di sepanjang rute. Tidak semuanya.

Ladadadada
sumber
8

Traceroute tradisional menggunakan UDP pada port yang bertambah untuk setiap hop.

Anda dapat menggunakan paket apa pun untuk mengimplementasikannya - ICMP, TCP SYN, dll. Yang diperlukan hanyalah paket IP yang kedaluwarsa dan Anda berwarna emas.

Berbagai implementasi, seperti MacOS, menawarkan dukungan untuk beberapa jenis traceroute, serta mode yang tidak menambah port, dll, untuk memotong pembatasan firewall.

Daniel Pittman
sumber
7
Port UDP default pada implementasi mirip-unix adalah dari 33434 hingga 33534. Implementasi ICMP menggunakan "permintaan gema" (tipe 8).
Ouki