İçeriğe geç
academia.sh

Ders 07 / 18

IPv4 Adresleme

32 bitlik adresin yapısı, ağ ve düğüm bölümlerinin ayrımı, sınıflı adreslemenin mirası ve özel amaçlar için ayrılmış bloklar.

İçindekiler

Önceki iki ders IP adreslerini bir etiket gibi kullandı: 192.168.10.196 yazıldı, hangi cihazı gösterdiği söylendi, ama sayının kendisi çözümlenmedi. Oysa bu sayının içinde yönlendirmenin dayandığı bir yapı vardır.

Bu dersin sorusu, o yapının ne olduğudur: 32 bitin hangi bölümü ağı, hangi bölümü o ağdaki düğümü gösterir ve bu bölünme kim tarafından belirlenir?

Adresin Yapısı

Bir IPv4 adresi 32 bitlik işaretsiz bir tam sayıdır. Okunabilirlik için dört bayta bölünüp her bayt ondalık yazılır ve aralarına nokta konur — buna noktalı ondalık gösterim denir. Gösterim bir kolaylıktır; adresin kendisi bir bit dizisidir.

import ipaddress

adres = ipaddress.ip_address("192.168.10.196")
print("tam sayı  :", int(adres))
print("ikilik    :", format(int(adres), "032b"))
print("bayt bayt :", " ".join(f"{b:08b}" for b in adres.packed))
print("onaltılık :", adres.packed.hex())
tam sayı  : 3232238276
ikilik    : 11000000101010000000101011000100
bayt bayt : 11000000 10101000 00001010 11000100
onaltılık : c0a80ac4

Dört baytın karşılıkları doğrudan okunur: 11000000 = 192, 10101000 = 168, 00001010 = 10, 11000100 = 196. Taban dönüşümleri, Bilgisayarlar Nasıl Çalışır kursundaki İkilik Sayı Sistemi ve Onaltılık ve Sekizlik Tabanlar derslerinde kurulan yöntemin doğrudan uygulanmasıdır.

Toplam adres sayısı 232=42949672962^{32} = 4\,294\,967\,296’dır. Bu sayının, dünyadaki uca bağlı cihaz sayısı karşısında yetersiz kalması, bu kursta ele alınan birçok mekanizmanın — adres dönüştürme, değişken uzunluklu alt ağlar, IPv6 — varlık nedenidir.

Ağ ve Düğüm Bölümü

Adres tek parça bir kimlik değildir; iki bölüme ayrılır:

  • Ağ bölümü (network portion): Soldaki bitler. Adresin hangi ağa ait olduğunu söyler. Aynı ağdaki tüm adreslerde aynıdır.
  • Düğüm bölümü (host portion): Sağdaki bitler. Adresi o ağ içinde ayırt eder.

Bölünme noktası önek uzunluğu (prefix length) ile belirtilir ve adresin sonuna eğik çizgiyle yazılır: 192.168.10.196/24 gösteriminde soldaki 24 bit ağı, kalan 8 bit düğümü belirtir.

Gösterim Ağ bölümü Düğüm bölümü
192.168.10.196/24 11000000 10101000 00001010 11000100
192.168.10.196/27 11000000 10101000 00001010 110 00100

Aynı adres, farklı önek uzunluklarıyla farklı ağlara ait olur. Bu, çok önemli bir sonuç doğurur: bir adres tek başına eksik bilgidir. Bir arayüzü yapılandırmak için adres ve önek uzunluğu birlikte verilmelidir; ikisinden biri eksikse hangi hedeflerin yerel olduğu belirlenemez.

Bölünmenin yönlendirmedeki karşılığı doğrudandır. Yönlendiriciler tek tek düğümleri değil, ağları bilir. Yönlendirme tablosundaki bir satır, bir önek ile bir sonraki sekmeyi eşler; tablo satır sayısı düğüm sayısıyla değil, ağ sayısıyla orantılıdır. Adresleri hiyerarşik dağıtmanın nedeni budur.

Sınıflı Adreslemenin Mirası

IPv4 adresleri başlangıçta sınıflara ayrılmıştı: ağ ile düğüm arasındaki sınır, adresin ilk bitlerine bakılarak belirlenirdi.

