|
Nisan 1999, İlker TEMİR
IP Adreslemeye Genel Bir Bakış
Internet üzerinde bilgisayarlar nasıl adreslenirler ve paketler
yollarını nasıl bulurlar. Bu soru bilgisayar ağları ile uğraşan herkesin
bir süre kafasını kurcalamış bir sorudur. Bu soruya yanıt bulabilmek için
internet'in temel protokolü olan TCP/IP'nin yapısını bir miktar bilmek
gerekmektedir.
TCP/IP protokolünde tüm bilgisayarlar 32 bitlik 'özgün' bir IP numarasına
sahip olacak şekide adreslenirler (buradan çıkarılabilecek teorik bir sonuç
ise internete aynı anda bağlı olabilecek bilgisayar sayısının en fazla
232 = 4,294,967,296 olabileceğidir) Bunu bir örnekle ele alırsak,
internet üzerinde 3,559,735,316 sayısı ile adreslenmiş bir
bilgisayar düşünelim. Bu sayının heksadesimal karşılığının D42D4014 olduğunu
kolaylıkla hesaplayabiliriz. Bu şekilde bir gösterimin hemen hiç kimseye
birşey ifade etmeyeceği sanırım oldukça açık bir şekilde görülmektedir.
Bu yüzden şu şekilde bir yol izlenir, bu 32 bitlik adres 8 bitlik adresler
halinde 4'e ayrılıp (D4 2D 40 14 şeklinde), daha alışıldık bir sayı sistemiyle
çalışabilmek için desimale çevrilirler (0xD4 = 212, 0x2D = 45, 0x40 = 64
ve 0x14=20). Bu gösterim son olarak aralara konan bir nokta ile birleştirilir
ve sonuç olarak IP numarası olarak tanımlanan notasyona ulaşılır, yani
internet üzerinde 3,559,735,316 sayısı ile adreslenmiş bilgisayar
212.45.64.20 IP nolu bilgisayardır. Benzer bir yaklaşımı tersten izleyecek
olursak A.B.C.D IP nosuna sahip olduğu bilinen bir bigisayarın gerçek adresi,
A * 224 + B * 216 + C * 28 + D şekline hesaplanır.
Örneğimizden yola çıkarsak 212.45.64.20 için gerçek adres 212 * 224
+ 45 * 216 + 64 * 28 + 20 = 3,559,735,316 'dır.
IP numarasının bu şekildeki gösterilimi aslında internet trafiğinin
yönünün nasıl bulunduğu konusunda hiçbirşey ifade etmez elbette, bir yığın
halinde bulunan 4 milyarın üzerindeki adresin bir kısım gruplara ayrılması
zorunludur. Trafiğin yönünün belirlenmesi ancak paketlerin belli IP gruplarından
gelmesi ve belli gruplara yönelmesi ile mümkün olabilecektir. Bu durumda
her IP paketi, kendi numarasının bağlı olduğu gruplar için tanımlanmış
kurallara göre hareket eder. Yapılan gruplama işlemine ise subnetting adı
verilir. Bu işlem sırasında IP adresi ait olduğu grubu ve bu grubun üyeleri
arasında kaçıncı sırada olduğunu belirtmek üzere iki kısma ayrılır. İlk
kısma network numarası, ikinci kısma ise uç adresi adı verilir ve işlem
şu şekilde gerçekleşir.
Tüm internet IP bloğunu 255 kısma ayırmayı istediğimizi düşünelim,
bu gruplama sonucunda ortaya çıkacak IP numaralarının 1.x.y.z, 2.x.y.z,
......,255.x.y.z şeklinde olacağı kolay bir akıl yürütme ile görülebilmektedir.
Bu tanımlamada elde edilen IP numaralarının oluşturduğu blokların her birine
subnet veya network adı verilmektedir ve 1.0.0.0 networkü, 2.0.0.0 networkü
vs şeklinde telaffuz edilmektedir. Bu durumda örneğin 2 ile başlayan bütün
IP numaralarının (2.x.y.z) 2.0.0.0 networkünün parçası olduğu kolayca anlaşılabilir.
Dikkati çekmesi gereken bir nokta elde edilen blokların hala devasa boyularda
olduklarıdır (224 = 16,777,216) ve bu bloklar kendi içlerinde daha fazla
bölünmeye tabi tutulabilirler, örneğin 1.0.0.0 networkünü 1.0.0.0, 1.1.0.0,
.... 1.254.0.0, 1.255.0.0 şeklinde 255 ayrı networke ayırmak da mümkündür,
aynı şekilde 1.1.0.0 networkünü de 1.1.1.0, 1.1.2.0,....1.1.255.0 vs şeklinde
daha da küçültmek mümkündür, bu işleme her blokta 2 hatta 1 IP kalıncaya
kadar devam edilebilir. Burada önemli nokta bu blok büyüklerinin ihtiyaca
göre belirlenmesi gereği ve her bloğun bir üst bloğun alt kümesi
olmasıdır. Daha detaylı açıklarsak, 1.0.0.0 networkünden bahsediyor iseniz
otomatik olarak 1.1.0.0 networkünden ve 1.10.5.0 networkünden de bahsediyorsunuz
demektir.
IP numarasını network numarası ve uç adresi olarak ikiye böldüğümüzü
yukarıda söylemiştik, bunları örneklerle açıklaylım, test amacıyla seçtiğimiz
212.45.64.20 IP numarasından yola çıkarsak, bu IP'nin hem 212.0.0.0 hem
212.45.0.0 hem de 212.45.64.0 networklerinde yer alan bir IP olduğu söylenebilir.
Burada kritik nokta netwok numarası olarak hangisinin alınacağı (212, 212.45,
212.45.64) daha da önemlisi buna nasıl karar verileceğidir. Açıkça görülen
odur ki bunu bilmek yalnızca IP numarası ile mümkün olmamaktadır.
Bu nedenle IP numarasının hangi bitlerinin network numarasınını temsil
ettiğini, hangilerinin ise uç adresini oluşturduğunu tanımlayacak
başka bir bilgiye ihtiyaç duyulmaktadır. Buna 'subnet mask' adı verilmektedir.
Çoğu zaman kullanıcıların kafasını karıştırmakla beraber aslında anlamı
ve kullanımı son derece açıktır.
Subnet mask'ı daha sonra detaylı incelemek üzere kabaca tanımlarsak
network numarasının bulunduğu bit pozisyonlarında 1, kalan pozisyonlarda
0 bulunduran bir sayı olarak tarif edebiliriz.
Örneğin 212.45.64.20 IP'sini alt bölümlemeye gitmeden 212.0.0.0
bloğunun bir parçası olarak görmek istiyorsak, network adresini yalnızca
ilk 8 bitin oluşturduğunu söylüyoruz demektir. Bu durumda subnet maskımız
8 tane 1 ve 24 tane 0 'dan oluşacaktır (toplam 32'yı verecek şekilde).
Subnet mask (binary) : 11111111 00000000 000000000
0000000
Subnet mask (desimal) :
255 0
0 0
Subnet mask
: 255.0.0.0
Ya da 212.45.0.0 bloğunun bir parçası olmasını istiyorsak, bu kez network
adresini ilk 16 biti ile tanımlamamız gerekecektir, bu durumda subnet mask
16 tane 1 ve 16 tane 0'dan oluşacaktır.
Subnet mask (binary) : 11111111 11111111 000000000
0000000
Subnet mask (desimal) : 255
255
0 ; 0
Subnet mask
: 255.255.0.0
Son olarak, 212.45.64.0 bloğu için aynı hesaplamayı yaparsak, network
adresi ilk 24 bitte bulunacaktır. Subnet mask ise 24 tane 1 ve 8 tane 0'dan
oluşacaktır.
Subnet mask (binary) : 11111111 11111111 11111111
0000000
Subnet mask (desimal) :
255 255
255 0
Subnet mask
: 255.255.255.0
Burada subnet mask'ı belitrmek için kullanılan farkli bir yöntemden
bahsetmek gerekir, bu da '/' ayracı ile IP numarasına ya da network numarasına
eklenen bir sayıdır (212.45.64.20/25 veya 212.45.64.0/19 gibi). Burada
verilen sayı subnet maskta ilk kaç bitin 1 olduğunu gösterir. Örneğin /8,
8 tane 1, 24 tane 0 anlatır, bu da 255.0.0.0 netmaskının eşdeğeridir, yine
benzer şekilde /16, 16 tane 1, 16 tane sıfırı tanımladığı için 255.255.0.0'ın,
/24 de 255.255.255.0'ın eşdeğer gösterimleridir.
Daha çok kullanılan subnetler için konulmuş bir takım isimler
vardır, burada bunlardan da bahset gerekir. İlgili isimler, kısa bir tanımlama
ile Tablo 1'de verilmiştir.
Tablo1:
NetMask /' lü gösterim
Ip Adedi
Isim
255.0.0.0
/8
16,777,216 &n bsp; A Sınıfı
(A Class)
255.255.0.0 /16
65,536
&nb sp; B Sınıfı (B Class)
255.255.255.0 /24
256
&nbs p; C Sınıfı (C Class)
* Kullanılabilen IP adedi burada verilenden iki eksik olacaktır
(bir broadcast ve bir network numarası için)
Kullanıcılar arasında sıkça karşılaşılan 32'lik bir C class veya
128'lik bir C class gibi kullanımlar tamamen yanlıştır. Çünkü bir 'C class'
tanımı gereği 256'lık bir bloktur.
Subnetlerin buraya kadar olan kısmı hemen herkesçe bilinmesine
rağmen genellikle /24'den küçük bölümlemeler sorun yaratmaktadır. Bilgisayar
ağları ile uğraşırken çoğu zaman 32'lik, 64'lik veya 128'lik subnetlere
ihtiyaç duyulmaktadır. Bunların nasıl yapılacağını doğrudan örneklerle
açıklamanın daha faydalı olacağını düşünüyorum.
Elimizde bulunan 212.45.64.0/24 'lük bir bloğu 8 tane 32'lik
subnete ayımak için neler yapılması gerektiğine bakalım. Öncelikle 32'lik
bir subnet için maskın ne olduğunu hesaplamak gerekmektedir.32, 2'nin beşinci
kuvvetidir, yani 0-31 arası sayılar binary sistemde 5 bitle yazılabilirler.
Öyleyse subnet maskta sağdan 5 biti uç adresi için ayırmamız gerekmektedir,
geriye kalan 27 bit ise network kısmını oluşturacaktır. Bu durumda 32'lik
subnet için masklar,
Subnet mask (binary) : 11111111 11111111 11111111 11100000
Subnet mask (desimal) :
255 255
255 224
Subnet mask : 255.255.255.224
olacaktır. Her subnet için ayrılan 32 IP için sırasıyla network adresleri
212.45.64.0/27, 212.45.64.32/27, ...., 212.45.224/27 olacaktır. Ancak burada,
bir adet /24'te yalnızca 0 ve 255 olarak iki IP kullanılamazken (biri network
numarası diğeri broadcast) 32'lik subnetlere ayrıldığında her biri için
için 2, toplam 2*8=16 IP numarasının kullanılamadığına dikkat edilmelidir.
Benzer bir şekilde 212.45.64.0/24 'lük bloğumu 4 tane 64'lük
subnete ayıralım. 64, 2'nin altıncı kuvvetidir, yani 0..63 arası sayılar
6 bitle yazılabilirler, öyleyse, 64'lük bloklar için masklar,
Subnet mask (binary) : 11111111 11111111 11111111 11000000
Subnet mask (desimal) :
255 255
255 192
Subnet mask : 255.255.255.192
şeklinde olacaktır. Sırasıyla subnetler de 212.45.64.0/26, 212.45.64.64/26,
...., 212.45.64.192/26 olacaktır. Burada kaybedilen IP sayısı 4*2=8 olarak
hesaplanabilir.
Son olarak aynı bloğu 128'lik iki bölüme ayırırsak, masklar
Subnet mask (binary) : 11111111 11111111 11111111 10000000
Subnet mask (desimal) :
255 255
255 128
Subnet mask : 255.255.255.128
Şeklinde olacaktır. Sırasıyla subnetler 212.45.64.0/25 ve 212.45.64.128/25
olacaktır. Kaybedilen IP sayısı ise 2*2=4'tür.
Genel kullanımda bir blok her zaman eşit büyüklükteki bloklara
bölünmez. Elinizdeki bir C sınıfı bloğu 1 128'lik, 1 64'lük ve 2 32'lik
bloğa bölmek isteyebilirsiniz. Detaylara girmeden incelersek böyle bir
bölümleme 212.45.64.0/25, 212.45.64.128/26,212.45.64.192/27, 212.45.64.224/27
şeklinde yapılabilir.
Burada en çok dikkat edilmesi gereken nokta, istediğiniz bir bloğu
oluşturmak için büyük bloğun yerini istediğiniz gibi seçemeyeceğinizdir.
Örneğin 128'lik bir bloğu 212.45.64.64'ten başlatıp 212.45.64.192'de bitiremezsiniz,
benzer şekilde 212.45.64.32'de başlayıp 212.45.64.96'da biten bir /26 blok
da tanımlayamazsınız. Başlangıç adresleri kesinlikle bloktaki_IP_sayısı
* n (n tamsayı) formülü ile elde edilebilecek sayılar olmalıdır. Örneğin
64'lük bir blok ancak 0,64,128,192 adreslerinden başlayabilir, benzer şekilde
128'lik bir blok da ancak 0 veya 128 adreslerinden başlayabilir.
Son olarak verilen bir IP numarası / subnet mask çifti ile bu
IP'nin ait olduğu bloğun nasıl bulunabileceğini açıklayarak bu bölümü bitiriyorum.
Bir IP'nin ait olduğu network, IP numarasının binary hali ile
subnet maskın binary hali arasında yapılacak birebir 'VE' işlemi (bitwise
AND) ile bulunur, örneklemek için 212.45.64.20/25 IP numarasının ait olduğu
networkü bulalım.
/25, 25 adet 1 ve 7 adet 0'dan oluşan bir netmask anlamına gelmektedir
(255.255.255.128), binary ortamda ifade edecek olursak
Netmask : 11111111 11111111 11111111 10000000
IP numarasını binary olarak ifade edersek ise
IP : 11010100 00101101 01000000 00010100
Değelerini elde ederiz.
Birebir 'VE' işlemi ile
11010100 00101101 01000000 00010100
VE 11111111 11111111 11111111 10000000
11010100 00101101 01000000 00000000
212 45
64 0
Bu sonuç 212.45.64.20/25 IP numarasının 212.45.64.0/25 networkünde
bulunduğunu göstermektedir.
Aynı işlem 212.45.64.228/27 IP numarası için tekrarlanırsa
11010100 00101101 01000000 11100100
VE 11111111 11111111 11111111 11000000
11010100 00101101 01000000 11000000
212 45
64 224
elde edilir, bu da 212.45.64.228/27 IP numarasının 212.45.64.224/27
networkünde yeraldığını gösterir.
Yazarın İzni Olmaksızın ve Kaynak Gösterilmeksizin
Kullanılamaz
|