Bu yazımda ICMP yani Internet Kontrol Mesajı Protokolünden bahsedeceğim.
ICMP nedir ?
Adından anlaşılacağı gibi kontrol amaçlı bir protokoldür. Veri iletişimi sırasında belirli kontrolleri yapmak için kullanırız.İletişim sırasında herhangi bir hata durumu oluşursa veya farklı bir durum söz konusu olursa, ICMP’nin bize sağladığı geri bildirim sayesinde bu durumları tesbit edebiliriz.
Örneğin iletişime geçeceğimiz cihazın erişilebilir olup olmadığını veya gönderdiğimiz paketin hangi yollardan geçerek karşı tarafa ulaştığını ICMP sayesinde tesbit edebiliriz.
ICMP, OSI modeline göre 3. katman olan ağ katmanında IP ile beraber çalışır. Ve ICMP paketlerini üzerinde çalıştığı IP sürümüne göre adlandırırız.IPv4 üzerinde çalışıyorsa ICMPv4 ,IPv6 üzerinde çalışıyorsa ICMPv6 olarak adlandırırız.
Gelin şimdi ICMP paktinin yapısını ve mesaj tiplerini inceleyelim daha sonrada birkaç örnek yapalım.
Bir windows ICMP paketi uzunluğu 32 byte dır.
- 8 byte : Tip Alanı > Mesaj tipini belirtir.
- 8 byte : Kod Alanı > Hata veya Durum bilgisini belirtir.
- 16 byte : Toplam Kontrolü (Check Sum)
Mesaj Tip Değerleri ve Anlamları

Örnek – 1 :
aliozturk.com.tr e ping atalım ve trafiği inceleyelim.Bunun için cmd ekranımız açıyoruz ve “ping aliozturk.com.tr” yazıyoruz.

Şimdi de wireshark uygulaması üzerinden giden ve gelen paketleri inceleyelim.

4. Satırda 8 tip koduyla bir ping isteği yaptığımızı söylüyor. (Echo Request )

5. Satırda 0 tip koduyla bir yanıt geliyor. (Echo Reply).
Şimdide kapalı olan bir bilgisayara (Host) ping atalım ve nasıl bir cevap alacağımıza bakalım. ( ping 192.168.128.111 )

Ve isteğimizin zaman aşımına uğradığını söyleyen TTL exceeded cevabını aldık.
Örnek 2 ;
Şimdide traceroute kullanımına bakalım. Ama tabi traceroute ne yapar , nasıl çalışır ondan bahsedelim biraz.
Traceroute ( İz rotası ) göndediğmiz paketin hedefe varana kadar nasıl bir yol izlemiş onu gösterir. Yani hangi yönlendiricilerden geçmiş .Peki bunu nasıl yapıyor traceroute ?
Internette dolaşan herbir paketin TTL yani time-to-live ( yaşam süresi ) değeri vardır .Bu değer paket kaynaktan çıkmadan önce atanır (örn. 64 ) . Ve paket yönlendiricilerden geçerken herbir yönlendirici bu değeri bir azaltır . Bu değer sıfıra ulaştığı zaman paket yok edilir ve TTL exceeded mesajı alırız. Bu sayede paketler sonsuza kadar dolaşamazlar ve ağı işgal etmemiş olurlar.İşte traceroute ta bu TTL değeri azaltma olayında faydalanarak yönlediricileri tesbit eder.Öncelikle TTL süresini 1 olan bir yollar, paket ilk yönlediriciye geldiği zaman yönledirici paketin TTL ini bir azaltır ve TTL 0 olur, paket yok edilir .Ve yölendirici paketi yok ettiğini söylemek için kaynağa TTL exceeded yollar. Bu sayede 1. yönlediriciyi tesbit edilir .Sonra TTL süresini 2 olan başka bir paket yollar , bu paket ile de 2. yölendiriciyi belirler , daha sonra TTL süresi 3 olan paketi göderir 3. yönlendirici tesbit eder … bu işlem hedef e ulşılana kadar devam eder ve tüm yönlediriciler tesbit edilmiş olur.
Traceroute kullanmak için cmd ekranına “tracert aliozturk.com.tr” yazıyoruz.

Ve gördüğümüz gibi traceroute paketimizin aliozturk.com.tr gitmek için geçtiği yolları gösterdi.
Referanslar:
https://tr.wikipedia.org/wiki/Internet_Control_Message_Protocol