Internet Control Message Protocol

Internet Control Message Protocol (ICMP), hata mesajları ve TCP/IP yazılımının bir takım kendi mesaj trafiği amaçları için kullanılır. ICMP RFC 792'de tanımlanmış ve RFC 950'de revize edilmiştir. Hataları raporlamak için kullanılan, kontrol amaçlı bir protokoldür. Bu şekilde normal kullanımının yanında, uzak sistem hakkında bilgi toplamak için sıkça kullanıldığından çok önemlidir. Genel olarak sistemler arası kontrol mesajları IP yerine ICMP üzerinden aktarılır. ICMP, IP ile aynı düzeyde olmasına karşın aslında kendisi de IP’yi kullanır. ICMP' nin hata raporlamak için kullanılması, IP'yi güvenli yaptığı anlamına gelmez. Datagram, yerine ulaşmayabilir ve bununla ilgili bir hata mesajı da gelmeyebilir. ICMP mesajlarındaki hataları raporlamak için ICMP kullanılmaz. ICMP, TCP/IP' nin işlemesine yardımcı olan bir protokoldür. Her hostta mutlaka ICMP protokolü çalışır. Hata durumunda host tarafından geri bilgilendirmeyi sağlar.

ICMP ağ hakkında bazı bilgileri toplamak amacı ile de kullanılır. IP hata-raporlama veya hata-düzeltme mekanizmalarına sahip değildir. ICMP yapı olarak UDP 'ye benzer bir protokoldür. ICMP de mesajlarını sadece bir datagram içine koyar. Bununla beraber UDP'ye göre daha basit bir yapıdadır. Başlık bilgisinde port numarası bulundurmaz. Bütün ICMP mesajları ağ yazılımının kendisince yorumlanır, ICMP mesajının nereye gideceği ile ilgili bir port numarasına gerek yoktur.

ICMP paketleri ortamda bir geri besleme sağlarlar. Bu yolla ciddi sorunları, haberleşen birimlere bildirerek bir hata bildirim mekanizması oluştururlar. ICMP mesajı, IP paketinin veri bölümünde taşınır. Bu yüzden ICMP paketlerinin dağıtım güvenilirliği, IP paketlerinin dağıtım güvenilirliği ile sınırlı kalmaktadır. Buradan ICMP paketlerinin güvenilir iletilemeyeceği ve hedefe vardığının garanti edilemeyeceği sonuçları çıkarılabilir.

ICMP mesajları IP datagramının kullanıcı verisi alanında taşınır. IP başlığındaki protokol alanı 1'e set edilerek ICMP'nin kullanıldığı gösterilir. Tüm ICMP mesajları üç alandan oluşur.

Basit ve sıkça kullanılan 2 tane ICMP uygulaması vardır: Ping ve Traceroute. Daha çok ağ üzerindeki sorunları tespit edebilmek ya da çözmek için kullanılan bu 2 uygulama aynı zamanda, hacking işleminin başlangıç aşamalarından birini oluşturur. Ağdaki canlı makineleri bulabilmek için ping taramaları ya da ağın haritasını çıkartabilmek için traceroute uygulamaları hacker'ler tarafından sıkça kullanılır.

Ping en basit TCP/IP uygulamasıdır. Bir hosta ulaşmanın ilk adımı ona ping çekmektir. Eğer bir hosta ping ile ulaşabiliyorsanız, telnet ya da FTP ile ulaşmanız (ilgili portlar açıksa) mümkündür. Son yıllarda güvenlik duvarlarının yönlendiricilerdeki "access list"lerin ve diğer güvenlik kontrol mekanizmalarının sıkça kullanılmaya başlanılmasıyla bu yargı değişmeye başlamıştır. Yani bir hosta ping çekemiyorsanız, telnet ya da ftp yapamayacağınız anlamına gelmez. Ping uygulaması, ICMP Echo ve ICMP Reply mesajlarını kullanarak bir hostun erişilebilir olup olmadığını belirler. Ping, alıcı bilgisayara "echo request" paketi gönderirken, cevap olarak da "echo reply" paketini bekler. Traceroute programı ise gönderen bilgisayardan alıcı bilgisayara giden paket ve izlediği yolla ilgili çok önemli bilgiler verir. Bu bilgiler arasında en çok kullanılanı "paketin izlediği yol (path)" bilgisidir.

Bu sayede paketin hangi yollardan geçerek alıcı hosta ulaştığı rahatlıkla izlenebilir. Traceroute programı ICMP protokolünün bir parçasıdır. ICMP protokolü, iki host arasında bilgi akışı olurken, bu esnada ortaya çıkan hataları ve diğer bilgileri mesaj yoluyla raporlar.

Ping taraması bir ICMP uygulamasıdır ama bir sistem hakkında ICMP sorgulaması yapmak sadece ping paketleri ile yapılmaz. Bir sisteme birçok yoldan ICMP sorgulaması yapılabilir ve çok değerli bilgiler elde edilebilir. Mesela,Unix tabanlı sistemlerde kullanılan "icmpquery" ya da "icmppush" uygulaması sayesinde sistemin saati(hangi zaman bölgesinde olduğu) "ICMP type 13" (TIMESTAMP) ile öğrenilebilir ya da bir hostun hangi ağ maskesinde olduğu "ICMP type 17" (ADDRESS MASK REQUEST)mesajı ile elde edilebilir. Ağ maskesi(Netmask) bilgisi önemlidir, çünkü saldırgan sadece belli bir alt ağdaki(subnet) sisteme saldırmak isteyebilir.Burada dikkat edilmesi gereken bir nokta da tüm yönlendiricilerin ICMP TIMESTAMP ya da ICMP NETMASK sorgulamasına cevap vermedikleridir.