TCP/IP, ilk defa ABD'de ARPANet (Advanced Research Projects Agency Network) adı altında, askeri bir proje olarak geliştirildi. Önceleri askeri amaçlı düşünülen proje önce ünivesiteler tarafından kullanılmaya başlandı. Ardından ABD'nin dört bir yanında birbirinden bağımsız geliştirilen ağlar, tek bir omurga altında NSFNet olarak adlandırıldı ve ulusal boyutu aşarak dünyaya yayıldı. İnternet'in doğuşu da bu tarihe denk gelir. Bir sokak üzerinde yeralan evlerin adresleri gibi, İnternet'e bağlı olan her makinanın da bir adresi vardır. Bu adres sayesinde bir bilgisayardan diğerine ulaşmak mümkün olur. İnternet adresi 4 bayttan (32 bit) ibaret olup yazılırken her bayt arasına bir nokta konulur. En çok kullanılan bu gösterim şekline örnek olarak, ODTÜ'deki bir sunucunun adresi olan 144.122.199.20'yi verebiliriz.
Bununla beraber, 4 baytlık numaraların kolayca hatırlanmasının mümkün olmadığından, İnternet üzerindeki makinalara
alfanümerik adlar da verilebilir. Yukarıda örneğini verdiğim adresin ismi, knidos.cc.metu.edu.tr'dır. ilk noktaya kadar olan
kelime, makina adıdır(yukarıdaki örnekte knidos), bundan sonraki noktayla ayrılmış bölümler özelden genele doğru
makinanın ait olduğu kurum, kurumun tipi ve ülke gibi bilgiler içerir. Bu adlandırma yöntemiyle ilgili ayrıntılı bilgiyi Alan İsimlendirme Sisteminin (Domain Name System - DNS) anlatıldığı bölümde bulabilirsiniz.
İnternet Adresleri
İnternet üzerinde 3 sınıf adres vardır. Avrupa'da RIPE (Réseaux IP Européens) tarafından dağıtılan bu adresler daha sonra
o yerin ağ yöneticisi tarafından uygun şekilde bölünebilir. Bu bölümlendirmeye ``subnetting '' işlemi adı verilir. Bu sayede ağlar
gruplanarak herbirisinin yönetimi bağımsız hale getirilmiş, aynı zamanda da kısıtlı olan IP adresleri daha verimli bir şekilde
kullanılmış olur.
Üç çeşit İnternet adresi şunlardır :
A sınıfı İnternet adresi: Adresin ilk baytı 1 ile 126 arasında bir sayıdır. Bu adrese verilen yetkiyle toplam 2^24
makina adreslenebilir. Dünya üzerinde 126 tane A sınıfı adres vardır.
B sınıfı İnternet adresi: Adresin ilk baytı 128 ile 192 arasında bir sayıdan oluşur. Bu adresin subnetlere
bölünmesiyle 65534 farklı makina adreslenebilir.
C sınıfı İnternet adresi: Adresin ilk baytı 192 ile 223 arasındadır. C sınıfı bir adresi blokuyla bağlı 254
bilgisayar adreslenebilir.
A ve B sınıfı adreslerin hepsi dağıtılmış ve şu anda intenet C sınıfı adreslerde de sıkıntı çekilmektedir. Adres
yetersizliğine çözüm getirmek amacıyla IPv6 ya da IPNG adlarıyla daha uzun İnternet adresleri kullanan protokoller
geliştirilme ve test aşamasındadır.
Bir İnternet adresi iki kısımdan meydana gelir: ağ adresi ve düğüm adresi . Her makina, bir ağ üzerinde bulunur ve bu adres
``ağ adresi'' olarak adlandırılır. Üç sınıf (A, B ve C) İnternet adresinin ağ ve düğüm adresleri farklı farklıdır. A sınıfı
İnternet adreslerinde ağ adresini 1 bayt tayin eder. Örnek olarak hayali yazılan 74.198.59.33 makinasını tanımlayan ağ
adresi 74'tür. Ağ adresi uzun halde yazıldığı zaman kalan 3 baytın yerine 0 konur. Bu durumda yukarıda adı geçen
makinaya ait ağ adresi 74.0.0.0 olacaktır.
Ağ adresinden geriye kalan düğüm adresi , bir makinanın İnternet sınıfına göre 1,2 veya 3 bayttan ibaret olabilir. Örnek
olarak,
195.12.288.3 makinasının (C sınıfı) ağ adresi 195.12.288.0, düğüm adresi 3'tür.
130.11.195.62 makinasının (B sınıfı) ağ adresi 130.11.0.0, düğüm adresi 195.62'dir.
Düğüm adresleri yerine 4 baytı da kullanmak da olası. Yukarıdaki iki örnek için düğüm adreslerini sırasıyla 195.12.288.3 ve
130.11.195.62 olarak kabul edebiliriz.
Yukarıda sözedilen subnetting (alt ağlara ayırma ), çok sıkça kullanılan bir yöntem olup getirdiği birtakım kolaylıklar
vardır. Büyük bir iletişim ağı alt ağlara ayrılırsa, kontrol edilmesi daha kolaylaşır.
Bir kuruluş, kendine ait olan B sınıfı adresi subnetlere bölmek isteyebilir. Gerekli düzenlemeleri yaparak bir B sınıfı adresi
(örneğin) 255 adet alt adrese ayırabilir. ODTÜ'nün NIC'den aldığı 144.122.0.0 ağı, 254 parçaya bölünmüş, bu parçalardan
144.122.71.0 alt ağı Bilgisayar Mühendisliği bölümüne, 144.122.34.0 alt ağı Kimya Mühendisliği bölümüne verilmiştir.
Bundan sonra her bölüm kendi ağı ve üzerindeki makinalardan sorumlu olur.
Protokoller
İnternet protokollerinin yaygınlaşmasındaki en önemli etkenlerden biri herhangi bir ağ donanımına ya da firmaya özel
olmamalarıdır. Bilgisayarınız, işletim sistemiz ya da ağ bağlanma yönteminiz ne olursa olsun intenete bağlamanız mümkündür.
İnternet protokolleri RFC adı verilen dokümanlarda açıklanır, bu dokümanlar herkese açıktır ve ücretsizdir. RFC'lere
ftp://nic.ddn.mil/rfc/NIC ya da
ftp://ftp.metu.edu.tr/pub/documents/rfc/ODTÜ'deki yansısından erişebilirsiniz.
İnternet protokollerinin temeli Internet Protocol (IP)'dir. İnternet üzerinde yönlendirme(routing) gibi temel ağ işlemlerinin
gerçekleştirildiği protokol katmanıdır. IP paketlerinin her biri kendi başlarına aradaki ağ cihazları tarafından yönlendirilen
paket içinde belirtilen adrese ulaştırılır. Bu sırada fiziksel ağ farklılıklarından kaynaklanan paket
parçalanmaları(fragmentation) ve bunların yeniden birleştirilmeleri aradaki ağ cihazlarının aşırı yüklenmelerini önlemek gibi
görevler de IP katmanı tarafından gerçekleştirilir.IP bağlantı temelli(connection oriented) bir ağ protokolü değildir. Bunun
yanı sıra IP paketlerin içeriklerinin doğruluğunu da garanti etmez. IP katmanı sadece başlık kısmında oluşan hataları bulur
ve düzeltir. İnternet üzerinde yönlendirme, yukarıda sözü edilen adreslerden yararlanılarak yapılır.
Kullanıcı uygulamalarının IP katmanına doğrudan ulaşımları yoktur. IP ve uygulama programları arasındaki bağlantıyı
sağlayan iki protokol vardır: Transmission Control Protocol (TCP ) ve User Datagram Protocol (UDP ). TCP, İnternet
protokolleri arasındaki en önemli protokollerden biridir (İnternet protokol ailesi bu nedenle TCP/IP diye adlandırılır.). TCP,
IP katmanının sağlamadığı bağlantı temelli, güvenilir servisi sağlar. TCP kullanarak ağ üzerinden veri aktaran programlar, bir
dosyadan okuyormuş ya da yazıyormuş gibi güvenle ağ bağlantısını kullanabilirler. Arada oluşan hatalar TCP tarafından
onarılır. IP protokol katmanına uygulama programları doğrudan erişemediklerinden, hata kontrolü ve bağlantı gerektirmeyen
ya da bu işlemleri kendileri gerçekleştirmek isteyen uygulamalar UDP kullanarak ağ üzerinden iletişim sağlarlar.
Yukarıdaki protokollerin yanı sıra İnternet standardı olmuş birçok uygulama protokolü de vardır. Bunlar arasında,
TELNET, FTP, SMTP ve HTTP gösterilebilir.
İnternet üzerinde paketler son makinaya ulaştıktan sonra, ilgili uygulama programına ulaşabilmesi için port adı verilen sanal
numaralar kullanılır. Servis veren uygulamalar, önceden belirlenmiş standart port numraları kullanırlar. Örnek olarak SMTP
25 numaralı TCP portunu, talk ise 518 numaralı UDP portunu kullanır. Sisteminizin kullandığı port numaraları ve bunların
isimlerini /etc/services dosyasından görebilirsiniz.
İnternet'e Bağlanma
Linux'u İnternet'e bağlamak ilk aşamada biraz zor görünse de biraz teori, biraz pratik yardımıyla mantık kolayca
anlaşılabiliyor. Ağlar, bilgisayar sistemlerinde hata olma olasılığı en yüksek, en çok sorunun çıktığı alandır. Bu bölüm,
özelde bir ethernet kartı ile bağlantı yapıldığı varsayılarak anlatılmıştır. Ancak anlatılan birçok kavram herhangi bir
yapıdaki İnternet bağlantısı için geçerli olacaktır.
Öncelikle çekirdeği -daha önce yapmamışsanız- ağ bağlantısına destek verecek şekilde tekrar derleyin. Bunun için gerekli
birkaç soruya "y" cevabı vermek yeterli olacaktır :
CONFIG NET ? [Y/n] y
...
TCP/IP networking (CONFIG_INET) [Y/n/?] y
...
Network device support (CONFIG_NETDEVICES) [Y/n/?]
...
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [N/y/?] y
...
Other ISA cards (CONFIG_NET_ISA) [N/y/?] y
...
NE2000/NE1000 support (CONFIG_NE2000) [N/y/m/?] y
Yukarıdaki örnekte ethernet kartınızın ne2000/ne1000 ya da uyumlu bir kart olduğu var sayılıyor. Kartınızın
marka/modeline uygun seçeneneğe `y' cevabı vermelisiniz. Ethernet kartlarının dışında bağlanma yönteminize bağlı olarak
çekirdeği PPP, SLIP, Token Ring gibi bir destekle derlemeniz gerekebilir. Bunları modül olarak derlemeniz de mümkün.
Çekirdek derlemek konusunda daha ayrıntılı bilgiyi bu kitabın ilgili bölümünde bulabilirsiniz.
Tabi ki çekirdeği derlemek yetmiyor, derleme aşamasından sonra ağ desteğine sahip olan çekirdek ile makinanın açılması
gerekir.
Bağlantıyı gerçekleştirmek için ağ sorumlusundan bazı önemli bilgileri almalısınız. Makinanızın IP adresi bunların başında
gelir. Diğer gerekli bilgiler de subnet mask ve broadcast adresidir.
DNS adres çözümleyici olarak çalışan DNS makinası ve makinanızı İnternet'e bağlayacak olan yönlendiricinin IP adreslerini
de biliyor olmalısınız.
Bu aşamadan sonra konfigürasyon işlemlerine geçilebilir.
Ağ Konfigürasyonu
Bu bölümde anlatılan rc.* konfigürasyon dosyaları Slackware dağıtımına özeldir. Diğer dağıtımlarda da açılışta çalışan
benzeri rc dosyaları değiştirilerek, ya da sistemle birlikte gelen sistem yönetim araçları kullanılarak istediğiniz konfigürasyonu
yapabilirsiniz.
Linux, açılırken bazı dosyalara bakarak düzgün çalışması için gerekli konfigürasyonu yapar ve bazı yazılımları çalıştırır.
Bu dosyalar /etc/rc.d dizini altında yeralır. İnternet bağlantısı için sadece iki dosyaya gerek duyulur. Slackware
dağıtımı içinde bunlar, konfigürasyonu yapan /etc/rc.d/rc.inet1 ve temel ağ programlarını çalıştıran
/etc/rc.d/rc.inet2 dosyalarıdır.
Bu dosyadaki değerleri gerektiği şekilde düzenleyerek İnternet'e bağlanacağız. Öncelikle rc.inet1 dosyasının içeriğine göz
atalım:
HOSTNAME=`cat /etc/HOSTNAME`
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0
IPADDR="144.122.71.55"
NETMASK="255.255.255.0"
NETWORK="144.122.71.0"
BROADCAST="144.122.71.255"
GATEWAY="144.122.71.1"
/sbin/ifconfig eth0 $IPADDR broadcast $BROADCAST netmask $NETMASK
/sbin/route add -net $NETWORK netmask $NETMASK
/sbin/route add default gw $GATEWAY metric 1
ifconfig komutu, ağ bağlantısı yapan kartın belirli parametreler ile konfigürasyonunun sağlar. Kart kimliğini bilgisayara
tanıtmak için bu komut kullanılır.
İlk satırdaki ifconfig programı, makinanın kendisiyle haberleşmesini sağlamak amacıyla kendi ağ adresini (loopback device )
127.0.0.1 olarak tanıtmıştır. İnternet üzerindeki her makinanın loopback adresi 127.0.0.1 'dir. 127 ile başlayan hiç bir
adres, İnternet üzerinde gerçek bir adres olarak kullanılamaz.
Her paket, gönderileceği adrese gitmeden önce bir tabloya bakar. Bu tablo, paketin muhtemel rotasını içerir. route komutu
yardımıyla bu tablo oluşturulur veya kontrol edilir. Genellikle bir kart için bir ifconfig kullanılırken, paketin yollanacağı
birden fazla rotanın olması durumunda rc.inet1 dosyasında birden fazla route komut girdisi yapılacaktır.
Kullanılan her ağ kartının bir veya birden fazla internet adresi olabilir. Linux'a takılan birinci kart eth0 ismini alırken ikinci
karta eth1, üçüncüye eth2 ... denir. Loopback cihazının ismi lo dur. ifconfig komutunu parametre vermeden kullanırsanız,
Linux'a tanıtılan çevresel birimlerin listesi ekrana gelir.
$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:493 errors:0 dropped:0 overruns:0
TX packets:493 errors:0 dropped:0 overruns:0
eth0 Link encap:10Mbps Ethernet HWaddr 48:54:33:00:E8:3A
inet addr:144.122.71.55 Bcast:144.122.71.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:171956 errors:0 dropped:0 overruns:0
TX packets:113212 errors:3 dropped:0 overruns:0
Interrupt:3 Base address:0x300
ODTÜ'deki bir Linux makinasının makinasının ifconfig bilgisi yukarıdaki şekildedir. Bu makina üzerinde tek ethernet kartı
olup, ifconfig bilgisinde ikinci sırada yeralıyor. Kartla ilgili detaylı bilgi (her kart özgü donanım numarası, alınan ve verilen
paket sayısı gibi) ifconfig çıktısında var.
route komutunun genel kullanımı şu şekildedir:
route [add || del] [-net || -host] varis_adresi [gw yonlendirici] secenekler...
host: paketin gideceği yer başka bir makina
net: paketin gideceği yer başka bir ağ
varış_adresi: paketin gideceği yer
yönlendirici: bu paketin gidebilmesi için geçmesi gereken yönlendirici
add: tabloya ekle
del: tablodan sil
Tablonun genel durumunu kontrol etmek için route komutuna parametre vermeden komut satırından yazın:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
localnet * 255.255.255.0 U 0 0 67 eth0
loopback * 255.0.0.0 U 0 0 3 lo
default router71.ceng.m 0.0.0.0 UG 1 0 404 eth0
Örnek tabloda üç ayrı yönlendirme girişi vardır. Birincisi, makinanın kendisi ile haberleşmesini sağlayacak olan loopback.
İkinci satırda, yerel ağa gidecek olan tüm paketlerin yönlendiriciye verilmeden ağa yönlendirilmesi söylenmiş. Son sırada ise
(default) paket ilk iki satırda yeralan varış adresinden farklı bir adrese gidecekse, önce yönlendiriciden geçip sonra dış
dünyaya açılacağından yönlendiricinin IP adresi yazılmıştır.
ifconfig, biraz karmaşık bir komuttur. Sistem yöneticisinden öğrenmeniz gereken subnet maskesi, broadcast adresi ve IP
adresini kullanıp kartların konfigüre eder.
ifconfig eth0 144.122.71.55 netmask 255.255.255.0 broadcast 144.122.71.255
Yukarıda ifconfig yardımıyla eth0 kartına hem bir IP adresi verilmiş, hem de bilgisayarın bulunduğu ağın özellikleri
tanıtılmıştır.
Bu andan sonra istendiği kadar route komutu ile makinadan çıkacak paketler için yeni yollar tanımlanabilir.
route add -net ...
route add -host ...