Traceroute

**Traceroute** ya da **İzleme Yolu** açık kaynak kodlu bir ağ analizi yazılımıdır.

Traceroute programı 1987 yılında Van Jacobson tarafından yazılmıştır.

Traceroute programı, TCP/IP ağlarında kaynak bilgisayardan hedef bilgisayara giden paketlerin hangi rotayı takip ettiğinin anlaşılması ve bu rotalardan geçerken meydana gelen gecikmelerin görülebilmesini sağlayan bir ağ aracıdır.

Traceroute programı tüm unix/Linux ve Microsoft Windows tabanlı işletim sistemlerinde bulunur. Microsoft Windows işletim sistemlerinde bu aracın adı "tracert" olarak da geçmekte olup Türkçeye İzleme Yolu adıyla aktarılmıştır.
      
Traceroute programın çalışabilmesi için veri paketinin üzerinden geçtiği hostlarda herhangi ek özelliğin bulunmasına gerek yoktur.

IPv6 desteği (traceroute6) vardır.

## Çalışma sistemi
       
Traceroute; IP başlığındaki TTL (time-to-live) alanını ve ICMP (Internet Control Message Protocol) kullanır.
      
TTL, IP başlığının (IP header) dokuzuncu baytında yer alır ve 8 bitlik bir alana sahiptir. TTL'in başlangıç değeri, IP paketinin oluşturulduğu işletim sistemi tarafından belirlenir. TTL değeri işletim sisteminden işletim sistemine farklılık göstermektedir. TTL değeri, IP paketinin üzerinden geçtiği her hop tarafından "bir" azaltılır. IP başlığındaki TTL alanının amacı, IP paketlerinin ağlarda sonsuz dolaşımının önüne geçmektir. Bir yönlendirici, TTL alanı 0 ya da 1 olan bir IP paketi almış ise bu paketi düşürür, başka bir yere yönlendirmez ve kaynak bilgisayara "ICMP TTL time exceeded” mesajı gönderir. "TTL time exceeded" mesajı ICMP başlığında "Type 11" ve "Code 0" değerlerini alacak şekilde tanımlanmıştır.

Linux işletim sistemine sahip olan bilgisayarlarda "traceroute" komutu, hedef bilgisayara UDP datagramları gönderir. Linux işletim sistemine sahip bilgisayarlar bunun yanı sıra, hedef bilgisayarlara "ICMP Echo Request" mesajları ya da TCP SYN segmentleri de gönderebilirler. Windows işletim sistemine sahip olan bilgisayarlar hedef bilgisayarlara UDP datagramları yerine "ICMP Echo Request" mesajları gönderirler.

"Traceroute" programı, hedef bilgisayara ilk olarak TTL alan değeri "1" olan üç adet paket gönderir. TTL değeri "1" yapılmış olan IP paketlerini alan birinci yönlendirici, bu paketleri bir sonraki -ikinci- yönlendiriciye göndermez, düşürür ve kaynak IP adresine "ICMP TTL time exceeded” (Type 11, Code 0) mesajını gönderir. "ICMP TTL time exceeded" mesajını alan kaynak bilgisayar bu sefer TTL değeri "2" olan üç adet IP paketini hedef bilgisayara gönderir. Bu paketleri alan birinci yönlendirici TTL değerini "1" düşürerek "1" yaparak ikinci yönlendiriciye iletir. İkinci yönlendirici TTL değeri "1" olan IP paketlerini bir sonraki yönlendiriciye göndermez, düşürür ve kaynak IP adresine "ICMP TTL time exceeded” (Type 11, Code 0) mesajını gönderir. Kaynak bilgisayar bu sefer TTL değer "3" olan üç adet paketi hedefe gönderir. İlk iki yönlendirici, yine TTL değerlerini "1" düşürerek IP paketlerini üçüncü yönlendiriciye iletir. Üçüncü yönlendirici yönlendirici TTL değeri "1" olan IP paketlerini bir sonraki yönlendiriciye göndermez, düşürür ve kaynak IP adresine "ICMP TTL time exceeded” (Type 11, Code 0) mesajını gönderir. Bu durum hedef bilgisayara ulaşana kadar TTL değeri "1" artırılarak devam eder. Kaynak bilgisayar tarafından üretilen üç adet IP paketi son olarak hedefe ulaştığında bu sefer hedef bilgisayar kaynak bilgisayar tarafından gönderilmiş olan bu IP paketlerine cevap verir. Bu şekilde hedef bilgisayara ulaşana kadar hangi "hop"lardan geçildiği "traceroute" ile tespit edilir.

Kaynak bilgisayar Windows işletim sistemine sahipse hedef bilgisayara "ICMP Echo Request" mesajları göndermiştir. (Type: 8, Code:0) Bu ICMP mesajları hedef bilgisayara ulaştığında hedef bilgisayar bu mesajlara ICMP Echo Reply mesajıyla cevap verir. (Type: 0, Code:0)

