---
title: ARP
source: 'https://academia.sh/tr/kurslar/ag-modelleri/arp'
course: 'Ağ Modelleri ve Protokoller'
language: tr
updated: '2026-08-17T18:07:07+00:00'
license: 'CC BY-SA 4.0'
---

# ARP

IP adresinden donanım adresine çözümleme, istek–yanıt döngüsü, önbellek davranışı, vekil ve ücretsiz kullanım biçimleri ile adres zehirlenmesi.

Önceki ders bir çerçevenin hedef alanına donanım adresi yazıldığını gösterdi. Oysa
uygulamalar hedefi IP adresiyle belirtir: örnek ağdaki istemci `198.51.100.20` adresine
gitmek ister, geçidinin `192.168.10.193` olduğunu bilir, ancak bu adreslerin hiçbirinin
donanım karşılığını bilmez.

İki adres uzayı arasında bir köprü gerekir. Bu dersin sorusu, o köprünün nasıl kurulduğu ve
kurulurken hangi varsayımların yapıldığıdır.

## İki Adres Uzayı

IP adresi ile MAC adresi arasında hesaplanabilir bir ilişki **yoktur**. Biri ağ
yöneticisinin veya bir kiralama hizmetinin atadığı mantıksal bir addır; diğeri arayüzün
donanımına bağlı fiziksel bir addır. Aynı makine ağdan ağa taşındığında IP adresi değişir,
MAC adresi değişmez.

Eşleme hesaplanamadığına göre **sorulmalıdır**. **ARP (Address Resolution Protocol)** bu
soruyu soran protokoldür. Yöntem doğrudandır: yerel ağın tamamına "şu IP adresi kimde?"
diye yayın yapılır ve adresin sahibi yanıt verir.

ARP, IP'nin içinde taşınmaz; Ethernet çerçevesinde `0x0806` tür değeriyle doğrudan
taşınır. Bu, önceki konuda söylenen "bazı protokoller iki katmanı birden ilgilendirir"
saptamasının somut örneğidir: ARP mesajı bir ağ katmanı adresi taşır, ama ağ katmanı
başlığı kullanmaz.

## Mesajın Alanları

ARP mesajı 28 bayttır ve dokuz alandan oluşur.

| Alan | Boyut | Örnek değer |
|---|---|---|
| Donanım türü | 2 bayt | `1` (Ethernet) |
| Protokol türü | 2 bayt | `0x0800` (IPv4) |
| Donanım adresi uzunluğu | 1 bayt | `6` |
| Protokol adresi uzunluğu | 1 bayt | `4` |
| İşlem | 2 bayt | `1` istek, `2` yanıt |
| Gönderen donanım adresi | 6 bayt | Soruyu soranın MAC adresi |
| Gönderen protokol adresi | 4 bayt | Soruyu soranın IP adresi |
| Hedef donanım adresi | 6 bayt | İstekte sıfır, yanıtta doludur |
| Hedef protokol adresi | 4 bayt | Sorulan IP adresi |

Uzunluk alanlarının varlığı, protokolün Ethernet ve IPv4 ile sınırlı olmadığını gösterir:
biçim, farklı adres genişliklerine sahip teknolojiler için tasarlanmıştır.

Aşağıdaki program, örnek ağdaki istemcinin geçidini sorduğu isteği ve gelen yanıtı kurar.

```python
import ipaddress
import struct

BICIM = "!HHBBH6s4s6s4s"


def mac_paketle(mac: str) -> bytes:
    return bytes(int(x, 16) for x in mac.split(":"))


def mac_yaz(ham: bytes) -> str:
    return ":".join(f"{b:02x}" for b in ham)


def arp_mesaji(islem: int, gonderen_mac: str, gonderen_ip: str,
               hedef_mac: str, hedef_ip: str) -> bytes:
    return struct.pack(
        BICIM,
        1,          # donanım türü: Ethernet
        0x0800,     # protokol türü: IPv4
        6,          # donanım adresi uzunluğu
        4,          # protokol adresi uzunluğu
        islem,      # 1 = istek, 2 = yanıt
        mac_paketle(gonderen_mac), ipaddress.ip_address(gonderen_ip).packed,
        mac_paketle(hedef_mac), ipaddress.ip_address(hedef_ip).packed,
    )


def arp_yaz(ham: bytes) -> None:
    a = struct.unpack(BICIM, ham)
    islem = {1: "istek", 2: "yanıt"}[a[4]]
    print(f"işlem={islem:5s} gönderen={mac_yaz(a[5])} / {ipaddress.ip_address(a[6])}"
          f"  hedef={mac_yaz(a[7])} / {ipaddress.ip_address(a[8])}")


istek = arp_mesaji(1, "00:00:5e:00:53:01", "192.168.10.196",
                   "00:00:00:00:00:00", "192.168.10.193")
yanit = arp_mesaji(2, "00:00:5e:00:53:00", "192.168.10.193",
                   "00:00:5e:00:53:01", "192.168.10.196")

print("mesaj boyu:", len(istek), "bayt")
print(istek.hex())
arp_yaz(istek)
print(yanit.hex())
arp_yaz(yanit)
```

