İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Kategori: Network
Fırat Boyan 19.12.2015 2

ARP (Address Resolution Protocol) Nedir? Nasıl Çalışır?

ARP (Address Resolution Protocol) yani Adres Çözümleme Protokolü, OSI (Open Systems Interconnection) Model'in Network katmanında verilen IP adreslerinin, Data-Link katmandaki MAC adreslerine çözümlenmesini sağlayan bir protokoldür. 1982 yılında RFC 826 aracılığıyla tanımlanmıştır.  

Arp Protokolü

ARP protokolü, bir LAN ortamında IP adresi bilinen cihazın MAC adresi bilgisini bulmak için kullanılır. LAN ortamındaki cihazlar birbirleri ile MAC adreslerini kullanarak iletişim kurarlar. Bir cihaz IP adresini bildiği bir cihaz ile iletişim kurarken MAC adresini bilmiyorsa ARP protokolü kullanarak bunu tespit eder. Mantığın daha net anlaşılabilmesi için bir Data paketinin VLAN oluşturulmamış bir Network üzerinde tüm sisteme Broadcast ile nasıl dağıldığına bir göz atalım.

1- Örnek Network şema yapımdaki 3. Katta bulunan PC-46'dan, 1. kattaki PC-20'ye bilgisayara bir Data paketi yollayacağım. Her bilgisayar, RAM belleğinde yani Cache'inde bir ARP tablosu tutar ve öncelikle hedef cihazın MAC adresine bu tablodan bakar. Görüldüğü Data paketini yollayacak olan kaynak bilgisisayarın (PC-46) Cache'lenmiş ARP tablosu boş durumda.

Arp Protokolü

2- Kaynak bilgisayarın (PC-46) Cache'lenmiş ARP tablosu boş durumda olduğu için, ARP protokolü çalıştırılacaktır. ARP protokolü çalıştırıldığında Data paketi için bir Data Frame'i oluşturulacak ve içine bir takım bilgiler eklenecektir. Bu bilgiler;