Kaynak bilgisayar Linux işletim sistemine sahipse hedef bilgisayara, hedef portunun kullanılmadığı düşünülen bir UDP datagram'ı gönderir. (Örneğin 29082 numaralı UDP portu hedef port olarak belirlenir.) Hedef bilgisayar bu UDP datagram'ını alır. 29082 numaralı portu açık olmadığı için de kaynak bilgisayara "ICMP Destination Port Unreachable" mesajını göndrerir. (Type: 3, Code: 3)

## Traceroute çıktısı

      meltem@meltem-pardus ~ $ traceroute  www.comu.edu.tr
      traceroute to www.comu.edu.tr (193.255.97.8), 30 hops max, 60 byte packets
        1  192.168.2.1 (192.168.2.1)  2.794 ms  3.320 ms  5.910 ms
        2  78.176.152.1 (78.176.152.1)  54.101 ms  59.571 ms  65.466 ms^[
        3  * * *
        4  izmir_t2_1-canakkale_t3_1.turktelekom.com.tr (81.212.26.113)  102.468 ms bursa_t2_2-canakkale_t3_1.turktelekom.com.tr (212.156.120.86)  125.490 ms izmir_t2_1-canakkale_t3_1.turktelekom.com.tr (81.212.26.113)  124.906 ms
        5  izm_t1_2-bursa_t2_2.turktelekom.com.tr (212.156.109.45)  125.920 ms izm_t1_1-izmir_t2_1.turktelekom.com.tr (212.156.120.5)  125.845 ms izm_t1_2-bursa_t2_2.turktelekom.com.tr (212.156.109.45)  127.406 ms
        6  uls_t1_2-izm_t1_2.turktelekom.com.tr (81.212.26.210)  144.937 ms  64.192 ms uls_t1_1-izm_t1_1.turktelekom.com.tr (212.156.120.21)  35.734 ms
        7  ulus_ebgp_1-uls_t1_2.turktelekom.com.tr (212.156.119.246)  63.097 ms ulus_ebgp_1-uls_t1_1.turktelekom.com.tr (212.156.119.242)  61.394 ms  65.089 ms
        8  ldn-b4-link.telia.net (213.248.100.253)  243.763 ms  245.669 ms  245.049 ms
        9  ldn-bb1-link.telia.net (80.91.249.131)  214.484 ms ldn-bb2-link.telia.net (80.91.249.133)  223.082 ms ldn-bb1-link.telia.net (80.91.249.131)  214.984 ms
        10  hbg-bb2-link.telia.net (80.91.250.222)  195.472 ms  199.938 ms  197.181 ms
        11  bpt-b2-link.telia.net (80.91.250.129)  196.374 ms bpt-b2-link.telia.net (80.91.250.133)  178.905 ms bpt-b2-link.telia.net (80.91.250.129)  205.910 ms
        12  invitel-ic-124609-bpt-b2.c.telia.net (213.248.70.50)  185.564 ms  153.012 ms  162.719 ms
        13  xe-0-2-0.bix-p2.invitel.net (213.163.54.158)  166.343 ms  171.663 ms  168.550 ms
        14  xe-0-3-0.ist-c1.tr.invitel.net (213.163.54.102)  184.971 ms  181.357 ms  216.235 ms
        15  79.120.130.82 (79.120.130.82)  106.037 ms  116.352 ms  121.945 ms
        16  * * *
        17  * * *
      
Çıktının ilk satırında hedefin IP adresi, tanımlanacak maksimum yönlendirici sayısı ve veri paketi büyüklüğü bilgileri bulunur.

Alt satırlarda TTL değeri, yönlendirici ya da hostun adı ve/veya ip adresi yer alır. Ardından gelen ms cinsindeki üç değer, o TTL değeri ile gönderilen üç veri paketinin, icmp mesajının gelişine kadar gecen sürelerdir. ICMP mesajı 4 saniye içinde gelmez ise yerine ekrana yıldız koyulur.

## Kullanım yerleri
    
Trauceroute ağda sorun gidermek için kullanılır. Kaynak IP adresinden hedef IP adresine doğru gidilecek rota üzerinde yönlendirme problemlerinin tespit edilmesini sağlar. Ayrıca hedef IP adresine doğru giderken geçilen hostlara verilen IP adreslerini görmeye ve ağ altyapısı hakkında bilgi sahibi olmak için kullanılır.

## Kaynakça

## Dış bağlantılar
* RFC 1393 - traceroute 
* RFC 792 - ICMP  
* traceroute.org
* IP Traceroute Servisi 
*  Traceroute test
* TCP/IP Illustrated- W.Richard Stevens
* Traceroute- Wiki English