Çıktı:

```
mesaj boyu: 28 bayt
000108000604000100005e005301c0a80ac4000000000000c0a80ac1
işlem=istek gönderen=00:00:5e:00:53:01 / 192.168.10.196  hedef=00:00:00:00:00:00 / 192.168.10.193
000108000604000200005e005300c0a80ac100005e005301c0a80ac4
işlem=yanıt gönderen=00:00:5e:00:53:00 / 192.168.10.193  hedef=00:00:5e:00:53:01 / 192.168.10.196
```

İstek mesajındaki hedef donanım adresi alanı sıfırdır — sorunun kendisi budur. Yanıtta bu
alan dolar ve gönderen ile hedef rolleri yer değiştirir.

## İstek ve Yanıtın Taşınması

Mesajın kendisi kadar, onu taşıyan çerçevenin adresleri de önemlidir:

| | ARP isteği | ARP yanıtı |
|---|---|---|
| Çerçeve kaynak adresi | `00:00:5e:00:53:01` | `00:00:5e:00:53:00` |
| Çerçeve hedef adresi | `ff:ff:ff:ff:ff:ff` | `00:00:5e:00:53:01` |
| Ulaştığı cihazlar | Yayın alanının tamamı | Yalnız soruyu soran |

İstek yayınla gider, çünkü sorulan adresin hangi cihazda olduğu bilinmemektedir. Yanıt ise
tekil adrese gider: yanıtlayan, isteğin içindeki gönderen alanlarından soru sahibinin her
iki adresini de öğrenmiştir.

Bu asimetrinin bir yan etkisi vardır: yayın alanındaki her cihaz isteği görür ve isterse
gönderenin eşlemesini kendi önbelleğine yazar. Bu davranış, ilerideki bölümde ele alınacak
güvenlik sorununun temelidir.

## Yerel mi Uzak mı

Bir paket gönderilmeden önce verilen ilk karar, hedefin aynı ağda olup olmadığıdır. Karar,
hedef adresin kendi ağ maskesiyle karşılaştırılmasıyla verilir; maske aritmetiği Alt Ağlara
Bölme dersinde kurulacaktır. Kararın sonucu, **hangi adresin çözümleneceğini** belirler:

| Hedef | Aynı ağda mı | ARP ile sorulan adres | Çerçevenin hedef MAC adresi |
|---|---|---|---|
| `192.168.10.200` | Evet | `192.168.10.200` | Hedefin kendi MAC adresi |
| `198.51.100.20` | Hayır | `192.168.10.193` (geçit) | Geçidin MAC adresi |

İkinci satır, ağ mekaniğinin en sık yanlış anlaşılan noktasıdır. Uzak bir hedefe giden
pakette **IP hedef adresi uzak sunucudur, MAC hedef adresi geçittir.** İki adres farklı
cihazları gösterir ve bu bir tutarsızlık değildir: IP adresi uçtan uca hedefi, MAC adresi
bir sonraki sekmeyi belirtir.

Uzak sunucunun MAC adresi hiçbir zaman sorulmaz. Sorulamaz da: ARP isteği yayınla gider ve
yayın yönlendiriciyi geçmez.

## ARP Önbelleği

Her çözümleme için yayın yapmak pahalı olacağından, sonuçlar bir **önbellekte** tutulur.
Örnek ağdaki istemcinin önbelleği, geçidiyle konuştuktan ve aynı bölümdeki bir yazıcıya
eriştikten sonra şu içeriğe sahiptir:

| IP adresi | MAC adresi | Durum |
|---|---|---|
| `192.168.10.193` | `00:00:5e:00:53:00` | Ulaşılabilir |
| `192.168.10.210` | `00:00:5e:00:53:04` | Ulaşılabilir |
| `192.168.10.205` | — | Eksik (yanıt beklenmekte) |

Girdiler kalıcı değildir. Bir süre kullanılmayan girdi silinir; silinme, bir cihazın ağ
kartı değiştiğinde veya adres başka bir cihaza geçtiğinde eşlemenin kendini düzeltmesini
sağlar. Girdi silindikten sonraki ilk gönderim yeniden çözümleme başlatır ve o gönderim
biraz gecikir.

Önbellek durumunu okumak için kullanılan komutlar ve çıktı biçimleri işletim sistemine göre
değişir. Değişmeyen içerik, yukarıdaki tabloda gösterilen üç bilgidir: protokol adresi,
donanım adresi ve girdinin durumu.

## Ücretsiz ve Vekil Kullanım

