Published on

ARP(Address Resolution Protocol Nedir ?)

Authors
  • avatar
    Name
    Alperen Önal
    Twitter
ARP

Bildiğimiz gibi internet ile ağ dışında bulunan cihazlar ile iletişim kurmak istediğimzde mantıksal adresler(IP) kullanırken LAN içerisindeki cihazlar arasında iletişim kurmak için fiziksel adresler(MAC) kullanırız. Farklı ağdaki bir cihaza iletim yapmak istediğimiz zaman Layer 3’de(Network Layer) hedef cihazın IP adresini bilmek zorundayız. Layer 2’de(Data-Link Layer) ise hedef cihazın MAC adresini bilmek zorundayız. LAN ağları Layer 2’de çalıştığı için aynı ağdaki cihazlar arasında iletişim kuracağımız zaman MAC adresleri ile iletişimi sağlarız.

ARP Nasıl Çalışır ?

ARP’yi kullanarak bir cihazın MAC adresini öğrenmek istediğimiz zaman ARP Request oluştururuz. Frame Header + Data = Frame’dir. Buradaki Data kısmına ARP’yi gömeriz. Frame Header’daki hedef MAC adresi FF:FF:FF:FF:FF:FF olarak ayarlanır yani broadcast yapılarak tüm cihazlara bu frame’in ulaşması sağlanır. Kaynak MAC adresine gönderenin adresini gireriz. Type kısmına ise bu frame’de ARP kullanacağımız için ARP’nin protokol numarası olan “0x0806” değişkenini gireriz.

Daha sonra ARP Paketinin dolumuna başlarız. Göndericinin MAC adresini, IP adresini ve alıcı IP adresini bildiğimiz için bu alanları kolayca doldururuz. Target MAC Adresine ise hedef cihazın MAC adresini bilmediğimiz için 00:00:00:00:00:00 değerini gireriz.

Ardından oluşan bu ARP request tüm cihazlara broadcast olarak iletilir. Frame’i alan cihazlar paketi açıp ARP’deki IP adresinin kendi adresi olup olmadığını kontrol eder ve eğer kendisine ait olmayan bir IP adresi yazıyorsa bu frame’i drop eder. Ancak IP adresi kendi adresi ile uyuşuyorsa bu frame’i alır. Aldığı bu ARP paketi içindeki göndericinin fiziksel ve mantıksal adreslerini okur ve yeni bir frame oluşturur içine ARP reply paketini ekleyerek ARP Request’i yollayan cihaza gönderir. Frame’i alan cihaz ARP reply’i açar ve ilgili IP adresinin hangi MAC adrese sahip olduğunu görür.

ARP Nasıl Çalışır

Örneğin, 192.168.1.10 IP adresine sahip bir cihaz, 192.168.1.20 IP adresine sahip bir cihazın MAC adresini öğrenmek istediğinde, gönderilen ARP isteği şu şekilde olur:

  • Destination MAC Address: FF:FF:FF:FF:FF:FF
  • Source MAC Address: B8:B5:38:67:52:98 (192.168.1.10 cihazının MAC adresi)
  • Type: 0x0806 (ARP)
  • ARP Packet:
    • Sender MAC Address: 192.168.1.10 cihazının MAC adresi
    • Sender IP Address: 192.168.1.10
    • Target MAC Address: 00:00:00:00:00:00
    • Target IP Address: 192.168.1.20

Tabii ki, LAN’daki bir IP adresine bir iletim yapmak istediğimizde her zaman ARP isteği atmıyoruz. Daha öncesinde ARP reply aldığımız bir cihazın MAC adresini ARP önbelleğinde belli bir süre kadar muhafaza ediyoruz böylece gereksiz bant kullanımı ve performans sorunlarının önüne geçiyoruz.

arp -a ile bu önbelleği görebilirsiniz.

ARP Önbelleği

Örneğin CMD’de “netsh interface ip delete arpcache” komutunu kullanarak cihazımdaki tüm ARP önbelleğini sildim. Ardından, Router adresini bulmak için cihazımın attığı bir ARP request’i aşağıda görebiliyoruz.

ARP Request

Router’dan gelen ARP yanıtı:

ARP Yanıtı

KAYNAKÇA :