ICMP ( Internet Control Message Protocol )

ICMP ( Internet Control Message Protocol ) adından da anlaşılacağı üzere bir kontrol protokolüdür. IPv4 de veri haberleşmesi için bu protokole ihtiyaç yoktur. Ancak IPv6 için ICMP çok önemlidir çünkü IPv6 da haberleşme için gerekli olan bir takım bölümler ICMP içine eklenmiştir. ICMP İnternet Katmanında IP paketinin veri bölümünde çalışıp, sorunları haberleşen birimlere bildirerek bir geri besleme mekanizması oluşturur. 

IPv6 da “ARP” Protokolünün karşılığı “Neighbour Discovery” protokolüdür. Bu protokol ICMPv6 ya eklenmiştir. Yani ICMP olmadan IPv6 olamaz.

ICMP protokolü genel olarak IPv4 ve IPv6 da ortak bir takım mesajlar vardır. ICMPv4 ve ICMPv6 için ortak olan ICMP mesajları üç bölümden oluşmaktadır.

  • Host reachability –> ( Host Erişilebilirliği )
  • Destination or Service Unreachable –> ( Hedef veya Hizmete Ulaşılamıyor )
  • Time exceeded –> ( Zaman Aşımı Yapıldı, TTL Değeri Sıfırlandı )

Host Reachability : Bağlantı testi için kullanılan özelliktir. Mesela ping paketleri ile cihazın açık olup olmadığını test etmemizi sağlar.

Destination or Service Unreachable : Normal bir paket gönderildiğinde IP ye yardımcı olur. Bir şekilde paket hedefe ulaşamazsa bizi bilgilendirir.

Örneğin, Router bir şekilde paketi hedefe ulaştıramazsa bize bu mesajı dönecektir. Ya da sunucuda o hizmet yoksa bize ICMP hata mesajı gönderecektir.

Time Exceeded : Time exceeded TTL değerinin sıfırlanması yani paketin yaşam ömrü biterse bu mesaj router tarafından iletilecektir. Örneğin paket routing loop düşerse ve TTL sıfırlanırsa, son router bize bu mesajı gönderecektir.

ICMP bir üçüncü katman protokolüdür. ICMP protokolünün 4. katmanla işi yoktur. Buna bağlı olarak ta port numaraları v.s gibi değerler ICMP paketinde bulunmamaktadır. ICMP, IP paketinin üzerine eklenir. Yani normal datanın yerine “ICMP Header” başlığı eklenir. Başlık aşağıdaki gibidir.

ICMP Header” içerisinde “Type” ve “Code” bölümü çok önemlidir. Burada yapılan değişiklikler ICMP paketinin içeriğini belirtir.

Aşağıdaki tabloda “Type” ve “Code” bölümününe göre değişiklikliği görebiliriz.

“Type: 3” “Code: 0” –> Nasıl gideceğimi bilmiyorum.

“Type: 3” “Code: 1” –> Sunucu kapalı olabilir. Ulaşamıyorum.

“Type: 3” “Code: 2” –> Bu protokol bilinmiyor. “Protocol” bölümüne “TCP ( 6 )” “UDP ( 17 )” “ICMP ( 1 )” yazıyorduk. Bu alana 100 yazılırsa sunucu bu protokolü bilmiyorsa bu mesajı diyecek.

“Type: 3” “Code: 3” –> Bu mesaj örneğin hedef porta 21 yazdık. Ancak bu porta hedefte çalışmıyorsa bize bu mesaj gönderilecektir.

“Time Exceeded” mesajı ICMP içine “Type : 11” ve “Code : 0” yazılır. Paket “routing loopa” düşerse “TTL” değeri sıfırlanacaktır. Son router bize bu mesajı gönderecektir.

TTL değeri sıfırlanırsa yukarıdaki gibi bir mesaj alacağız.

Ping paketinin içeriğini aşağıdaki “Wireshark” çıktısında görüntüleyebiliriz.