**Ücretsiz ARP (gratuitous ARP)**, bir cihazın kendi adresini kimse sormadan duyurmasıdır:
hedef protokol adresi kendi adresi olan bir istek yayınlanır. Üç işe yarar. Adres
çakışmasını sezdirir — yanıt gelirse aynı adres başka bir cihazdadır. Yedek bir cihaz
devralma sırasında adresi üstlendiğini duyurur ve anahtarların tablolarını tazeler. Bir
arayüz açıldığında komşuların eski eşlemelerini günceller.

**Vekil ARP (proxy ARP)**, bir yönlendiricinin kendisine ait olmayan bir adres için yanıt
vermesidir. Sorulan adres uzaktaysa yönlendirici kendi MAC adresini verir ve trafiği
üstlenir. Ağ maskesi hatalı yapılandırılmış istemcileri çalışır durumda tutar; ancak
sorunun kendisini gizlediği ve önbelleklerde birbirinin aynı çok sayıda girdi ürettiği için
tanıyı zorlaştırır.

## ARP Zehirlenmesi

ARP'nin tasarımında kimlik doğrulama yoktur. Yanıtı kimin gönderdiği denetlenmez; hatta
istenmemiş bir yanıt bile birçok gerçekleştirimde önbelleğe yazılır. Bunun sonucu **ARP
zehirlenmesi (ARP poisoning)** adı verilen saldırıdır.

Aynı yayın alanındaki bir cihaz, `192.168.10.193` adresinin kendi MAC adresinde olduğunu
bildiren yanıtlar gönderirse, komşularının önbellekleri bozulur ve geçide gitmesi gereken
trafik saldırgana yönlenir. Saldırgan trafiği geçide ileterek bağlantıyı ayakta tutabilir;
bu durumda kullanıcı hiçbir kesinti görmez.

Açığın kaynağı bir gerçekleştirim hatası değil, protokolün tasarım varsayımıdır: aynı yerel
ağdaki cihazlar güvenilir kabul edilmiştir. Karşı önlemler bu yüzden ARP'nin dışındadır:

- Yayın alanlarını küçültmek ve güvenilmeyen cihazları ayrı ağlara koymak.
- Anahtar üzerinde ARP denetimi: bir bağlantı noktasından yalnızca o cihaza atanmış
  adreslerin duyurulmasına izin vermek.
- Kritik eşlemeleri sabitlemek.
- Uçtan uca şifreleme ve kimlik doğrulama kullanmak: trafiği dinleyen bir aracı, içeriği
  okuyamaz veya değiştiremez.

Son madde, uçtan uca ilkesinin bir uygulamasıdır: ağın içindeki bir katmanın güvenlik sözü
veremediği durumda, sözün uçlarda verilmesi gerekir.

## IPv6'daki Karşılığı

IPv6, ARP'yi kullanmaz. Karşılık gelen işlev **komşu keşfi (neighbor discovery)** adıyla
ICMPv6'nın içine taşınmıştır ve yayın yerine çok noktaya gönderim kullanır: soru, yalnızca
sorulan adresle ilgili çok noktaya gönderim grubuna iletilir. Bu, yayın alanındaki her
cihazın her soruyu işlemesini önler. Komşu keşfi ayrıca adres çakışması sınaması ve
yönlendirici duyurusu gibi işlevleri de üstlenir; bunlar IPv6 dersinde ele alınacaktır.

## Özet

- IP adresi ile MAC adresi arasında hesaplanabilir bir ilişki yoktur; eşleme ARP ile
  sorulur.
- ARP isteği yayınla gider, yanıt tekil adrese döner; mesaj 28 bayttır ve IP başlığı
  kullanmaz.
- Hedef aynı ağdaysa hedefin kendi adresi, değilse geçidin adresi çözümlenir; uzak hedefe
  giden pakette IP hedefi sunucu, MAC hedefi geçittir.
- Çözümleme sonuçları süreli bir önbellekte tutulur; süre dolduğunda eşleme kendini
  düzeltir.
- Ücretsiz ARP adres duyurusu ve çakışma sınaması için, vekil ARP başka bir ağın adresini
  üstlenmek için kullanılır.
- ARP'de kimlik doğrulama yoktur; zehirlenmeye karşı önlemler yayın alanını küçültmek,
  anahtar düzeyinde denetim ve uçtan uca şifrelemedir.

## Sonraki Adım

Buraya kadar IP adresleri bir etiket gibi kullanıldı: `192.168.10.196` yazıldı, anlamı
sorgulanmadı. Oysa bu sayının içinde bir yapı vardır — bir bölümü ağı, bir bölümü o ağdaki
düğümü gösterir. Sonraki ders IPv4 adresinin bit yapısını, ağ ile düğüm bölümlerinin
ayrımını ve özel amaçlar için ayrılmış blokları ele alacak.
