SEN2008 · 5. hafta · Network Layer Concepts (I): , internetworking, Internet Protocol (IP, IPv6)

IPv4 adresleme, alt ağlar ve CIDR

Bir IP adresinden ağ adresini, broadcast'i, host aralığını ve host sayısını bit bit bulmak; alt ağa bölmek, VLSM ve en uzun önek eşleşmesi. Vizenin garanti hesap sorusu.

IPv4 addresssubnet maskprefix lengthCIDRnetwork addressbroadcast addressVLSMroute aggregationlongest prefix matchprivate address

İnternette bir paketi doğru yere götüren şey IP adresidir. Router’lar adresin tamamına değil, ön ekine bakar. Bu yüzden vizede neredeyse her zaman “bu adresin ağ adresi ne, broadcast ne, kaç host var, şu tabloya göre hangi arayüze gider” tipi sorular çıkar. Hepsi aynı birkaç bit işlemine dayanır. Bu kuralları bilen biri bu soruları dakikalar içinde çözer:

  1. Ağ adresi = IP AND maske. Host bitleri sıfırlanır.
  2. Broadcast = host bitlerinin hepsi 1. Ağ adresi + blok boyu - 1.
  3. Host sayısı = 2h−22^{h} - 2, hh host bit sayısı.
  4. Blok boyu = 256 - maske oktetinin değeri. Sınırlar hep bu sayının katıdır.
  5. Yönlendirmede en uzun önek kazanır (longest prefix match).

IPv4 adresi ve maske

IPv4 adresi 32 bitlik bir sayıdır. Okunsun diye 8’er bitlik dört parçaya (oktet) bölünüp ondalık yazılır: 192.168.10.77. Adres iki parçadan oluşur: ağ kısmı (network part, subnet part) ve host kısmı. Aynı ağ kısmına sahip arayüzler aynı alt ağdadır (subnet) ve birbirine router olmadan ulaşır.

Nerede bölündüğünü alt ağ maskesi (subnet mask) söyler. Maskede ağ bitleri 1, host bitleri 0’dır. Kısa yazımı önek uzunluğu (prefix length): /26 “ilk 26 bit ağ” demek.

ÖnekMaskeHost bitiKullanılabilir host
/8255.0.0.02416777214
/16255.255.0.01665534
/20255.255.240.0124094
/24255.255.255.08254
/26255.255.255.192662
/27255.255.255.224530
/30255.255.255.25222

Her alt ağda iki adres hosta verilmez: host bitleri tamamen 0 olan ağ adresi (network address) ve tamamen 1 olan broadcast adresi.

CIDR: sınıfsız adresleme

Eskiden adresler sınıflara bölünürdü (A: /8, B: /16, C: /24). 2000 host isteyen bir kurum C sınıfına sığmadığı için B alırdı, 63 bin adres boşa giderdi. CIDR (Classless Inter-Domain Routing) bu sabit sınırları kaldırdı: önek herhangi bir uzunlukta olabilir, a.b.c.d/x biçiminde yazılır. Bugün sınıflar sadece tarihsel terimdir. Sınavda “classful” geçerse eski sistem kastediliyordur.

Ağ adresi, broadcast, host aralığı

Hızlı yöntem: maskenin 255 ya da 0 olmayan oktetine ilginç oktet de. Blok boyu 256−maske256 - \text{maske}. Adresin o oktetini içine alan blok boyu katını bul.

Örnek 1: 192.168.10.77/26

maske       255.255.255.192      blok boyu 256-192 = 64 (4. oktet)
64'ün katları: 0, 64, 128, 192   77 → 64 ile 127 arası
ağ adresi   192.168.10.64
broadcast   192.168.10.127
host        192.168.10.65  ...  192.168.10.126
host sayısı 2^6 - 2 = 62

Bit düzeyinde aynı şey: 77 = 01001101. Maske 192 = 11000000. AND: 01000000 = 64.

Örnek 2: 172.16.45.200/20

İlginç oktet üçüncüsü: /20 maskesi 255.255.240.0, blok boyu 16.

16'nın katları: 0, 16, 32, 48     45 → 32 ile 47 arası
ağ adresi   172.16.32.0
broadcast   172.16.47.255         (3. oktet 47, 4. oktet hep 255)
host        172.16.32.1  ...  172.16.47.254
host sayısı 2^12 - 2 = 4094

