Bölüm 35:Adres Tükenmesi ve IPv6
Ağlar'a “Sen”i Katmak yazısının parçası: adres çubuğuna yazdığın tek bir isteğin peşinden bakırla fiberin fiziğine kadar inen uzun bir teknik yolculuk.
Tüm bölümler
- Giriş
- Adres Çubuğundan İsteğe
- Paket Anahtarlamalı Yol
- İsimden Adrese
- Önbellek, Tazelik ve Güven
- Port Numarası ve Soket
- Bağlantısız Taşıma: UDP
- Üç Adımlı El Sıkışma
- Simetrik Şifreleme
- Açık Anahtarlı Kriptografi
- TLS El Sıkışması
- Sertifika Zinciri
- HTTP Mesajının Anatomisi
- Durum, Çerez ve Oturum
- HTTP/2'den HTTP/3'e
- İçerik Dağıtım Ağları
- Diğer Uygulama Protokolleri
- Katmanlı Mimari
- Kapsülleme ve Başlıklar
- Paket Yakalama ve Çözümleme
- Ağ Arayüz Kartı
- Fiziksel Adresleme
- Hata Sezme ve CRC
- Adres Çözümleme: ARP
- Anahtarlama ve Ortam Erişimi
- Ağ Topolojileri
- Sanal Yerel Ağlar
- Kablosuz Erişim: 802.11
- Radyo Kanalı ve Kapasite
- Kablosuz Ağ Güvenliği
- Hücresel Ağlar
- Spektrum ve Kuşaklar
- Hareketlilik ve Aktarma
- Adres Kiralama: DHCP
- Adresin Anatomisi
- Adres Tükenmesi ve IPv6
- Yönlendirici Mimarisi
- Kuyruk Yönetimi
- Cihaz Yapılandırma
- Yönlendirme Protokolleri
- Kontrol Düzlemi ve SDN
- Ağ İzleme ve Yönetimi
- Alanlar Arası Yönlendirme
- Adres Çevirisi
- Ara Kutular
- Tünelleme ve IPsec
- Güvenlik Duvarları
- Operatör ve Metro Ağları
- Bitten Sinyale
- Çoklama Teknikleri
- İletim Ortamları
- Kablo Sonlandırma
- Fiber Optik İletim
- Bakır Erişim Ağı: DSL
- Pasif Optik Ağlar
- Kablo Erişim Ağları
- Denizaltı Kabloları
- Veri Merkezi Ağları
- Kapsülleme Çözme
- Güvenilir Aktarım
- Tıkanıklık Denetimi
- Trafik Çözümleme
- Gecikme Bütçesi
- Son Söz
Adresi maskeyle ikiye bölüp havuzun toplamını saydın: dört milyarı biraz aşan bir sayı. Yetmedi.
Merkezden dağıtım 2011’de bitti. ICANN elindeki son bloğu bölgesel kayıt kuruluşlarına verdi; o günden sonra yeni adres ancak geri kazanımdan ya da devirden geldi. Peki yerine ne kondu?
Dört cevap, tek büyütme
Adres sıkıntısı 1990’ların ortasında görünür oldu. Sorun soyut bir sayma alıştırması değildi; kurumlar internete açılamadığı için ağın büyümesi fiilen durdu. Tükenmeye dört ayrı cevap üretildi: IPv6, CIDR, özel adresleme ve adres çevirisi. Üçü ömür uzatıyor. Yalnızca biri adres alanını gerçekten büyütüyor.
Büyüten cevap IPv6. Adresi 128 bit, yani IPv4’ün 32 bitine göre dört kat uzun. Alan ise dört kat değil, 2 üzeri 96 kat büyük. Bu çarpan yaklaşık 7,9 çarpı 10 üzeri 28 ediyor ve toplam adres sayısını 3,4 çarpı 10 üzeri 38 civarına çıkarıyor. Adres yalnızca dört kat uzarken alanın katlanarak büyümesinin sebebi bu.
Sürüm numarası neden 5’i atladı? IP sürüm 5 diye bir çalışma vardı ama araştırma aşamasında kaldı ve hiç standartlaşmadı. Numara bu yüzden 4’ten 6’ya sıçradı. Yeni protokolün çalışma adı da IPng’ydi: IP next generation.
Tükenme tek gerekçe değildi. Ağ katmanının akış kavramını tanıyıp farklı akışlara farklı davranması istendi. Gerçek zamanlı uygulamalar için başarım yetersizdi, güvenlik protokole sonradan eklenmişti, yönlendirme tabloları şişiyordu. IPv6’yı tasarlayanların önünde tek bir sorun yoktu; birikmiş bir demet vardı.
Yürürlükteki belirtim RFC 8200. Temmuz 2017 tarihli, STD 86 numarasını taşıyor ve kendinden önceki belirtimi geçersiz kılıyor. İlk sürümü ise Aralık 1995 tarihini taşıyordu. Otuz yaşını geçmiş bir protokolden söz ediyoruz. Değişen tek şey ağ katmanı oldu; uygulama ve fiziksel katman aynı kaldı, o yüzden tarayıcı ya da kablo değiştirmek gerekmiyor.
Kırk baytta ne var?
Sabit başlık 40 bayt ve alanları hep aynı yerde duruyor. Yönlendirici her pakette başlık uzunluğunu yeniden hesaplamak zorunda kalmıyor.
Version 4 bit değeri 6
Traffic Class 8 bit IPv4'teki hizmet türü alanının karşılığı
Flow Label 20 bit aynı akışa ait datagramların etiketi
Payload Length 16 bit sabit başlıktan sonra gelen bayt sayısı
Next Header 8 bit zincirdeki bir sonraki başlığın numarası
Hop Limit 8 bit her düğümde bir azalan sayaç
Kaynak adres 128 bit
Hedef adres 128 bit40 baytın 32 baytı, yani %80’i, yalnızca iki adres. IPv4’te aynı oran %40’tı: 20 baytlık başlıkta 8 bayt adres. Başlık iki katına çıkarken adres alanı dört katına çıktı.
Next Header, IPv4’teki Protokol alanıyla aynı değer kümesini kullanıyor: 6 TCP, 17 UDP, 58 ICMPv6, 44 parçalama başlığı. Zincirin halkalarını bağlayan alan bu.
Hop Limit, IPv4’teki yaşam süresi alanının devamı. Sıfıra düşen paket yolda atılıyor ama hedefin kendisi sıfır gördüğü paketi atmıyor. Ad değişikliği dürüst: alan hiçbir zaman saniye saymıyordu, sıçrama sayıyordu. Terimi sıçrama sınırı diye sabitliyorum.
Payload Length’in kapsamı IPv4’teki Toplam Uzunluk’tan dar: Toplam Uzunluk kendi başlığını da sayıyordu, bu alan saymıyor. Akış etiketi aynı akışa ait datagramları işaretliyor ama akışın kesin tanımı yok. Alan duruyor, ortak kullanım sözleşmesi zayıf.
Başlığın hikâyesi ekleme değil, çıkarma. Checksum, parçalama alanları ve seçenek alanı sabit başlıktan çıktı. Parçalama yol üstünde değil kaynakta yapılıyor ve MTU zarfın boyunu sınırlıyordu. Yerlerini bir zincir aldı.
Uzatma başlığı altı türde sayılıyor: hop-by-hop seçenekleri, hedef seçenekleri, yönlendirme, parçalama, kimlik doğrulama ve şifreli yük. Hop-by-hop seçenekleri yol üstündeki her yönlendirici için, hedef seçenekleri yalnızca varış düğümü için. Parçalama da artık bir alan değil, Next Header değeri 44 olan ayrı bir başlık.
Alt sınır da tabana yazıldı. IPv6 her bağdan en az 1.280 baytlık MTU istiyor; daha dar bir bağ parçalamayı kendi altındaki katmanda halletmek zorunda. Asgari MTU’da yüke kalan yer 1.240 bayt ve uzatma başlığı eklendikçe bu pay daralıyor. Ayarlanabilir bağlar için tavsiye 1.500 bayt, sebebi de açıkça tünelleme.
Sekiz grup, iki nokta üst üste
128 bit onluk yazılınca okunmuyor. Adres bu yüzden 16’şar bitlik sekiz gruba bölünüyor, gruplar iki nokta üst üste ile ayrılıyor ve onaltılık yazılıyor. Her onaltılık basamak dört bit taşıdığı için her grup dört basamak.
Kural olmasa aynı adresin birkaç geçerli yazımı olurdu ve karşılaştırma metin düzeyinde bozulurdu. Yazım bu yüzden tek biçime bağlandı. Kurallar kısa. Baştaki sıfırlar atılır, harfler küçük yazılır, en uzun ardışık sıfır dizisi çift iki noktaya iner. Tek bir sıfır grubu için çift iki nokta kullanılmaz. İki dizi eşit uzunluktaysa baştaki kısaltılır.
2001:0db8:0000:0000:0000:0000:0000:0042 -> 2001:db8::42
2001:0db8:0000:0000:00ff:0000:0000:0001 -> 2001:db8::ff:0:0:1İlk satırda 39 karakterlik gösterim 12 karaktere iniyor. İkinci satırda iki sıfır dizisi eşit uzunlukta, bu yüzden baştaki kısalıyor ve ikincisi açık kalıyor. İki yazım da aynı 128 biti anlatıyor.
Adresin ilk 64 biti alt ağı, son 64 biti o bağdaki arayüzü gösteriyor. Yönlendirme ilk yarıya bakıyor, teslim ikinci yarıya. Alt ağa bölmedeki posta kodu benzetmesi burada da yürüyor: ilk yarı posta kodu, ikinci yarı kapı numarası. Benzetme şurada biter: posta kodunda sınır anlaşmayla kayabilir, burada tam ortadan geçer.
Klasik yöntemde arayüz kimliği, Değiştirilmiş EUI-64 biçimiyle 48 bitlik MAC adresinden türetiliyor. Kartın fabrikadan gelen adresi tanıdık; makinenin IPv6 adresinin yarısı orada, kartın üstünde yazıyor.
Tek bir /64 alt ağ 2 üzeri 64 arayüz taşıyor. Bu yaklaşık 1,8 çarpı 10 üzeri 19 eder ve IPv4’ün tamamından 4.294.967.296 kat geniştir. Bir /56 önek 256, bir /48 önek 65.536 adet /64 alt ağa bölünüyor. Ev kullanıcısının elinde bile birden çok alt ağ oluyor.
Türü de adresin başı söylüyor. Adresin ilk birkaç bitine bakmak, onun ne işe yaradığını tablodan okumaya yetiyor:
| önek | tür | ne demek |
|---|---|---|
2000::/3 | genel tekli yayın | internette yönlendirilen adres |
fe80::/10 | bağ-yerel | yalnızca bu kabloda geçerli; yönlendirici geçirmez |
fc00::/7 | benzersiz yerel | kuruma özel, 10.0.0.0/8 bloğunun karşılığı |
ff00::/8 | çoklu yayın | bir grubu adresler; sonraki dört bit kapsamı verir |
::1/128 | geri döngü | makinenin kendisi |
::/128 | belirsiz | henüz adresi olmayan makinenin kaynak alanı |
64:ff9b::/96 | NAT64 öneki | içine bir IPv4 adresi gömülür |
2001:db8::/32 | belgeleme | bu kitaptaki örnekler bu bloktan |
Çoklu yayın adresinin dördüncü onaltılık basamağı kapsamı taşıyor ve bu, IPv4’te olmayan bir denetim: ff02::1 yalnızca bu bağdaki herkes, ff05::1 bu siteyi, ff0e::1 ise küresel kapsamı gösteriyor. Bir yayının nereye kadar gideceği artık adresin içinde yazılı.
Önek uzunlukları da bir hiyerarşi kuruyor ve sayıları akılda tutmak kolay: bölgesel kayıt kuruluşu operatöre genelde /32 verir, operatör bir kuruma /48, ev abonesine /56, ve her alt ağ /64 olur. Ev kullanıcısının elinde 256 alt ağ bulunmasının sebebi budur.
IPv6’da yayın adresi yok. Kartın adresinde yayının aslında çoklu yayının özel hâli olduğunu görmüştük; IPv6 o özel hâli tümden attı. Yayının işini çoklu yayın devraldı: herkesi uyandıran çağrı yerine yalnızca ilgili grubu uyandıran çağrı var. Bir de yeni bir tür geldi. Aynı hizmet adresi birçok kenar sunucuda ayakta tutulabiliyordu; anycast IPv6’da bir adres türü olarak tabana yazıldı.
Makine kendi adresini nasıl buluyor?
Durumsuz otomatik yapılandırma ne elle ayar ister ne de ayrı bir sunucu. Yönlendirici öneki ilan ediyor, makine arayüz kimliğini kendi üretiyor, adres ikisinin birleşimi oluyor. Kısa adı SLAAC.
Bağ-yerel adres, fe80:: öneki ile arayüz kimliğinin birleştirilmesiyle üretiliyor ve başka bir bağa iletilmiyor. Yönlendirici olmasa bile makine komşularıyla konuşabiliyor. İlişkilendirme biter bitmez kart ağa katılıyordu; bağ-yerel adres tam o anda, kimseye sorulmadan hazır oluyor.
Adres kullanılmadan önce çakışma denetiminden geçmek zorunda. Kısa adı DAD. Makine adresi önce geçici sayıyor ve bu adres başkasında mı diye soruyor. Kural SLAAC’a özel değil; DHCPv6 ya da elle ayar fark etmiyor. DHCPv6 rakip de değil: hangi adresin kimde olduğunu sıkı denetlemek isteyen ağ onu seçiyor, ikisi aynı anda da çalışabiliyor.
Komşu keşfi beş ICMPv6 mesajı tanımlıyor: 133 yönlendirici isteği, 134 yönlendirici ilanı, 135 komşu isteği, 136 komşu ilanı ve 137 yönlendirme. ARP tablosu komşunun adresini tutuyordu; onun yerine geçen şey tek bir protokol değil, bu beşli.
Komşu isteği iki iş birden yapıyor. Komşunun bağ katmanı adresini öğreniyor. Bellekteki eşlemenin hâlâ geçerli olduğunu da doğruluyor. İkinci iş ARP’ta yoktu.
Soru bütün ağa da gitmiyor. İstenen düğüm çoklu yayın adresi, hedef adresin son 24 bitinin ff02::1:ff00:0/104 önekine eklenmesiyle kuruluyor. Belgeleme önekinden bir örnek: 2001:db8::1a2b:3c4d adresini arayan çağrı ff02::1:ff2b:3c4d adresine gidiyor. Uyanan düğüm sayısı avuç içi kadar kalıyor.
Ters yönde de bir ilan var. Yönlendirici ilanı hem düzenli aralıklarla hem de istek üzerine gidiyor, içinde önek, sıçrama sınırı önerisi ve bağ parametreleri taşıyor. Makinenin default gateway listesi bu ilanlardan kuruluyor.
İki sürüm aynı kabloda
İnternette bayrak günü yok. Bütün yönlendiriciler aynı gün yükseltilemediği için iki sürüm yan yana yaşamak zorunda. Geçişin zor tarafı teknik değil takvimsel.
Çift yığın bir makine ikisini birden konuşuyor. Bir ismin IPv6 karşılığı AAAA kaydında duruyor ve kaydın tür numarası 28. A kaydı 32 bit taşıyor, AAAA kaydı 128 bit.
İstemci iki soruyu peş peşe soruyor ve önce AAAA’yı gönderiyor. İkisinin de dönmesini beklemiyor. A cevabı önce geldiyse AAAA için 50 ms bekliyor. Bağlantı denemeleri arasındaki varsayılan bekleme 250 ms, alt sınır 100 ms, üst sınır 2 saniye. İlk kurulan bağlantı kazanıyor ve diğerleri iptal ediliyor. Yarışın adı Happy Eyeballs, varsayımı IPv6’yı tercih etmek. Kullanıcı hiçbir şey fark etmiyor.
Yolun ortasında IPv6 konuşmayan bir ağ varsa tünel kuruluyor. Tünelleme, IPv6 datagramını IPv4 datagramının yükü olarak taşımak demek: paketin içinde paket. Tünelde iki adres çifti aynı anda yaşıyor. Dış başlıktaki çift tünel uçlarını gösteriyor, iç başlıktaki çift gerçek kaynak ve hedefi. Çekirdek ağ da kullanıcı trafiğini baz istasyonuna tünelliyordu; zarf değişti, fikir aynı.
Tünel tek çare değil ve bugün mobil şebekelerde asıl kullanılan yöntem başka: çeviri. NAT64 adındaki geçit, IPv6-only bir ağdaki istemciyi IPv4-only bir sunucuya bağlıyor. Yanındaki DNS64 ise numaranın kalbi: istemci AAAA sorduğunda ve karşılığı yoksa, A kaydındaki 32 bitlik adresi alıp 64:ff9b::/96 önekinin içine gömerek sahte bir IPv6 adresi üretiyor.
gerçek IPv4 203.0.113.9
DNS64 üretir 64:ff9b::cb00:7109 (cb007109, 203.0.113.9'un onaltılığı)İstemci bunu sıradan bir IPv6 adresi sanıp bağlanıyor; paket öneki tanıyan NAT64 geçidine düşüyor, geçit gömülü adresi çıkarıp IPv4 tarafına çeviriyor. İstemcinin IPv4 yığını hiç olmadı, ama IPv4 dünyasına erişti.
Bir boşluk kalıyor: DNS64 yalnızca ada bakan uygulamalar için çalışıyor. Bir program IPv4 adresini kod içine gömmüşse ya da doğrudan IPv4 soketi açıyorsa numara işlemiyor. 464XLAT bunu da kapatıyor — cihazın içinde küçük bir çevirici, uygulamanın açtığı IPv4 soketini IPv6’ya çevirip NAT64’e gönderiyor. Bugün telefonunun mobil veri bağlantısı büyük ihtimalle tam olarak böyle çalışıyor: şebeke IPv6-only, uygulamaların çoğu bunu hiç bilmiyor.
Sayı tarafında iş yavaş yürüdü. Google’ın ölçümünde IPv6 üzerinden erişen kullanıcı oranı 2026’da, martın 28’inde, %50,10 oldu ve on sekiz yılda ilk kez yarı aşıldı. Yayılma 25 yılı aştı, hâlâ sürüyor. Aynı sürede uygulama katmanı baştan aşağı değişti: web, sosyal medya, akış, oyun, uzaktan görüşme. Sebebi de bu farkta. Uygulama tek tarafta değişebiliyor, ağ katmanı sürümü herkesin birlikte değişmesini istiyor.
Kendi makinende bakabilirsin. Linux’ta ip -6 addr show fe80:: ile başlayan bağ-yerel adresi ve genel adresi yan yana yazar, Windows’ta ipconfig çıktısında Link-local IPv6 Address satırı durur. ping -6 ve dig AAAA ise karşı tarafın IPv6 konuşup konuşmadığını söyler.
Özet
Peki, ne öğrendik?
- IPv6 adresi 128 bittir: adres dört kat uzadı ama adres alanı 2 üzeri 96 kat büyüdü.
- Sabit başlık 40 bayttır: bu başlığın %80’i iki adrestir ve alanlar hep aynı yerde durur.
- Gösterim tek biçime bağlıdır: baştaki sıfırlar atılır, en uzun sıfır dizisi çift iki noktaya iner, harfler küçük yazılır.
- Adres iki yarıdan oluşur: ilk 64 bit alt ağı, son 64 bit o bağdaki arayüzü gösterir.
- Makine adresini kendi üretir: yönlendirici öneki ilan eder, makine kimliği ekler, çakışma denetimi onaylar.
Adres alanı büyüdü, gösterim sadeleşti ve makine kendi adresini kendi kurdu. Paket artık geçitten çıkmaya hazır. Peki onu ilk alan yönlendirici, hedefe giden yolun tamamını biliyor mu?
36. bölüme devam et: Yönlendirici Mimarisi