Sınıf İlk bitler Adres aralığı Ağ bölümü Ağ başına düğüm
A 0 0.0.0.0 – 127.255.255.255 8 bit 16 777 214
B 10 128.0.0.0 – 191.255.255.255 16 bit 65 534
C 110 192.0.0.0 – 223.255.255.255 24 bit 254
D 1110 224.0.0.0 – 239.255.255.255 Çok noktaya gönderim
E 1111 240.0.0.0 – 255.255.255.255 Ayrılmış

Bu düzenin iki kusuru vardı. Birincisi, sınırın yalnızca üç değer alabilmesi adres israfına yol açıyordu: 300 düğümlük bir kuruluşa C sınıfı yetmez, B sınıfı verildiğinde 65 234 adres boşa gider. İkincisi, yönlendirme tablolarının boyutu denetlenemiyordu: her ağ ayrı bir satır gerektiriyor, satırlar birleştirilemiyordu.

Çözüm, sınırı adresten bağımsız kılmaktı. Sınıfsız alanlar arası yönlendirme (classless inter-domain routing, CIDR) ile önek uzunluğu adresle birlikte açıkça taşınır ve 0 ile 32 arasında herhangi bir değer alabilir. Sınıflar artık adres tahsisinde kullanılmaz; ancak bıraktıkları izler sürer — bazı araçların varsayılan maske önerileri ve bazı belgelerdeki “C sınıfı ağ” ifadesi bu mirastandır.

Bu kurs sınıfsız gösterimi esas alır. Sınıf adları yalnızca tarihsel bağlam için anılır.

Özel Amaçlı Bloklar

Adres uzayının bir bölümü, genel İnternet’te yönlendirilmemek üzere ayrılmıştır.

Blok Amaç Genel İnternet’te yönlendirilir mi
10.0.0.0/8 Özel kullanım Hayır
172.16.0.0/12 Özel kullanım Hayır
192.168.0.0/16 Özel kullanım Hayır
127.0.0.0/8 Geri döngü (kendi makinesi) Hayır
169.254.0.0/16 Yerel bağlantı (adres alınamadığında) Hayır
100.64.0.0/10 Sağlayıcı düzeyi adres dönüştürme Hayır
224.0.0.0/4 Çok noktaya gönderim Koşullu
255.255.255.255 Sınırlı yayın Hayır
192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 Belgeleme Hayır

Üç özel kullanım (private use) bloğu, kurum içi ağlarda serbestçe kullanılabilir. Farklı kurumlar aynı özel adresleri aynı anda kullanabilir; çakışma olmaz, çünkü bu adresler kurumun dışına çıkmaz. Dışarıya çıkış, adres dönüştürme ile sağlanır ve NAT ve PAT dersinin konusudur.

Geri döngü (loopback) bloğu makinenin kendisini gösterir; bu bloğa gönderilen paket hiçbir zaman ağ arayüzüne ulaşmaz. Yerel bağlantı (link-local) bloğu, bir arayüz adres alamadığında kendi kendine seçtiği geçici adres içindir; bu adresle yalnızca aynı ağdaki diğer cihazlara erişilir.

Belgeleme blokları, bu kursta genel adres gerektiren tüm örneklerde kullanılır. Kurumun dış adresi 203.0.113.10, hedef sunucu 198.51.100.20 bu bloklardandır.

import ipaddress

for metin in ("10.0.0.1", "127.0.0.1", "169.254.7.3", "224.0.0.251",
              "192.168.10.196", "198.51.100.20"):
    a = ipaddress.ip_address(metin)
    print(f"{metin:16s} özel={str(a.is_private):5s} geri_döngü={str(a.is_loopback):5s} "
          f"yerel_bağlantı={str(a.is_link_local):5s} çok_noktalı={a.is_multicast}")
10.0.0.1         özel=True  geri_döngü=False yerel_bağlantı=False çok_noktalı=False
127.0.0.1        özel=True  geri_döngü=True  yerel_bağlantı=False çok_noktalı=False
169.254.7.3      özel=True  geri_döngü=False yerel_bağlantı=True  çok_noktalı=False
224.0.0.251      özel=False geri_döngü=False yerel_bağlantı=False çok_noktalı=True
192.168.10.196   özel=True  geri_döngü=False yerel_bağlantı=False çok_noktalı=False
198.51.100.20    özel=True  geri_döngü=False yerel_bağlantı=False çok_noktalı=False