Source IP Address (Kaynak IP adresi)
10.10.10.12 (PC-46'nın IP adresi)
Source MAC Address (Kaynak MAC adresi)
00-60-3E-09-7C-07 (PC-46'nın MAC adresi)
Destination IP Address (Hedef IP adresi)
10.10.10.58 (PC-20'nin IP adresi)
Destination MAC Address (Hedef MAC adresi)
FF-FF-FF-FF-FF-FF (Broadcast MAC adresi)
 

PC-46'ya ait ARP Request Frame içerği

Arp Protokolü

3- Oluşturulan bu Data Frame'e ARP Request adı verilmektedir. ARP Request için bir Data Frame oluşturulmuşsa kaynak cihaz, ulaşmak istediği IP adresinin MAC adresi bilgisine sahip değil demektir. Bu nedenle Data Frame içindeki en önemli kısım, Destination MAC Address yani hedef MAC adresi kısmıdır. Ulaşılmak istenen cihazın MAC adresi bilgisi bilinmediği için Broadcast MAC Address bilgisi olan FF-FF-FF-FF-FF-FF kullanılacaktır. 

Arp Protokolü

4- Aşağıda görüldüğü gibi PC46'dan çıkan Data paketine ait ARP Request Data Frame'i içindeki Destination MAC Address bilgisi FF-FF-FF-FF-FF-FF (Broadcast MAC adresi) olduğu için, ilk önce 3. kataki tüm bilgisayarlara ulaştırıldı. İlgili Data paketi, ARP Request ile gelen Data paketindeki Destination IP Address kendilerine ait olmadığı için, tüm bilgisayarlar Data paketini reddetti!

Arp Protokolü

5- Aynı Data paketi, ARP Request içindeki Destination MAC Address bilgisi FF-FF-FF-FF-FF-FF (Broadcast mac adresi) olduğu için, 2. kataki tüm bilgisayarlara da ulaştırıldı. İlgili Data paketi, ARP Request ile gelen Data paketindeki Destination IP Address kendilerine ait olmadığı için, tüm bilgisayarlar Data paketini reddetti!

Arp Protokolü

6- Aynı Data paketi, ARP Request içindeki Destination MAC Address bilgisi FF-FF-FF-FF-FF-FF (Broadcast mac adresi) olduğu için, 1. kattaki tüm bilgisayarlara ulaştırıldı. İlgili Data paketi, ARP Request ile gelen Data paketindeki Destination IP Address kendilerine ait olmadığı için PC-20 hariç tüm bilgisayarlar Data paketini reddetti! PC-20, ARP Request ile gelen Data paketindeki Destination IP Address kendine ait olduğu için Data paketini aldı!

Arp Protokolü

7- Buraya kadarki kısımda ARP Request aşaması gerçekleşti. PC-20, kendisine ARP Request ile gelen Data paketi içindeki Data Frame'i açtığında, Frame içinde Data Paketini kendisine yollayan bilgisayarın IP adresi ve MAC adresi bilgilerini öğrenerek, bu bilgileri kendi ARP tablosuna yazdı. ARP tablosundaki Cache'lenmiş bilgileri görüntülemek için CMD (Command Promt) üzerinden arp -a komutunu çalıştırmak yeterli olacaktır.

Arp Protokolü

8- PC-20, kendisine ARP Request ile gönderilen Data paketine, ARP Reply ile yanıt verecektir. ARP Reply ile Data Frame'i içindeki bilgiler şu şekilde olacaktır.

Source IP Address (Kaynak IP adresi)
10.10.10.58 (PC-20'nin IP adresi)
Source MAC Address (Kaynak MAC adresi)
00-90-0C-4E-4B-83 (PC-20'nin MAC adresi)
Destination IP Address (Hedef IP adresi)
10.10.10.12 (PC-46'nın IP adresi)
Destination MAC Address (Hedef MAC adresi)
00-60-3E-09-7C-07 (PC-46'nın MAC adresi)
 

PC-20'ye ait ARP Reply Frame içerği

Arp Protokolü

9- Bu sefer ARP Request paketi ile kendisine gelen Frame içindeki bilgide ARP Request paketini yollayan bilgisayarın IP adresi ve MAC adresi bilgisi yer aldığı için, kendi IP adresi ve MAC adresi bilgisini de ARP Reply Data paketi içindeki Frame'e ekleyerek PC-46'ya geri iletilmek üzere iletim için Network'e yollanıyor. Dikkat ederseniz, ARP Reply ile iletilen cevapta Network ortamında tekrar bir Broadcast oluşmuyor.

Arp Protokolü

Arp Protokolü

Arp Protokolü
10- PC-46, kendisine ARP Reply ile gelen Data paketi içindeki Data Frame'i açtığında, Frame içinde Data Paketini kendisine yollayan bilgisayarın IP adresi ve MAC adresi bilgilerini öğrenerek, bu bilgileri kendi ARP tablosuna yazdı.

Arp Protokolü

Arp Protokolü

11- Aynı şekilde Network ortamındaki Swtich'ler de öğrendikleri bu MAC adresi bilgilerini kendi MAC adres tablolarında tutarlar. Bu sayede Data paketleri Network ortamında iletilirken, gönderilen Data paketindeki Frame içinde yer alan Target IP ve Target MAC bilgilerini kendi MAC tablosu içinden okuyarak ilgili MAC adresinin kendi Port'larından birinde mi? Değil mi? bilgisi ile hareket ederek, eğer mümkünse, Data paketini bir sonraki Switch'e iletir.

 

ARP (Address Resolution Protocol) Cache

ARP Cache (Adres Çözümleme Protokolü Ön Belleği), bir IP adresinin MAC adresine çözümlenmesiyle oluşturulan bir ön bellekleme yöntemidir. Makalemin en başından beri kullandığım bu yöntem ile bir cihaz, IP adresini MAC adresine çözümlediğinde, çözümlediği bu MAC adresi bilgisini sonraki iletişimlerde tekrar tekrar ARP Request işlemi başlatıp, Network ortamında tekrar bir Broadcast ortamı daha oluşturmamak için ön belleğinde tutar. Bir bilgisayarın ARP Cache bilgisinde tüm Network ortamındaki bilgisayarların MAC adresi bilgisini tutmasını sağlayabiliriz. Örneğin mesai saatleri dışında tüm ofis ortamına yeni bilgisayar kurulumları yaptınız. Bu kurumların yapılmasının ardından tüm bilgisayarlar açıkken bilgisayarların Network Interface Card (NIC) üzerinde tanımlı olan IP adresinin Network ID'sine ait Broadcast IP adresine Ping komutu ile Echo Request paketleri  yolladığınızda, Network ortamındaki tüm IP adreslerine ait MAC adresi bilgilerini ön belleğe alarak mesai saatleri içindeki Broadcast trafiği oluşmasının önüne geçebilirsiniz. Bunun için;

1- Örnek bir bilgisayar üzerinde CMD'yi (Command Promt) açıyor, arp -a komutu ile ARP Cache bilgisini kontrol ediyorum.

Arp Protokolü

2- Network Interface Card (NIC) üzerinde tanımlı olan IP adresinin Network ID'sine ait Broadcast IP adresine Ping komutu ile Echo Request paketleri yolluyorum. Bu sayede ilgili Network ID'sine ait olan tüm IP adreslerine Ping komutu ile tek seferde Echo Request paketleri yolluyorum. Bu işlem de Network ortamında ARP Request oluşmasına sebep olacağı için ortamda yoğun bir Broadcast oluşacaktır.

Arp Protokolü

Arp Protokolü

3- Network ortamındaki tüm IP adreslerine topluca Echo Request paketi yolladığım ve ARP Request oluşturduğum bilgisayar üzerinde tekrar arp -a komutunu çalıştırdığımda, MAC adresi çözümlenen tüm bilgisayarların IP adresi ve MAC adresi bilgileri ön belleklenmiş durumdadır.

Arp Protokolü

Bilgi!: Bu uygulamayı Packet Tracer uygulamasındaki PC'ler üzerinde uyguladım. Gerçek Windows işletim sistemindeki CMD (Command Promt), Broadcast IP adresine ping komutu ile Echo Request paketleri yollama işlemini desteklemeyecektir. Bunun yerine, IP bloğunuza FOR döngüsü ile Echo Request paketleri yollamalısınız. Bunun için aşağıdaki komutu yine CMD üzerinde çalıştırmanız yeterli olacaktır.

For /L %i in (1,1,254) do Ping -n 2 -w 250 10.10.10.%i | FIND /i "Reply"

For: Döngü komutudur. Ping işlemleri bir döngüye bağlı olarak ilerler.
/L: Loop parametresidir. for dögüsü, bu parametre ile tetiklenecektir.
%i: Bir değişken değeridir. "i" yerine başka bir değer de girilebilir. Buradaki değişken değeri, komut satırında belli noktalarda referans olarak kullanılır.
(1,1,254): Echo Request paketleri yollanacak IP Adresleri 1'den başlar, 1'er, 1'er ilerler ve 254'e kadar devam eder. Buradaki sayısal değerler, isteğe bağlı olarak değiştirilebilir.
-n: Echo Request paketi yollanacak IP adresi başına işleminin ne kadar tekrarlanacağını belirlediğimiz parametredir. Parametre verilmezse, varsayılan olatak 32 bit'lik 4 paket yollayacaktır. -n parametresinden sonra bir sayı değeri belirterek, kaç tane 32 Bit'lik Echo Request paketi yollacağımızı belirlemiş oluruz.
-w: Dönen her bir Echo Reply paketinin milisaniye cinsinden Timeout süresini belirler.
10.10.10.%i: Buradaki %i, (1,1,254) ile belirlediğiniz üçüncü bölümdeki her bir IP adresine (1-254) referans olacak kısımdır.
FIND /i "Reply": Bu komut ile sadece Echo Request işlemlerine Echo Reply ile karşılık veren cihazlar döngü sonuçlarına eklenecektir.

Faydalı olması dileğiyle...  


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim. 2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin en önde gelen entegratör firması olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum. Ek olarak, 2015 yılında Network Akademi bünyesinde Sistem ve Network Uzmanlık eğitimleri vermeye başladım ve 2017 yılında da eğitmenlik tecrübemi, Microsft Certified Trainer (MCT) ünvanı ile taçlandırdım. Eğitmenlik serüvenime 2021 yılından beri Bilge Adam bünyesinde MCT ünvanı ile devam etmekteyim.

YORUMLAR
Bu makaleye 2 yorum yapıldı.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.


750 karakter yazabilirsiniz.
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.


15.07.2022 Zeki Sert
Gerçekten kaliteli içerikler bu sitenin milyonlara ulaşması için gerçekten destekleyeceğim buna değer üstadım
03.04.2017 Orhan Cingi
Teşekkürler Hocam elinize sağlık