# 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.