TUZAK · dördüncü oktet. İlginç oktet üçüncüyse ağ adresinin dördüncü okteti 0, broadcast’inki 255 olur. 172.16.45.200 yazıp “ağ 172.16.32.200” diyen host bitlerini sıfırlamayı unutmuştur.

Alt ağlara bölmek (subnetting)

Host bitlerinden nn tanesini ağ kısmına ödünç alırsan 2n2^n eşit alt ağ çıkar.

Örnek 3: 200.10.20.0/24’ü 4 eşit alt ağa böl. 22=42^2 = 4, yani 2 bit ödünç: /26. Blok boyu 64.

Alt ağAğ adresiHost aralığıBroadcast
1200.10.20.0/26.1 - .62.63
2200.10.20.64/26.65 - .126.127
3200.10.20.128/26.129 - .190.191
4200.10.20.192/26.193 - .254.255

Örnek 3b: 172.16.0.0/16’yı /22 alt ağlarına böl. Soru genelde üç şey ister: kaç alt ağ, her birinde kaç host, n’inci alt ağ hangisi.

ödünç bit   22 - 16 = 6       → 2^6 = 64 alt ağ
host biti   32 - 22 = 10      → 2^10 - 2 = 1022 host
blok boyu   256 - 252 = 4     (3. oktette)
1. alt ağ   172.16.0.0/22
2. alt ağ   172.16.4.0/22
3. alt ağ   172.16.8.0/22
64. alt ağ  172.16.252.0/22

n’inci alt ağın üçüncü okteti (n−1)×4(n - 1) \times 4. Sıfırdan saymayı unutma: 3. alt ağ 8 ile başlar, 12 ile değil.

VLSM: farklı boyda alt ağlar

Gerçek bir ağda bölümlerin ihtiyacı farklıdır. VLSM (Variable Length Subnet Mask) her bölüme ihtiyacına uyan öneki verir. Kural: en büyük ihtiyaçtan başla, her alt ağ kendi blok boyunun katında başlasın.

Örnek 4: 10.0.0.0/24 ile 100, 50, 20 hostluk üç LAN ve 2 hostluk bir router bağlantısı.

100 host → 2^7-2=126 yeter → /25 → 10.0.0.0/25    (.1 - .126,   bc .127)
 50 host → 2^6-2=62  yeter → /26 → 10.0.0.128/26  (.129 - .190, bc .191)
 20 host → 2^5-2=30  yeter → /27 → 10.0.0.192/27  (.193 - .222, bc .223)
  2 host → 2^2-2=2   yeter → /30 → 10.0.0.224/30  (.225 - .226, bc .227)
boşta kalan ilk adres: 10.0.0.228

İPUCU · neden büyükten başlıyoruz? Küçükle başlarsan büyük blok, kendi boyunun katına hizalanmak için araya boşluk bırakmak zorunda kalır. Büyükten küçüğe gidince bloklar boşluksuz arka arkaya dizilir.

Rota özetleme (route aggregation)

CIDR’ın ikinci kazancı: komşu ağları tek bir rotayla duyurmak. Buna rota özetleme ya da supernetting denir. Router tabloları küçülür.

Örnek 5: 198.51.96.0/24, .97.0/24, .98.0/24, .99.0/24 tek rotada.

 96 = 01100000
 97 = 01100001
 98 = 01100010
 99 = 01100011
      ^^^^^^      ortak ilk 6 bit
önek = 16 + 6 = 22   →   198.51.96.0/22

Özetleme sadece bloklar hizalı ve bitişik olduğunda temiz çalışır. 97 ile 100’ü tek /22’de özetleyemezsin.

En uzun önek eşleşmesi (longest prefix match)

Router’ın iletim tablosunda (forwarding table) her satır bir önek ve bir çıkış arayüzü içerir. Bir hedef adres birden fazla satıra uyabilir. Router en uzun öneki seçer, çünkü o daha özel bilgidir.

11.20.0.0/16    → 0
11.20.64.0/18   → 1      (3. oktet 64 ile 127 arası)
11.20.72.0/21   → 2      (3. oktet 72 ile 79 arası)
0.0.0.0/0       → 3      (default)

11.20.75.9   → /16, /18, /21 eşleşir → en uzun /21 → 2
11.20.100.1  → /16, /18 eşleşir      → /18       → 1
11.20.70.3   → /16, /18 (72-79 değil)→ /18       → 1
11.21.0.1    → sadece default        → 3

