Adres Çözümleme Protokolü

**Adres Çözümleme Protokolü (Address Resolution Protocol, ARP)** ağ katmanı adreslerinin veri bağlantısı katmanı adreslerine (IP adreslerinin MAC adreslerine) çözümlenmesini sağlayan bir telekomünikasyon protokolüdür. 1982 yılında RFC 826 aracılığıyla tanımlanmıştır. STD 37 kodlu bir internet standardıdır.

Yerel ağların oluşturulmasında en çok kullanılan ağ arayüzü Ethernet'tir. Sistemlere Ethernet arayüzü görevi gören ağ kartları takılarak, sistemler yerel alan ağlarına (LAN) eklenmektedir. Ethernet arayüzleri birbirlerine çerçeve (frame) gönderebilmeleri için kendilerine üretim sırasında verilen fiziksel adresleri (MAC adresi) kullanırlar. 48 bit olan bu fiziksel adreslerin ilk 24 biti üreticiyi belirtir. Kalan 24 bit de üreticiler tarafından ürettikleri ürünleri adreslendirmek için kullanılır. 48 bitlik bu adres her donanım için eşsizdir. TCP/IP protokolünün kullanıldığı ağlarda, uzunluğu 32 bit olan IP adresleri kullanılır. Ağ katmanından iletim için alt katmanlara aktarılan bir paketin doğru yere ulaştırılabilmesi için, paketteki ağ katmanı adresinin veri bağlantısı katmanında ve fiziksel katmanda fiziksel adrese çözümlenmesi gerekmektedir. Çünkü bu iki katmanda farklı adreslendirme yöntemleri kullanılmaktadır. Bu iki farklı adres uzayı arasındaki çözümleme sürecini düzenleyen protokole Adres Çözümleme Protokolü (Address Resolution Protocol) denmektedir. Veri bağlantısı katmanında Ethernet ve ağ katmanında IP protokollerinin arasında çalışması amacıyla yazılmasına karşın, tasarımı aşamasında bu protokolün ileride farklı ağ katmanı ve veri bağlantısı katmanı protokolleri arasında da kullanılabileceği göz önünde bulundurulmuştur. Dolayısıyla genel bir ifadeyle söylemek gerekirse, bu protokol, ağ katmanı adreslerinin bağlantı katmanı adreslerine çözümlenmesini sağlar. Ancak IPv6 ile çalışan ağlarda bu protokolün işlevini komşu saptama protokolü görmektedir.

## ARP İstek Paketi Gönderilmesi
Bir paketin yerel ağda başka bir bilgisayara gönderilebilmesi için IP adresinin yanında donanım adresinin de bilinmesi gerekir. Kaynak sistem, iletişim yapmak istediği hedef sistemin fiziksel adresini (MAC adresi) öğrenmek amacıyla yerel ağdaki tüm bilgisayarlara özel bir istek yollar. Bu isteğe ARP İsteği denmektedir. **ARP isteği ([[İngilizce]]: ''ARP request'' )** çerçevesinin kaynak MAC adresi bölümünde ARP isteğini yapan bilgisayarın MAC adresi ve çerçevenin hedef MAC adresi bölümünde ise FF-FF-FF-FF-FF-FF adresi yer alır. Bu çerçeveyi alan anahtar (switch), almış olduğu bu ARP isteği paketini tüm portlarına gönderir. ARP isteğinin içerisinde hedef sistemin IP adresine ait olan fiziksel adres (MAC adres) sorulmaktadır. Anahtara bağlı olan tüm bilgisayarlar bu ARP isteğini alırlar. Sorulan IP adresi kendilerine aitse bu ARP isteğine, **ARP Reply** ile cevap verirler. "**ARP Reply**" cevabı kaynak bilgisayara yine anahtar tarafından ulaştırılır. Bu şekilde kaynak bilgisayar hedef bilgisayarın MAC adresini öğrenmiş olur. Bundan sonraki iletişim anahtarın anahtarlama tablosu (switching table) üzerinden gerçekleştirilir.

Bazı düğümler fiziksel adres öğrenme süreçlerini azaltmak için, diğer sistemlerin ARP sorgulamalarını sürekli dinleyerek kendi ARP tablolarını güncel tutabilirler. Böylece kendisi daha önce herhangi bir aktarım yapmasa bile, diğer sistemlerin IP-fiziksel adres dönüşüm bilgisine sahip olurlar.

## ARP Çerçeve Formatı

Gerekli durumlardaki mesajlaşmalarda kolaylık sağlaması için bir ARP mesaj yapısı oluşturulmuştur. Bu mesaj yapısı herhangi bir protokol için fiziksel/donanım adres çözümlemesi amaçlasa da genelde IP ağlarında MAC adreslerine ulaşmak için kullanılır.

**Donanım Adres Tipi**

:Her bir veri hattı katman protokolüne bu alanda kullanması için verilen numara. Örneğin Ethernet 1.

**Protokol Adres Tipi**

:Her bir protokole bu alanda kullanılması için verilen numara. Örneğin, IP 0x0800.

**Donanım Adres Uzunluğu**