Örnekte “Type: 0” ve “Code : 0” görüyoruz. Bu da “Echo Reply” yani sunucu tarafından bize gönderilen ping paketidir.

Ping ve Traceroute Testleri

Ping, ana bilgisayarlar arasındaki bağlantıyı test etmek için ICMP echo isteği ve ICMP echo yanıtlarını kullanan IPv4 ve IPv6 da kullanılan yardımcı bir programdır.

“Ping” aracı ile kullanabileceğimiz bazı parametreler var.

ping -t –> Sonsuz ping paketi atılır.

ping -l –> Ping paketinin boyutunu belirleyebiliriz. Normalde 32 byte gider.

ping -w –> Zamanla ilgili parametredir. Default olarak bir paketin sunucuya ulaşması 2 saniye beklenir. Eğer gecikme varsa bu süreyi arttırabiliriz. Buradaki değer milisaniye cinsinden girilmektedir. Örneğin gecikmenin çok olduğu bir ağda bu süreyi üç saniyeye çıkarmak için 3000 yazmamız gerekmektedir.

Ping paketleri bir domain veya IP adresine atılabilir. Eğer “Domain” sorgusu yapılırsa ilk olarak “DNS” sunucusundan “IP” adresi sorgulanır.

“Time” bölümü paketin bir noktaya gidip geri dönmesi sonucu oluşan süredir. Bu süreye “Round Trip Time” süresi denir.

Network cihazlarından da ping atılabilir. Eğer ping atılırsa aşağıdaki gibi bir görüntü oluşacaktır.

Ünlem işareti (!) olursa paketin başarılı bir şekilde gittiğini görebiliriz.

Nokta (.) işareti olursa paketin yolda bozulduğunu anlayabiliriz.

Traceroute aracı ping paketine yardımcı olan ve paketin yol boyunca geçtiği routerlari listeler.

Aracın iki farklı kullanım yolu var. Bilgisayarlarda ve routerlarda yazım yöntemi farklıdır.

Yukarıdaki örneğe bakacak olursak 10.0.0.1 kaynak cihazımız ve 192.168.1.2 hedef cihazımızdır. UDP protokolü kullanılarak kullanılmayan bir port seçilir. Ardından “TTL” değerine 1 yazılarak 3 paket gönderilir. İlk router paketi alır. “TTL” değeri 0 olduğu için “Time Exceeded” mesajını gönderir. Ardından tabloya ilk router ip si ve giden paketlerin süreleri yazılır. Ardından “TTL” değerine 2 yazılır. 3 paket gönderilir. 1. router alır. 2. ye iletir. “TTL” değeri sıfırlanır. İkinci router “Time Exceeded” mesajı gönderir. IP adresi tabloya yazılır. Ardından “TTL” değerine 3 yazılır. 3. routera kadar gider. TTL değeri sıfırlanır. 3. router “Time Exceeded” mesajı gönderir. Üçüncü router da tabloya eklenir. Ardından TTL değerine 4 yazılır ve paket hedefe ulaşır. Hedef paket sıfırlandı diyemez çünkü son noktaya ulaştı ve hedef porta yazdığımız porttan hizmet vermediği için “Destination or Service Unreachable” mesajı gönderecektir. Son olarak da hedefimiz tabloya eklenir. Ardından işlem bitirilir.

Traceroute aracı kısaca ICMP protokolünün “Time Exceeded” yöntemini kullanarak paketin hedefe giderken hangi yollardan geçtiğini gönderir.

İki farklı kullanım yolu var demiştim. “Tracert” bilgisyarlarda kullanılır. “Traceroute” ise “Router” cihazlarında kullanılır.

Daha fazla “Bilgisayar Ağları” için takipte kalın…


İnsanların seni çok sevdiği zaman, onların işine en çok yaradığın zamandır

Bukowski
Hüseyin Pala hakkında 53 makale
System and Network Specialist Candidate

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*