Son satır dikkat ister: 198.51.100.20 bir belgeleme adresidir, özel kullanım bloğunda değildir; buna karşın is_private özelliği doğru döner. Kütüphanenin bu özelliği “özel kullanım bloğunda mı” değil, “genel İnternet’te yönlendirilebilir mi” sorusunu yanıtlar. Bir kütüphane işlevinin adı ile anlamı arasındaki bu tür farklar, belgelenmiş anlamın okunmasını zorunlu kılar.

Adres Kime Aittir

Bir IP adresi makineye değil, arayüze aittir. İki arayüzü olan bir makinenin iki adresi vardır; aynı arayüze birden çok adres de atanabilir. Yönlendiriciler bu kuralın en açık örneğidir: örnek ağdaki kurum yönlendiricisinin iç arayüzü 192.168.10.193, dış arayüzü 203.0.113.10 adresini taşır ve bu iki adres farklı ağlara aittir.

Bu ayrım tanıda işe yarar. “Sunucuya ulaşamıyorum” ifadesi eksiktir; sunucunun hangi arayüzüne ulaşılamadığı sorulmalıdır. Bir arayüz üzerinden erişilebilen bir makine, başka bir arayüzü üzerinden erişilemez durumda olabilir.

Örnek Ağın Bloğu

Kurumun iç ağı 192.168.10.0/24 bloğunu kullanır. Seçimin gerekçeleri şunlardır:

  • Blok özel kullanım aralığındadır; sağlayıcıdan tahsis gerektirmez.
  • 24 bitlik önek, 8 bitlik düğüm bölümü bırakır: 28=2562^8 = 256 adres.
  • Bu 256 adresin ikisi ayrılmıştır — en küçüğü ağın kendisini, en büyüğü yayın adresini gösterir — geriye 254 kullanılabilir adres kalır.

Kurumun bölümlerinde toplam 182 düğüm bulunmaktadır: misafir kablosuz ağında 100, laboratuvarda 50, yönetimde 20, sunucu odasında 10 ve yönlendiriciler arasındaki noktadan noktaya bağlantıda 2. Sayı 254’ten küçük olduğuna göre blok yeterlidir — ancak bölümler tek bir yayın alanında toplanamaz.

Neden toplanamayacağı önceki derste görülmüştü: yayın alanı büyüdükçe her yayın çerçevesinin maliyeti artar ve bölümler arasında hiçbir erişim denetimi kurulamaz. Bloğun bölümlere ayrılması gerekir.

Özet

  • IPv4 adresi 32 bitlik bir tam sayıdır; noktalı ondalık gösterim yalnızca okunabilirlik içindir.
  • Adres ağ ve düğüm bölümlerine ayrılır; sınır önek uzunluğuyla belirtilir ve adresin kendisinden okunamaz.
  • Önek uzunluğu olmadan bir adres eksik bilgidir; hangi hedeflerin yerel olduğu belirlenemez.
  • Sınıflı adresleme sınırı üç değere hapsediyor ve israfa yol açıyordu; CIDR ile önek uzunluğu 0–32 arasında serbest bırakıldı.
  • Özel kullanım, geri döngü, yerel bağlantı, çok noktaya gönderim ve belgeleme blokları genel İnternet’te yönlendirilmez.
  • Adres makineye değil arayüze aittir; bir makinenin birden çok adresi olabilir.

Sonraki Adım

192.168.10.0/24 bloğu, kurumun bölümlerine tek parça hâlinde verilemez. Bloğun her bölüme ayrı bir ağ düşecek biçimde kesilmesi gerekir ve kesme işlemi düğüm bölümünden bit ödünç alarak yapılır. Sonraki ders maske aritmetiğini kuracak, ağ ve yayın adreslerinin nasıl hesaplandığını gösterecek ve bloğu eşit parçalara bölen ilk planı çıkaracak.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat