

Bu başlık altında ana IP servislerini inceleyeceğiz. Şu da var ki satıcılar IP için farklı ürünlere sahip olabilirler ve bazı ürünler bu bölümde anlattığımız tüm özellikleri desteklemeyebilir.
Bir router datagramı alınca, başlığına bakarak işleteceği trafik tipine karar verir. Eğer trafik bir internet datagramı ise, datagram internet başlık kontrol programı modülüne iletilir. Bu modül IP datagram başlığı üzerinde bir takım düzenlemeler ve doğruluk testleri yapar. Başlık üzerinde aşağıdaki testler yapılır:
Eğer datagram testleri geçemezse yok edilir. Eğer testler yapılır ve datagram testleri geçerse, datagramın internet varış adresi incelenerek, bu router'a mı, başka bir router'a mı ait olduğuna karar verilir. Eğer datagram bu gateway için değilse, IP ilerletme programı modülüne atılarak rotalanır.
IP, kaynak rotalama denilen bir mekanizmayı, rotalama algoritmasının parçası olarak kullanabilir. Kaynak rotalama bir ULP'nin (üst katman protokolü) IP router'ına nasıl rotalama yapacağını bildirmesini sağlar. ULP, IP modülüne bir internet adresleri listesi verme opsiyonuna sahiptir. Liste, datagramların son varışa giderken geçecekleri ara IP düğümlerini içerir. Listedeki son adres bir ara düğümün son varışıdır.
IP bir datagramı alınca, bir sonraki ara düğümü belirlemek için kaynak rotalama alanındaki adresleri kullanır. Şekil 7-4'te gösterildiği gibi bir IP, diğer IP adresini öğrenmek için bir işaretçi alanı kullanır. İşaretçi ve uzunluk alanları listenin tamamlandığını gösterirse varış IP alanı rotalama için kullanılır. Eğer liste bitmemişse IP modülü işaretçinin gösterdiği adresi kullanır.
IP modülü sonra kaynak rotalama listesindeki değerin yerine kendi adresini yerleştirir. Daha sonra ise işaretçiyi bir adres (4 bayt) arttırarak diğer hop'un sıradaki adresi kullanabilmesini sağlar. Bu yaklaşım ile datagram ULP tarafından dikte edilen rotayı izler ve rota yol boyunca kayıt edilir.
Şekil 7-5'de rota kaydı ile ilgili bir örnek sağlanmıştır. İlk adımda IP, işaretçiyi kullanarak rota verisi alanındaki sıradaki adrese kilitlenir. Bu örnekte IP, 220.127.116.11 adresine kilitlenir ve bu adrese dayanarak bir rotalama kararı alır. İkinci adımda, şimdiki varış adresini belirtmek üzere rota verisi alanındaki 18.104.22.168 adresi yerine kendi adresini koyar. Üçüncü adımda, işaretçi değerini arttırarak sıradaki IP modülünün rotadaki bir sonraki (veya son) hop'u kararlaştırabilmesini sağlar.
IP router'ı rotalama listesine dayanarak rotalama kararları alır. Eğer varış host'u başka bir ağda ise IP router'ı, datagramı diğer ağa nasıl rotalayacağına karar vermelidir.
Her bir gateway, son varış ağına gitmek için geçilmesi gereken diğer gateway'lerin bilgilerini bir rotalama tablosunda tutar. Tablo her bir ulaşılabilir ağın girişini içerir. Tablolar statik veya dinamik olabilir, ancak dinamik tablolar daha yaygındır. IP modülü, aldığı tüm datagramlar için bir rotalama kararı verir.
IP modülü rotalama tablosunda her bir erişilebilir ağ için bir IP adresi ve kendine komşu bir router'ın adresini saklar (buradaki router doğrudan IP modülünün bulunduğu ağa bağlantılıdır). Komşu router varış ağı için en kısa rotadır. Eğer bir komşu router için hiç bir adres yoksa, IP router mantığı router'ın doğrudan bu ağa bağlı olduğunu çıkarır.
IP rotalaması, mesafe metrik denen bir kavrama dayanır. Bu değer genelde router ve son varış arasındaki birkaç hop'tan ibarettir. Router rotalama tablosuna başvurur ve IP başlığında bulduğu varış ağ adresi ile rotalama tablosunda bulunan bir ağ girişini eşleştirmeye çalışır. Eğer eşleşme yoksa, datagram yok edilir ve IP kaynağına bir ICMP mesajı iletilir. Bu mesaj "varış ulaşılamazdır" kodu içerecektir. Eğer rotalama tablosunda bir eşleşme mevcut ise router bunu kullanarak çıkışın yapılacağı porta karar verir.
IP bir datagramı son varışa rotalamak için iki seçenek sağlar. Birincisinde (esnek kaynak rotalama denir) IP modülü kaynak listesinde sağlanan adreslere ulaşmak için ara hopları kullanabilir. Datagram seyahat ettikçe düğümler listelenir. Sert kaynak rotalamada ise datagram yalnızca kaynak listesinde adresleri belirtilen ağlar boyunca seyahat edebilir. Eğer sert kaynak rotası takip edilemezse, datagramı yollayan host'un IP'sine bir hata mesajı yollanır. Esnek ve sert rotalamanın ikisi de rota kaydı özelliği isterler.
Rota kaydı opsiyonu kaynak rotalamaya benzer biçimde çalışır, ancak aynı zamanda kayıt özelliğini kullanır. Böylece her bir IP modülü bir datagram alınca, datagramın adresini rota kayıt listesine ekler (Şekil 7-6'ya bakınız). Rota kayıt işleminin yapılması için alıcı IP modülü, işaretçi (pointer) ve uzunluk alanlarını inceleyerek rotayı kayıt etmek için boş yerinin olup olmadığına karar verir. Eğer rota kayıt listesi dolu ise IP modülü datagramın adresini almadan onu ilerletir. Eğer dolu değilse işaretçi kullanılarak ilk boş tam-oktet slotuna adres yerleştirilir ve sonra IP modülü işaretçiyi sıradaki IP slotunu göstermek üzere arttırır.
IP'deki kullanışlı seçeneklerden biri; datagram internet içerisinde her bir IP modülünü geçerken, datagramın zaman-damgasının görülebilmesidir. Bu fikir bir ağ yöneticisinin datagramın internetteki rotasına karar vermesini sağladığı gibi aynı zamanda her bir IP modülünün datagramı işleme zamanını bilmesini de sağlar. Bu özellik ile router'ların, ağların ve rotalama algoritmalarının etkinlikleri karşılaştırılabilir.
Şekil 7-6'da zaman-damgası işlemlerinin opsiyon alanlarının formatı gösterilmektedir. Önceki opsiyonlarda olduğu gibi bir IP adresini ve onun ilgili zaman damgasını doğru slota yerleştirmek için uzunluk ve işaretçi alanları kullanılır. Oflw alanı yalnızca bir IP modülü kaynak yetersizliği veya çok-küçük opsiyon alanı gibi nedenlerle bir zaman-damgası oluşturamamışsa kullanılır. Böyle bir sorunu olan her bir modül için bu değer arttırılır.
4-bitlik bayrak alanı her bir IP modülüne zaman-damgası işlemleri için rehberlik sağlamak amacı ile kullanılır. Bu alandaki değerleri şöyle açıklarız:
Zaman-damgasında kullanılan zaman milisaniyeler mertebesindedir ve evrensel zamana (Greenwich Mean Time) göredir. Açıkçası, evrensel zamanın kullanımı cihazlar arasında tam doğru zaman damgalarını garanti etmez, çünkü cihazların saatleri biraz değişebilir. Bununla beraber çoğu ağda milisaniyeler mertebesindeki evrensel zaman fark edilir bir doğruluk derecesi sağlar. Ağ zaman protokolü (NTP) bu opsiyon için kullanışlı bir araçtır.
Bir IP datagramı farklı PDU büyüklükleri kullanan çeşitli ağlardan geçebilir. Her ağın bir maksimum PDU büyüklüğü vardır ve buna maksimum iletim birimi (MTU) denir. Bu yüzden IP, bir büyük datagramı daha küçük datagramlara bölecek prosedürler içerir. ULP, IP'yi fragmantasyon yapabilir veya yapamaz diye şartlayabilir. Tabii ki IP son varışta bir yeniden-birleştirme mekanizması kullanarak fragmanları orijinal iletimdeki hallerine getirebilmelidir.
Bir IP router modülü, transit altağın iletebileceğinden daha büyük bir datagram alınca fragmantasyon işlemlerini kullanır. Datagramı; 8-oktetlik sınırlarla dizecek biçimde iki veya daha çok parçaya böler. Her bir fragmana tanımlama, adres ve orijinal datagrama ait tüm opsiyon bilgilerini içeren bir başlık eklenir. Fragman paketlerine orijinal datagramdaki yerlerini tanımlayan bilgiler de eklenir.
Şekil 7-1'i referans alırsak, bayraklar (3-bit) şöyle kullanılır.:
İlginçtir ki IP, her bir fragman işlemini ayrık olarak ele alır. Şöyle ki, fragmanlar son varışa gitmek için farklı router'lardan geçebilirler ve eğer geçtikleri ağ daha küçük veri birimleri kullanıyorsa tekrar fragmantasyona uğrayabilirler. Fragmanlarda offset değeri bunu belirtmek ve fragman sıralarının karışmasını önlemek üzere set edilir. Şekil 7-7'de iki router boyunca yapılan bir çoklu fragmantasyon gösterilmiştir.
Altağ 128.3 1500-oktet PDU büyüklüğü kullanır. 128.3 altağı bu veri birimini A router'ına geçirir. A Router'ı PDU'yu 21.4 altağına rotalamaya karar verir. 21.4 altağı 512-oktet PDU büyüklüğünü desteklemektedir. Router 1500'lük veri birimini 512, 512 ve 476 oktetlik 3 daha küçük parçaya ayırır (1500 = 512 + 512 + 476). 476 oktetlik son parçaya, 8'in tam katına ulaşmak için 0'lar eklenir. Böylece bu veri alanı 480 oktet (476 + 4 = 480, ki 8'in tam katıdır) olur.
A router'ı veriyi 21.4 altağına iletir. Veri buradan da B router'ına iletilir. Bu router, datagram fragmanlarını 21.5 altağına göndermeye karar verir. B router'ı 21.5'in 256 oktet büyüklüğünde PDU'lar kullandığını bildiğinden, yeni bir fragmantasyon gerçekleştirir. 512 oktet büyüklüğündeki fragmanları daha küçük veri birimlerine böler ve gelen üç fragmanın offset değerlerini kullanarak gereğince yeni veri birimlerinin offset değerlerini ayarlar. Dikkat edelim ki offset değerleri B router'ında değiştirilmiştir ve yeni değerler önceki fragmanların offset değerleri kullanılarak türetilmiştir.
Şekil 7-8'de, alıcı host'ta paketlerin yeniden-birleştirilmesi gösterilmektedir. IP modülü ilk fragmanı alınca tampon boşluğunu hazırlar. Her bir fragman için bir tampon ayrılır ve fragman göreceli olarak orijinal datagramdaki yerine göre tampondaki yerine yerleştirilir. Tüm fragmanlar gelince IP modülü veriyi, gönderici ULP'den yollandığı orijinal düzeni ile ULP'ye geçirir.
Konuyu tartışabilmek için Şekil 7-7'de görülen datagram fragmanlarının başka router'lara (Y ve Z'ye diyelim) rotalandığını varsayalım. Analize devam etmek için Şekil 7-8'de "zaman oku"nun gösterdiği sırayla (en önce n zamanı, en son n + m zamanı) Y ve Z router'larından fragmanların IP'ye vardıklarını söyleyelim. Böylece fragmanlar aşağıdaki sırayla gelirler:
Alıcı cihaz için fragmanları yerleştirmek oldukça kolay bir iştir. IP modülü, fragmanı tamponun hangi slotuna yerleştireceğine karar vermek için offset değerini 8 ile çarpar. Örneğin ilk gelen fragmanın tampondaki göreceli pozisyonu hafıza adresi 768 olarak hesap edilir (96 × 8 = 768).
Şekil 7-8'deki birleştiren host, dördüncü fragman gelene kadar IP datagramının tam uzunluğunu bilmez. Dördüncü fragman M = 0 biti (son fragman), offset değeri ve fragman uzunluğu bilgilerini içerir. Offset değeri 160 ve uzunluk 220 oktet olduğundan host, artık orijinal datagramın 1500 oktet [(160 offset değeri) × (8 oktet her değerde) + (220 oktet son fragman)] olduğunu bilir.
Şimdi M bitinin neden çok önemli olduğunu gördük. Fragmandaki uzunluk alanı orijinal datagramın büyüklüğü yerine fragmanın büyüklüğünü gösterdiğinden, orijinal uzunluğu (ve son fragmanı) kararlaştırmanın tek yöntemi M = 0 işaretçisidir.
Eğer bazı fragmanlar varışa gelmezlerse veya TTL parametresini aşarlarsa, IP varışa gelen fragmanları yok eder. Ayrıca ilk fragmanın gelmesi ile alıcı bilgisayar bir birleştirme zamanlayıcısı çalıştırır. Ağ yönetici tarafından kurulan bu zamanlayıcı, tüm fragmanların belirli bir sürede gelmesini zorunlu kılar. Eğer zamanlayıcının verdiği süre dolana kadar tüm fragmanlar gelmezse, gelen fragmanlar yok edilir.
Eğer kullanıcı, fragmantasyon oluşmasını istemezse, fragman bayrağı 1 yapılır. Bu, datagramlar üzerinde fragmantasyon yapılamayacağını belirtir. Bu alan böyle set edilirse ve MTU geçeceği bir altağ kapasitesini aşarsa datagramlar router tarafından yok edilir.
Bağlantısız router'lar datagramları birleştiremediği halde bazı bağlantı-yönlendirmeli router'lar ara birleştirmeler yapabilirler.