TUZAK · ilk eşleşen değil. Tabloyu yukarıdan aşağı okuyup ilk tutan satırı seçmek yanlış. Bütün eşleşenleri bul, önek uzunluğuna bak.

Özel adresler ve özel amaçlı bloklar

RFC 1918 özel adresleri İnternette yönlendirilmez. Ev ve şirket ağlarında kullanılır, dışarı çıkarken NAT ile genel adrese çevrilir (bir sonraki sayfa).

BlokAralıkNot
10.0.0.0/810.0.0.0 - 10.255.255.255büyük kurumlar
172.16.0.0/12172.16.0.0 - 172.31.255.255172.32 dışarıda
192.168.0.0/16192.168.0.0 - 192.168.255.255ev router’ları
127.0.0.0/8loopback127.0.0.1 kendin
169.254.0.0/16link-localDHCP cevap vermezse

Adresler nereden gelir? Bir host adresini genellikle DHCP (Dynamic Host Configuration Protocol) ile alır: discover, offer, request, ACK dört adımı. Kurum adres bloğunu ISP’den, ISP’ler de bölgesel kayıt kuruluşlarından (ICANN altında) alır.

Sık yapılan hatalar

Yanlış düşünceDoğrusu
/27 → 32 host30, ağ ve broadcast düşülür
/21 maskesi 255.255.240.0255.255.248.0; 240 /20’dir
Ağ adresinde dördüncü okteti korumakİlginç oktetten sonraki oktetler 0 olur
Bir sonraki bloğun başını broadcast sanmakBroadcast = sonraki ağ adresi - 1
LPM’de tablodaki ilk eşleşen satırEn uzun önek kazanır
172.32.x.x özel adres172.16/12 sadece 16 ile 31 arası
VLSM’e küçük alt ağla başlamakBüyükten küçüğe dağıt, hizalama bozulmaz
Üçüncü okteti farklı iki adres farklı ağdadırMaske /23 ya da daha kısaysa aynı ağ olabilir

Kendini test et

Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.

Soru 1kolay

How many usable host addresses does a /27 subnet provide?

Cevabı göster
30

Host kısmı 32−27=532 - 27 = 5 bit. 25=322^5 = 32 adres var. İlki ağ adresi, sonuncusu broadcast, ikisi hosta verilemez: 32−2=3032 - 2 = 30.

Soru 2kolay

Write the prefix length /21 as a dotted-decimal subnet mask.

Cevabı göster
255.255.248.0

21 tane 1: ilk iki oktet 16 bit (255.255), üçüncü oktette 5 bit 1 kalır: 11111000 = 128+64+32+16+8 = 248. Dördüncü oktet 0. Sonuç 255.255.248.0.

Soru 3orta

What is the network address of the host 10.45.130.77/19?

Cevabı göster
10.45.128.0

/19 maskesi 255.255.224.0. İlginç oktet üçüncüsü, blok boyu 256−224=32256 - 224 = 32. 130'u içine alan 32'nin katı 128 (128, 160 arası). Dördüncü oktet sıfırlanır: 10.45.128.0. Broadcast 10.45.159.255 olur.

Soru 4orta

What is the broadcast address of the subnet containing 172.20.99.14/22?

Cevabı göster
172.20.99.255

/22 maskesi 255.255.252.0, üçüncü oktette blok boyu 4. 99'u içine alan blok 96 ile 99 arası. Ağ adresi 172.20.96.0. Broadcast, bloğun son adresi: 172.20.99.255. Kullanılabilir host sayısı 210−2=10222^{10} - 2 = 1022.

Soru 5kolay

A company owns 192.0.2.0/24 and divides it into equal /28 subnets. How many subnets are created?

Cevabı göster
16

Önekten 4 bit ödünç alındı: 28−24=428 - 24 = 4. Alt ağ sayısı 24=162^4 = 16. Her biri 24−2=142^4 - 2 = 14 host taşır.

Soru 6orta

Which address is a valid (assignable) host address in 192.168.5.64/27?

  1. 192.168.5.64
  2. 192.168.5.95
  3. 192.168.5.90
  4. 192.168.5.96
Cevabı göster
C) 192.168.5.90

