Traceroute - her paket TTL == 1


17

Bilgisayar ağlarında Wireshark lab-IP üzerinde çalışıyorum - Yukarıdan aşağıya bir yaklaşım ve normalde süresi dolan her paketin neden 1 TTL'ye sahip olduğunu anlamıyorum.

İşte benim Wireshark yakalama dosyam. https://www.dropbox.com/s/rr5wgze9j20gzvu/traceroute-56.pcapng?dl=0

tracerouteAşağıdaki komutla yürütüldüğü gibi , programın Linux'ta yürütülmesini ( 56 bayt seçeneği ile) yakaladım :

traceroute http://gaia.cs.umass.edu 56

Paketin çoğunun TTL == 1 olduğunu görebilirsiniz ve nedenini bilmiyorum, çünkü sonraki her atlamada TTL +1 (veya daha fazla) olduğunu öğrendim.

Not:

  • Ana bilgisayara köprülü ağ ile VMware üzerinde Lubuntu kullanıyorum.
  • Ana makinede wireshark ile yakaladım (Windows)
  • NAT protokolünün üstünde kendi DHCP sunucusunu kullanarak kablosuz bir AP'ye bağlıyım

Yanıtlar:


14

Buna cevap vermeye çalışayım , çünkü başlangıçta görünmesi biraz daha karmaşık.

Görünüşe göre zaten temel operasyonunu biliyorsunuz tracerouteama burada başka bir şeyden önce çok küçük bir özet var:

tracerouteana makinenizden bir hedef ana bilgisayara olan tüm aradaki adımları veya yalnızca ana makinenizden bir hedef ana makineye olan uzaklığı, yani atlama sayısını belirlemeye çalışır. Bunu yapmak için hedef ana bilgisayara "rastgele" bir hedef port numarası ve 1'den başlayan ve artmaya devam eden bir TTL ile paket göndermeye başlar.
Buradaki fikir, aradaki her yönlendiricinin TTL'yi 1 azaltmasıdır. Bu nedenle, TTL 0'a ulaşırsa (gerçekte, onu 0'a düşürmek üzere olan yönlendirici bundan önce bir hata oluşturduğundan asla yapmaz), yönlendirici bir ICMP döndürür " Zaman oturulabilir aşıldı " hata iletisi, örneğin paket numara 24 yakalama dosyasında. Bundan elde ettiğiniz şey, hedefinizin daha uzakta olması ve bu yüzden TTL'yi artırmaya devam etmenizdir.
Paketinizde hedefe ulaşmak için yeterince büyük bir TTL varsa, farklı bir ICMP hata mesajı alırsınız: " Hedefinize Ulaşılamıyor (Port Ulaşılamıyor) ", örneğin yakalama dosyanızdaki paket numarası 208 . Bundan elde ettiğiniz şey, son kullanılan TTL'nin gerçekten sizinle hedef düğüm arasındaki atlama sayısı olmasıdır. Hata almanızın nedeni, hedef düğümün (umarım) dinlemediği bir "rastgele" bağlantı noktasına bir mesaj göndermenizdir.

Şimdi yakalama dosyası için ayrıntılarına girmeden:
manuel sayfasından traceroutebiz görebilirsiniz her TTL 3 kez kullanılır (opsiyon 'q') ve kullanılan varsayılan protokoldür UDP (opsiyon '-P'). İlk 3 UDP paketini, yani 8-9-10 paketlerini inceleyerek TTL'nin 1 olduğunu görebiliriz . Sonraki 3, yani 11-12-13 , bir TTL 2'ye sahiptir . Yani kaynak bakış açısından her şey yolunda gidiyor gibi görünüyor.

Ardından, ağın gecikmesine bağlı bir süre sonra, beklenen hata mesajlarını almaya başlarız. Böylece, 24-25-26 paketlerinin " Yaşam süresi aşıldı " hata paketleri olduğunu görebiliriz ve böylece hedefin daha uzakta olduğu anlamına gelir.

Denemeler ve hataların bu ileri geri hareketi, son olarak, paket 208'e kadar devam eder ve " Port Ulaşılamıyor " hata mesajlarını görebilirsiniz, yani hedefinize ulaşıldı.

Gönderdiğiniz paketleri ve yanıtları sayarak, aslında TTL'nin gerçekten çalıştığı izden, ancak sıkıcı bir görevden öğrenebilirsiniz :)

Umut etti


süper açıklama
ksp0422

14

Müşteriniz sadece TTL 1 olan ilk üç paketi gönderiyor. Sonraki üç paket TTL 2 ile gönderilir. Sonraki üç paket TTL 3 ile gönderilir.

Bunu görmenin daha kolay bir yolu, IP TTL alanını Wireshark'ta kendi sütunu olarak ayarlamaktır. Herhangi bir paketteki TTL değerini sağ tıklayın ve "Sütun Olarak Uygula" yı seçin: Wireshark'ta TTL'yi Sütun olarak ayarlama

Oradan, 8,9,10 paketlerinin 1 TTL'ye sahip olduğunu ve 11,12,13 paketlerinin TTL 2'ye sahip olduğunu görebilirsiniz. Bir Traceroute'ta TTL

Bu oluyor çünkü Traceroute böyle çalışıyor. Bir Yönlendiricinin bir TTL değerini 0'a düşürdüğünde yapması avantajından yararlanır. Paketi yönlendirmeye devam etmek yerine, orijinal istemciye bir "Transit'te ICMP TTL Süresi Doldu mesajı" gönderir (yakalamanızdaki # 24 numaralı pakete bakın) .

Bu nedenle, istemci olarak, TTL 1 olan ilk paket kümesini gönderdiğinizde, yoldaki ilk yönlendirici TTL Süresi Dolmuş iletisiyle yanıt verir. Daha sonra, ilk iletileri gönderdiğinizde TTL Süresi Dolmuş iletisini almanın ne kadar sürdüğünü ölçersiniz ve bu, Traceroute çıktısında ilk üç değerinizi verir.

Daha sonra TTL 2 olan üç paket daha gönderirsiniz. Yoldaki ilk yönlendirici bunu 1'e düşürür ve daha sonra yoldaki bir sonraki yönlendiriciye iletir. Alım üzerine, ikinci yönlendirici onu aldığında, TTL'yi 0'a düşürür, bu da paketi bırakmasını ve size aktarılan TTL Süresi dolduğunu bildirmesini ister.

İşlem, müşteriniz, iz yolunuzu çalıştırdığınız son hedef arasında geçiş yapan her yönlendiriciden (kuyu, üç) TTL Süresi Dolmuş mesajı alana kadar devam eder.


en iyi görsel olarak açıkladı
ksp0422

@Eddie, Bu bu soru ile ilgili olmayabilir ama bu yorumda sormayı düşündüğüm çok az detay. Ana bilgisayar (yönlendirici değil) TTL alan 1 ile datagram alırsa ne olacağını belirtebilir misiniz?
Vimal Patel

1
@VimalPatel Paket anasisteme gönderildiyse, anasistem paketi kabul eder. TTL 0'a isabet ederse paketleri bırakmak bir yönlendirici işlevidir.
Eddie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.