:Donanım adresinin byte cinsinden uzunluğunu gösterir. Ethernet adresi 6 byte uzunluğundadır.

**Protokol Adres Uzunluğu**

:Mantıksal Adresin byte cinsinden uzunluğu. IPv4 adresi 4 byte uzunluğundadır.

**Operasyon**

:Gönderen belirli operasyonları sergiler: istek için 1, cevap için 2, RARP isteği için 3 ve RARP cevap için 4.

**Gönderen Donanım Adresi**

:Göndericinin donanım (MAC) adresi.

**Gönderen Protokol Adresi**

:Göndericinin protokol adresi.

**Hedef Donanım Adresi**

:Alıcının donanım (MAC) adresi. Bu alanda istekler önemsenmez. Bir istek mesajı gönderilirken Varış Donanım Adresi’nin tamamı sıfır yapılır.

**Hedef Protokol Adresi**

:Alıcıya yönelik protokol adresi.

## ARP Mesajının İşlenmesi
Bir IP paketi gönderilmeden önce Ethernet ağlarında iki paket daha aktarılır ve paketin gönderileceği düğümün fiziksel adresi bulunur. Bu işlemi aynı varış düğümüne gidecek paketler için tekrar tekrar yapmak anlamsızdır. Bu nedenle bir IP_adresi-Donanım_adresi eşlemesi yapıldığında bu bilgi bir süre ARP cep belleğinde tutulur. Belli bir süre kullanılmamış adresler, bellekte yer sorunu varsa silinir.

**Bir ARP mesajı alan düğüm aşağıdaki işlemleri gerçekleştirir**
**1)**Mesajın geldiği düğümün IP adresi ve MAC adresilerinin ARP cep belleğinde olup olmadığının testi yapılır.
Varsa eski donanım adresinin yerine, gelen mesajdaki donanım adresi yazılır.
**2)**Mesajın operasyon bölümüne bakılır. 
Bu bölüm **istek mesajı** ise bir cevap mesajı hazırlanır. Cevap mesajında, gelen mesajdaki gönderen ve varış adreslerinin yerleri değiştirilir. Gönderen donanım adresi bölümüne mesajı hazırlayan bilgisayarın donanım adresi yazılır. Operasyon alanına, 2 değeri verilir.
Bu bölüm **cevap mesajı** ise daha önce istek gönderilmiş olup gelen bilgiler cep belleğe eklenir.

Yayınlanan tüm ARP mesajlarındaki verilerin ARP cep belleğine konması, cep belleğin kısa sürede dolmasına neden olur. Bu nedenle, bilgisayarlar sadece kendilerini hedef alan ARP mesajları ile ilgilenirler.

## Reverse Address Resolution Protocol - RARP
RARP, **yeni çalıştırılmış (new-booted)** bilgisayarların Ethernet adreslerini ağa duyurması ve kendi IP adresini sormasını sağlar. Bunlar disksiz bilgisayarlardır ve bu bilgisayarlar için RARP sunucusu bu sorulara cevap verir. IP adres istekleri, yerel alan ağı dışına çıkamadığı için isteklerin oluştuğu yerel alan ağlarında bir RARP sunucusu olması gerekir. Bu sorunu çözmek için
alternatif bir **başlangıç protokolü (bootstrap)** önerilmiştir: **[[BOOTP]]**.

BOOTP, UDP mesajları ile haberleşir bu nedenle yerel alan ağlarını geçebilir. BOOTP'nin detayları RFC 951,RFC 1048 ve RFC 1084'te verilmiştir. BOOTP'nin dezavantajı IP ve Ethernet adres eşlemesinin manuel olarak yapılmasıdır.

ARP ve RARP birbirinden farklı işlemlerdir. **[[ARP]]** her sunucunun kendi donanım adresi ve protokol adresi arasındaki haritalamayı bildiğini farzeder. Diğer sunucular hakkında edinilen bilgi küçük bir bellekte tutulur. Bütün sunucular eşit statüdedir. İstemci ve sunucu arasında hiçbir ayrım yoktur. **RARP**''de ise durum farklıdır. İstemcilerden gelen istekleri cevaplamak ve protokol adresinden donanım adresine veritabanı haritalanması için daha fazla sunucuya gereksinim duyar.

## Standartlar
Adres Çözümleme Protokolünün çalışma esaslarını düzenleyen standartlar şunlardır:
* RFC 826 - Ethernet Address Resolution Protocol, Internet Standard STD 37. (Ethernet Adres Çözümleme Protokolü, İnternet Standartı STD 37)
* RFC 903 - Reverse Address Resolution Protocol, Internet Standard STD 38.(Ters Adres Çözümleme Protokolü, İnternet Standardı STD 38)
* RFC 2390 - Inverse Address Resolution Protocol, draft standard (Karşıt Ters Adres Çözümleme Protokolü, standart taslağı)
* RFC 5227 - IPv4 Address Conflict Detection, proposed standard (IPv4 Adres Çakışması Saptama, standart teklifi)

## Ayrıca bakınız
* arp tablosu

## Kaynakça