/27 blok boyu 32. Alt ağ 192.168.5.64 ile 192.168.5.95 arası. 64 ağ adresi, 95 broadcast, 96 bir sonraki alt ağın ağ adresi. Host aralığı .65 ile .94 arası, yani .90 geçerli.

Soru 7orta

A router has the forwarding table below. To which interface does it forward a datagram destined to 135.46.57.14?

135.46.56.0/22   eth0
135.46.60.0/22   eth1
135.46.56.0/21   eth2
0.0.0.0/0        eth3
  1. eth0
  2. eth1
  3. eth2
  4. eth3
Cevabı göster
A) eth0

Eşleşenleri bul. 135.46.56.0/22 aralığı 56 ile 59 arası, 57 içinde: eşleşir. 135.46.56.0/21 aralığı 56 ile 63 arası: o da eşleşir. 60.0/22 (60 ile 63) eşleşmez. Default her şeye eşleşir. En uzun önek kazanır: /22 > /21, cevap eth0.

Soru 8orta

An ISP wants to advertise the four networks 57.6.104.0/24, 57.6.105.0/24, 57.6.106.0/24 and 57.6.107.0/24 as a single route. What is the aggregated prefix?

Cevabı göster
57.6.104.0/22

Üçüncü oktetleri ikiliye çevir: 104 = 01101000, 105 = 01101001, 106 = 01101010, 107 = 01101011. Ortak olan ilk 6 bit 011010. Ortak önek 16 + 6 = 22 bit. Ortak bitlerin dışı sıfırlanır: 57.6.104.0/22.

Soru 9orta

A department needs 500 hosts in a single subnet. What is the longest prefix (smallest subnet) that fits?

Cevabı göster
/23

2h−2≥5002^h - 2 \ge 500 olacak en küçük hh aranır. h=8h = 8: 254, yetmez. h=9h = 9: 510, yeter. Önek 32−9=2332 - 9 = 23.

Soru 10orta

Give the first and last usable host addresses of the subnet containing 192.168.200.130/25.

Cevabı göster
192.168.200.129 - 192.168.200.254

/25 maskesi 255.255.255.128, blok boyu 128. 130, 128 ile 255 arasındaki blokta. Ağ adresi .128, broadcast .255. İlk host .129, son host .254.

Soru 11zor

Are the hosts 10.1.5.10/23 and 10.1.4.250/23 on the same subnet?

Cevabı göster
Yes, both are in 10.1.4.0/23

/23 maskesi 255.255.254.0, üçüncü oktette blok boyu 2. 5 ve 4 aynı blokta (4 ile 5 arası). İkisinin de ağ adresi 10.1.4.0. Aynı alt ağdalar, router'a gerek olmadan haberleşirler. Üçüncü oktet farklı diye "farklı ağ" deme.

Soru 12zor

Which of the following is a private (RFC 1918) IPv4 address?

  1. 172.32.10.5
  2. 192.169.1.1
  3. 172.20.10.5
  4. 11.0.0.1
Cevabı göster
C) 172.20.10.5

Özel bloklar: 10.0.0.0/8, 172.16.0.0/12 (172.16 ile 172.31 arası), 192.168.0.0/16. 172.32 bu aralığın dışında, 192.169 da 192.168 değil. 172.20 ise 172.16/12 içinde.

Doğrulama: Bütün alt ağ cevapları node ile 32 bit tam sayıya çevrilip AND/OR maske işlemleriyle hesaplandı (verify/SEN2008/05.mjs).

Deftere not kartı

IPv4 = 32 bit, 4 oktet. /p = ilk p bit ağ, kalan 32-p bit host host sayısı = 2^(32-p) - 2 (/24: 254 /26: 62 /27: 30 /30: 2) maske oktetleri: 128 192 224 240 248 252 254 255 blok boyu = 256 - (ilginç oktetteki maske) /26 → 64 /20 → 16 (3. oktet) ağ adresi = IP AND maske; broadcast = ağ OR (NOT maske) ilk host = ağ+1, son host = broadcast-1 n bit ödünç → 2^n alt ağ VLSM: en büyük ihtiyaçtan başla, sınırlar blok boyunun katı olsun özetleme: ikiliye çevir, ortak önek bitlerini say LPM: eşleşenlerden EN UZUN önek kazanır, 0.0.0.0/0 en son çare özel: 10/8, 172.16/12 (16-31), 192.168/16