TCP/IP ve DoD Modeli
TCP/IP protokol kümesi Department of Defense (DoD) tarafından geliştirilmiştir. DoD modeli daha önce açıkladığımız OSI modelinin özetlenmiş hali gibi düşünülebilir. Bu modelde 4 katman mevcuttur. Bu katmanlar şunlardır;
– Process/Application katmanı
– Host-to-Host katmanı
– Internet katmanı
– Netword Access katmanı
Bu modelle OSI modelini karşılaştırırsak, bu modeldeki hangi katmanın OSI modelindeki hangi katmana denk düştüğünü aşağıdaki şekilden görebilirsiniz.
Şimdi de DoD modelinde her bir katmanda tanımlı olan protokolleri inceleyelim.
a ) Process/Application Katmanı Protokolleri
Telnet : Telnet bir terminal emülasyon protokolüdür. Bu protokol, kullanıcıların telmet istemci programlarını kullanarak Telnet sunuculara bağlanmalarını sağlar. Böylece telnet sunucuları uzaktan yönetilebilir.
FTP (File Transfer Protocol) : İki bilgisayar arasında dosya alıp vermeyi sağlayan bir protokoldür.
TFTP (Trivial File Transfer Protocol) : Ftp protokolünün bazı özellikleri çıkartılmış halidir. Mesela bu protokolde FTP protokolünde bulunan klasör-gözatma (directory-browsing) ve kullanıcı doğrulama (authentication) yoktur. Genellikle küçük boyutlu dosyaların lokal ağlarda aktarılması için kullanılır.
NFS (Network File System) : Bu protokol farklı tipte iki dosya sisteminin bir arada çalışmasını sağlar.
SMTP (Simple Mail Transfer Protocol) : Bu protokol mail göndermek için kullanılır.
LPD (Line Printer Deamon) : Bu protokol yazıcı paylaşımını gerçekleştirmek için kullanılır.
X Window : Grakfiksel kullanıcı arayüzü tabanlı istemci sunucu uygulamaları geliştirmek için tanımlanmış bir protokoldür.
SNMP (Simple Network Management Protocol) : Bu protokol network cihazlarının göndermiş olduğu bilgileri toplar ve bu bilgileri işler. Bu özelliğe sahip cihazlar SNMP yönetim programları kullanılarak uzaktan izlenip yönetilebilir.
DNS (Domain Name Service) : Bu protokol internet isimlerinin (örneğin www.mesutpek.com gibi) IP adreslerine dönüştürülmesini sağlar.
BootP (Bootstrap Protocol) : Bu protokol disket sürücüsü olmayan bilgisayarların IP adres almalarını sağlar. Şöyleki network’e bağlı disket sürücüsüz bir bilgisayar ilk açıldığında ağa bir Boot P istediğini broadcast yapar. Ağdaki BootP sunucu bu isteği duyar ve gönderenin MAC adresini kendi tabanında arar. Eğer veritabanında bu istemci için bir kayıt bulursa bu istemciye bir IP adresini TFTP protokolünü kullanarak yollar. Ayrıca yine TFTP protokolünü kullanarak istemciye boot edebilmesi için gereken dosyayı yollar.
DHCP (Dynamic Host Configuration Protocol) : Bu protokol ağ üzerindeki istemcilere dinamik olarak IP adresi dağıtma işlemini yapar. Istemcilere IP adresinin yanısıra alt ağ maskesi (subnet mask), DNS sunucusunun IP adresi, ağ geçici adresi, WINS sunucunun adresi gibi bilgilerde dağıtılabilir.
b ) Host-to-Host Katmanı Protokolleri
TCP (Transmission Control Protocol) : TCP protokolü uygulamalardan aldığı verileri daha küçük parçalara (segment) bölerek ağ üzerinden iletilmesini sağlar. Iki cihaz arasında TCP iletişimi başlamadan önce bir oturumun kurulması gerekir. Yani TCP connection-oriented türünde bir protokoldür. Bunun yanında TCP full-duplex ve güvenilir bir protokoldür. Yani gönderilen datanın ulaşıp ulaşmadığını, ulaştıysa doğru iletilip iletilmediğini kontrol eder. Bir TCP segmentinin formatı ise aşağıdaki şekildedir.
TCP başlığı 20 byte uzunluğundadır. Şimdi bu başlıktaki alanları teker teker inceleyelim. Kaynak port kısmında paketin ait olduğu uygulamanın kullanıldığı portun numarası bulunur. Hedef port kısmında ise alıcı uygulamanın port numarası bulunur. Sıra numarası kısmındaki sayı TCP’nin parçalara verdiği sayı numarasıdır. Paketler bu numaraya göre karşı tarafa gönderilir ve karşı tarafta paketleri bu sırayla birleştirir. ACK kısmındaki sayı ise TCP’nin özelliği olan güvenilirliğin bir sonucudur ve karşı tarafın gönderen tarafa hangi sıra numarasına sahip paketi yollaması gerektiğini belirtir. Yani karşı taraf birinci paketi aldığında gönderen tarafa ACK’sı 2 olan bir paket yollar. HLEN ise başlık uzunluğunu ifade eder. Saklı alanındaki bitler ise daha sonra kullanılmak üzere saklı bırakılmışlardır ve hepsi 0’dır. Kod bitleri kısmındaki değer ise bağlantının kurulması ve sonlandırılmasını sağlayan fonksiyonlar tarafından kullanılır. Pencere kısmındaki değer ise karşı tarafın kabul edeceği pencere boyutunu ifade eder. Checksum kısmındali değer CRC değeridir ve TCP tarafından hesaplanır. İvedi-durum işaretçisi eğer paketin içinde öncelikle değerlendirilmesi gereken bir veri varsa onun paket içindeki başlangıç noktasını işaret eder.
UDP (User Datagram Protocol) : Bu protokol TCP’nin aksine connectionless ve güvensiz bir iletişim sunar. Yani iletime başlamadan önce iki uç sistem arasında herhangi bir oturum kurulmaz. Ayrıca UDP’de gönderilen verinin yerine ulaşıp ulaşmadığı kontrol edilmez. Buna karşılık UDP TCP’den daha hızlıdır. Aşağıda bir UDP segmentinin formatı gösterilmiştir. Buradaki alanların işlevleri TCP segmentindeki alanlarla aynıdır.
c ) Internet Katmanı Protokolleri
IP (Internet Protocol) : IP protokolü internet katmanının temel protokolüdür. Bu katmanda tanımlı olan diğer protokoller IP protokolünün üzerine inşa edilmişlerdir. Bu protokolde ağ üzerindeki her bir cihaza bir IP adresi tanımlanır. Bu katmanda çalışan ağ cihazları (örneğin router) kendisine gelen paketlerdeki IP adres kısmına bakarak bu paketin hangi ağa yönlendirilmesi gerektiğine kara verir.
ICMP (Internet Control Message Protocol) : Bu protokol IP tarafından değişik servisler için kullanılır. ICMP bir yönetim protokolüdür ve IP için mesaj servisi sağlar. Bu protokolü kullanan servislere örnek olarak ping, traceroute verilebilir.
ARP (Address Resolution Protocol) : Bu protokol ağ üzerinde IP adresi bilinen bir cihazın MAC adresinibulmak için kullanılır.
RARP (Reverse Address Resolution Protocol) : Bu protocol ise ARP’nin tam tersini yapar. Yani MAC adresi bilinen bir cihazın IP adresini öğrenmek için kullanılır.
IP adresi sayısal bir değer olup IP ağlardaki her bir cihazın sahip olması gerekir. IP adresleri MAC adreslerinin tersine donanımsal bir adres değil sadece yazılımsal bir değerdir. Yani istenildiği zaman değiştirilebilir. IP adresleri iki kısımdan oluşur. Birinci kısım Network ID olarak bilinir ve cihazın ait olduğu ağı belirtir. İkinci kısım ise Host ID olarak adlandırılır ve IP ağındaki cihazın adresini belirtir. Her bir cihaz için IP adresi tüm ağda tek olmalıdır.
IP Adresleri
IP adresleri 32 bit uzunluğundadır ve birbirinden nokta ile ayrılmış dört oktetden oluşur. Bu sayılar 0 ile 255 arasında bir değer olabilir. Örnek bir IP adresi 192.168.10.101’dir. Peki network’teki cihaz hangi ağa sahip olduğunu nasıl anlar? Bunu anlamak için subnet mask (alt ağ maskesi) denilen değeri kullanır. IP adresi ile subnet mask değerini lojik AND işlemine tabii tutarak kendi Network ID’sini bulur. Her bir IP adres sınıfı için bu subnet mask değeri farklıdır. Burada yeni bir kavram karşımıza çıktı. IP Adres Sınıfları. Şimdi bu IP adres sınıflarını inceleyelim.
1.) A Sınıfı Adresler: IP adresindeki ilk oktet 0 ile 127 arasındadır ve varsayılan subnet mask ise 255.0.0.0 ‘dır. A sınıfı IP adreslerinde ilk oktet network ID’yi diğer üç oktet ise host ID’yi gösterir. Burada ilk oktet’in 0 ve 127 olma durumları özel durumlardır ve network’te kullanılmazlar. Örneğin 127.0.0.1 yerel loopback adresidir. Dolayısıyla A sınıfı IP adresi kullanılabilecek ağ sayısı 126’dır. A sınıfı IP adresine sahip bir ağda tanımlanabilecek host sayısı ise şu formülle hesaplanır; 224 – 2 . Bu işlemin sonucu olarakta 16.777.214 adet host olabilir. Peki burada kullandığımız 24 nereden geldi? A sınıfı adreste host’u tanımlamak için son üç oktet (sekizli) kullanılıyordu. Yani toplam 24 bit’i host tanımlamak için kullanabiliyoruz. Bu bitler ya 0 ya da 1 olmak zorunda. Bu yüzden birbirinden farklı kaç kombinasyon olacağını 224 ile bulabiliriz. Bu sayıdan 2 çıkarmamızın nedeni ise bu 24 bit’in hepsinin 0 veya 1 olmasının özel bir anlamı olduğu ve herhangi bir host’a IP adresi olarak verilemediği içindir. Örnek bir A sınıfı IP adresi 49.19.22.156 olarak verilebilir. Burada 49 bu IP adresinin ait olduğu ağın ID’sini 19.22.56 ise bu IP adresine sahip host’un host ID’sini gösterir.
2.) B Sınıfı Adresler: IP adresindeki ilk oktet 128 ile 191 arasındadır ve kullanılan subnet mask ise 255.255.0.0 ‘dır. Bu da demektir ki bu tür bir IP adresinde ilk iki oklet Network ID’sini, diğer iki oklet ise Host ID’yi gösterir. B sınıfı IP adresinin kullanılabileceği ağ sayısı 16.384 ve her bir ağda kullanılabilecek host sayısı ise 65.534’dür. Örnek bir B sınıfı IP adresi 160.75.10.110.olarak verilebilir.
3.) C Sınıfı Adresler: IP adresindeki ilk oktet’in değeri 192 ile 223 arasında olabilir ve varsayılan subnet mask değeri ise 255.255.255.0 ‘dır. Yani bu tür bir IP adresinde ilk üç oktet Network ID’yi son oktet ise Host ID’yi belirtir. Örneğin 192.168.10.101 IP adresini inceleyelim. Bu IP adresi C sınıfı bir IP adresidir. Bunu ilk oktetin değerine bakarak anladık. Bu IP adresinin ait olduğu ağın ID’si ise 192.168.10’dur. Bu IP adresine sahip cihazın host numarası ise 101’dir. C sınıfı IP adreslerinin kullanılabileceği ağ sayısı 2.097.152 ve bu ağların herbirinde tanımlanabilecek host sayısı ise 254’dür.
Bu üç IP sınıfının haricinde D ve E sınıfı IP adresleride mevcuttur. D sınıfı IP adresleri multicast yayınlar için kullanılır. E sınıfı adresler ise bilimsel çalışmalar için saklı tutulmuştur.
Subnetting
Subnetting kavramı nedir? Bu sorunun cevabını şöyle verelim. Farzedelim ki elimizde bir tane ağ adresiniz var fakat trafik olarak birbirinden bağımsız 4 tane ağ kurmak istiyorsunuz. Mesela şirketinizde bulunan muhasebe departmanı ile satış departmanlarının ağlarının birbirini etkilememesini istiyorsunuz ve elinizde bir tane ağ adresi var. Bu gibi durumlarda subnetting yani alt ağlara bölme işlemi yapılır. Bunun için IP adresindeki host’lar için ayrılmış kısımdaki bitlerden ihtiyaç olduğu kadarını subnet yapmak için alırız. Bu bitleri alırken gözönünde bulundurmamız gereken birkaç önemli nokta var. Bu noktalardan birincisi; kaç tane alt ağa ihtiyacımızın olacağını belirlememiz ayrıca her bir alt ağda kaç tane host bulunacağınıda gözönünde bulundurmamız gerekiyor. Alt ağ sayısını hesaplarken bu alt ağlar arasındaki bağlantılarıda bir alt ağ olarak hesaba katmalıyız. Host sayısını hesaplarken ise bu alt ağlar arası bağlantının sağlandığı arayüzleri de ayrı birer host gibi düşünüp hesaba katmalıyız.