2. TCP/IP
2.1. IP Nedir?
Internet’e bağlı bir bilgisayar en az bir Internet protokol (IP) adresi bulunur ve bu adres onu Internet’e bağlı diğer bilgisayarlardan ayırır. Bir veri gönderdiğiniz veya aldığınız zaman (Örneğin, bir e-posta veya bir web sayfası), veri veya mesaj paket denilen küçük parçalara bölünür. Bu paketlerin her biri göndericinin adresini ve alıcınin Internet adresini ihtiva eder. Herhangi bir paket Internet’in küçük bir bölümünü anlayabilen “gateway” bilgisayara gönderilir. Gateway bilgisayar paketin gideceği adresi okur ve bu adrese göre paketi ilgili bir gateway bilgisayara gönderir ve sıra ile Internet üzerindeki diğer gateway bilgisayarlar, paketin yakın komşusundaki bilgisayara ait olduğunu anlayana kadar aynı işlemi yapar. Paketin adresini tanıyan gateway bilgisayar, paketi doğrudan adresi belirtilen bilgisayara gönderir. Birçok pakete bölünen mesajdaki her bir paket gerektiğinde Internet üzerindeki farklı bir güzergahtan gönderilir. Bu durumda paketler gideceği adrese farklı sıralarda varabilir. Internet protokol, paketlerin yalnız iletimini sağlar.
Diğer bir protokol, İletim Kontrol Protokolü (Transmission Control Protocol, TCP), gelen paketleri sıraya dizer. IP, haberleşmeyi sağladığı iki uç donanım arasında devamlı bir bağlantı kurmaz ve bu nedenle bağlantısız protokol olarak adlandırılır. Internet içinde seyahat eden her bir paket, diğer paket veya veriler ile ilgisi bulunmayan bağımsız bir birim olarak kabul edilir.
IP şebekesine karşın geleneksel şebeke (Devre anahtarlamalı telefon şebekesi, PSTN): IP üzerinden ses ve IP şebekeleri ile devre anahtarlamalı geleneksel şebekeler arasındaki ana fark, bir donanımdan diğer donanıma bilgi alınmasındaki metot farkıdır. Geleneksel Kamu Anahtarlamalı Telefon Şebekesinde (PSTN) bir çağrı yapıldığında, iki donanım arasında fiziksel bir hat kurulur. IP üzerinden ses durumunda, donanım arasında tahsis edilmiş bir bağlantı yoktur. Bunun yerine konuşma bilgisi veya verisi (Analog konuşma sayısal konuşmaya çevrilir) kodlanır ve paketlere bölünür. Bir donanımdan diğer donanıma bu bilgi paket anahtarlamalı şebeke üzerinden iki donanım arasında devamlı bir bağlantı kurulmadan şebeke içindeki mümkün olan en hızlı yol üzerinden iletilir. Internet, paket veri şebekelerinde bilgiyi nakletmek için aynı metodu kullanır. Her çeşit veri (Doküman, resim, ses) paketlere bölünür ve şebeke boyunca gönderilir. Paketler gideceği yere vardığı zaman, yeniden sıralanarak birleştirilir.
2.2. IP Üzerinden Sesli Çağrı Kurulması
IP telefon veya yazılım telefonu (IP üzerinden ses iletimi ile donatılmış bilgisayar) analog konuşmayı sayısal paketlere çevirir. Bunlar eternet kablosu üzerinden IP şebekesine iletilirler. Kullanıcının donanımı, merkezi bir şebekede kayıtlı olduğu için, aynı donanım şebeke üzerinde herhangi bir yerde, altyapıda bir değişiklik yapılmadan kullanılabilir.
I) Anolog konuşma, bir ses kodlayıcı tarafından (Voice encoder) sayısal sinyale çevrilir.
II) Bu sayısal sinyal IP paketlerine bölünür ve gideceği yere sıraya bakılmaksızın, sürekli bir sinyal olmadan, gönderilir.
III) IP paketleri IP şebekesi boyunca bireysel olarak iletilirler.
IV) IP üzerinden sağlanan ses hizmetinin merkezi bir çağrı sunucusudur (Call server). Bu sunucu bütün çağrıları kontrol eder ve hizmetin aklını oluşturur.
V) IP üzerinden ses için, gateway, PSTN şebekesine bağlantı ara yüzü oluşturur.
VI) Alici tarafta bulunan bir Jitter, paket şebekenin oluşturduğu herhangi bir gecikmeyi dengeleyerek, düzgün ve kesintisiz ses çıkışını kod çözücü (Decoder) üzerinden sağlar.
2.3. TCP/IP’ye Giriş
TCP/IP’nin kökleri 1960’ların sonunda ve 1970’lerin başında Amerikan Savunma Bakanlığına bağlı İleri Araştırma Projeleri Ajansının (Advanced Research Projects Agency, ARPA) yürüttüğü paket anahtarlamalı ağ deneylerine kadar uzanır. TCP/IP’nin yaratılmasını sağlayan proje, ABD’deki bilgisayarların bir felaket anında da ayakta kalabilmesini, birbiriyle iletişiminin devam etmesini amaçlıyordu. Şimdi baktığımız zaman projenin fazlasıyla amacına ulaştığını ve daha başka şeyleri de başardığını görüyoruz.
TCP/IP’nin tarihi aynı zamanda Internet’in tarihidir. Internet ile TCP/IP ayrılmaz kardeşlerdir. TCP/IP, Internet’in temelidir. Bildiğiniz gibi Internet’in bir sahibi yoktur. Herkes Internet’in sahibidir, hiç kimse Internet’in sahibi değildir. Ama bu, Internet tümüyle başıboş demek de değildir. Internet’i Internet’in protokolü TCP/IP’yi düzenleyen gönüllü kuruluşlar vardır. Bunları şöyle sıralayabiliriz:
Internet Society: (ISOC, Internet Derneği) 1992 yılında oluşturulmuştur. Internet’te kullanılan teknolojileri, uygulamaları, kuralları belirler. Her ülkede yerel Internet Dernekleri bulunur.
Internet Architecture Board: (IAB, Internet Mimarisi Kurulu) ISOC içinde teknik kuralları öneren kuruldur. Bu kurulun altında da üç kurul bulunur. Internet’i düzenleyenler de aslında bunlardır. Bu kurullar hakkında da kısaca bilgi vereyim:
Internet Engineering Task Force: Internet Mühendislik Görev Gücü: Internet standartlarını oluşturur, teknik sorunlara çözüm üretir.
Internet Assigned Number Authority: Internet Numara Atama Merkezi: Internet’te kullanılan protokolleri belirler ve gelecek için planlama yapar.
Internet Research Task Force: Internet Araştırma Görev Gücü: TCP/IP ile ilgili araştırma projelerinden sorumludur.
Bu kısa tarihçeden sonra bir yerel alan bilgisayar ağı üzerinde TCP/IP’yi anlatmaya geçelim. Buradaki anlattıklarım Internet üzerinde de geçerli olacaktır. TCP/IP genelde bir bilgisayar ortamında iki program arasında iletişim kurulması için kullanılan bir protokoldür. Burada programlar Server (Sunucu, İşgören) ve Client (İşveren) olarak iki ayrı konumda çalışır. Kısaca söylemek gerekirse programlardan biri gelen bilgiyi işleyip diğer programa göndermeyi gerçekleştirirken, bilgiyi alan program, işlenmiş bilgiyi görüntüler ya da kullanır. Bu kavram bize iki değişik ortamda çalışan programlar yazma olanağı getirir.
Genelde kullanıcıların hepsinde yalnız kullanıcı ara yüzü olan programlar çalışırken, merkezde veri tabanı erişimi, yazıcı paylaşımı ve dış dünya ile bağlantı için gereken programlar bulunur. Kullanıcı bilgilerinin ekrandan alınması sırasında kullanıcı bilgisayarında çalışan program merkezdeki programla bağlantı olmadığından tüm işlem yükü yalnız kullanıcı bilgisayarında kalır. Bu işlemler için merkez bilgisayar bir emek harcamaz. Bilgi tamamlanıp merkeze gönderildiğinde ilgili program, gelen bilgi üzerinde gereken işlemleri yapıp sonuçları kullanıcının bilgisayarına iletir. Aradaki iletişim sürekli değildir. İletişim yalnız mesaj alış verişi sırasında kurulur. Ancak aynı anda birden çok kullanıcı bir merkeze bağlantı kurabildiğinden merkezdeki bilgisayar yüksek işlem gücü ile donatılır.
Kullanıcı bilgisayarları ise herkesin kullandığı PC'ler olabilir. Bazı koşullarda tüm kullanıcılara her işi yapan yetki verilmez. Ancak kullandıkları programın veri tabanına ekler yapması, ya da verilerin bazılarını değiştirmesi gerekebilir. Bu durumda sunucu tüm yetkiler ile donatılır ve client program gerekli mesajı göndererek işlemin yapılmasını ister. Burada sunucu ve client programlar aynı bilgisayarda çalışabilir. Örneğin bir java applet ile ekrandan girilen bilginin diske yazılması hakkı bir server programa mesaj gönderilerek yapılabilir. Burada java applet, bilgiyi alırken kullanıcının yetkisi olup olmadığını, güvenlik kuralları çerçevesinde kontrol eder (Kullanıcı adı ve şifresi almak gibi) ve uygun güvenlik bilgilerini mesajla birlikte sunucuya gönderir. Bu nedenle TCP/IP iletişim programları kullanıcılara client ve sunucu programlar yazarak uygulama alanlarını genişletme olanağı getirir. Burada anlattığım ve ileride anlatacağım bazı temel kavramlar, TCP/IP hakkında teknik bilgileri içermektedir. Amaç, çeşitli uygulamalarda bu kavramları kullanarak iletişim programları yazılımını kolaylaştırmaktır.
2.4. TCP/IP Internet Protokolü
TCP/IP, Transmission Control Protocol/Internet Protocol ifadesinin kısaltması. Türkçe’si “İletim Kontrol Protokolü/Internet Protokolü” anlamına geliyor. Protokol belirli bir işi düzenleyen kurallar dizisi demektir. Örneğin, devlet protokolü devlet erkanının nerede duracağını, nasıl oturup kalkacağını düzenler. Ağ protokolleri de bilgisayarlar arası bağlantıyı, iletişimi düzenler.
TCP/IP’nin adına bakıp tek bir protokol olduğunu düşünmemeliyiz. TCP/IP, bir protokoller kümesidir. Her biri değişik işler yapan bir yığın protokolden oluşur.
TCP/IP ile kurulan bir bilgisayar ağında bir bilgisayarı üç parametre ile tanımlarız. Bu parametreler: Bilgisayarın ismi, IP adresi ve MAC adresi (Media Access Control: Ortama Erişim Adresi)’dir.
TCP/IP protokoller kümesi bu üç parametreyi kullanarak bilgisayarları birbirine bağlar.
Bilgisayarın ismi kullanıcı tarafından işletim sistemine yüklenirken bilgisayara verilen addır (Bilgisayarlara MUHASEBE, SATIS, VERITABANI ya da AHMET, ALPAY gibi açıklayıcı ve anımsanması kolay isimler verilir).
IP adresi ise 172.44.123.89 örnek adresinde olduğu gibi dört bölmeden oluşan bir adrestir. Nokta ile birbirinden ayrılan bu bölmelerin her biri 0 (sıfır) ile 255 arasında bir değer alabilir.
MAC adresi, bilgisayarların ağ kartının ya da benzer cihazlarının içine değiştirilmez bir şekilde yerleştirilmiş bulunan bir adrestir. 0020AFF-8E771 örneğinde olduğu gibi onaltılık düzende (Hexadecimal) rakamlardan oluşur. MAC adresi yerine donanım (Hardware) adresi ya da fiziksel (Phisical) adres terimleri de kullanılabilir.
Ağ üzerinde iletişim aslında yalnızca MAC adresleri ile gerçekleşir. Çünkü IP adresleri TCP/IP protokolüne özeldir. Başka bir protokolde, örneğin, Novell’in kullandığı IPX/SPX protokolünde IP adresi diye bir şey yoktur. Bütün protokollerde değişmeden kalan tek şey MAC adresidir.
Her protokol kendine göre bir protokol şeması kullanır ama bu şemalarda yer alan adreslerin dönüp dolaşıp en alttaki MAC adreslerine çevrilmesi gerekir.
Bir bilgisayar bir başka bilgisayarın IP adresine sahipse ama MAC adresine sahip değilse Adres Çözümleme Protokolü (Address Resolution Protocol, ARP) adı verilen bir protokol kullanarak IP adresini MAC adresine çevirir. TCP/IP’nin bir protokol kümesi olduğunu belirtmiştim. İşte ARP bu kümenin bir üyesidir.
İletişime geçeceği bilgisayarın IP adresini bilen bir bilgisayar ARP protokolü ile “Bu IP adresi kiminse bana MAC adresini söylesin” şeklinde bir mesaj oluşturur ve bu mesajı broadcast yapar, yani, ağdaki tüm bilgisayarlara gönderir. Ağdaki tüm bilgisayarlar bu mesajı alırlar, eğer söz konusu IP adresi kendilerine ait değilse mesajı çöpe atarlar. Mesajdaki IP adresinin sahibi olan bilgisayar ise kendi IP adresini tanır ve hemen “Bu IP adresi bana ait, benim MAC adresim şudur” şeklinde bir mesajla yanıt verir. İlk bilgisayar artık diğer bilgisayarın MAC adresini bildiği için asıl mesajını doğrudan (Broadcast yapmadan) gönderebilir.
Peki, bir bilgisayar IP adresini nasıl alır? Bunun iki yolu vardır: Ya siz bu adresi elle girersiniz, ya da bir bilgisayar belli bir adres havuzundan aldığı adresleri diğer bilgisayarlara dağıtır. Adresleri elle girmenin en büyük sakıncası adreslerin, subnet mask değerinin ve default gateway gibi diğer bazı bilgilerin yanlış girilebilmesidir. Eğer ağdaki bilgisayar sayısı 5-10’u aşıyorsa adresleri elle girmek pek akıllıca değildir.
IP adreslerini otomatik olarak dağıtmanın bir yolu vardır ve bu yolun adı Dinamik Bilgisayar Konfigürasyonu Protokolü (Dynamic Host Configuration Protocol, DHCP) ‘dür. Bu protokol ile bir bilgisayar DHCP sunucu (Server) olarak tanımlanır ve IP adres dağıtımı bu sunucu üzerinden yapılır.
DHCP sunucu üzerinde bir IP adres havuzu tanımlıdır (Örneğin 172.123.34.100 ile 172.123.34.300 arası gibi). Henüz IP adresi almamış olan bir bilgisayar, eğer IP adresini DHCP’den alacağı belirtilmişse, açıldığında, “Ben yeni açıldım, henüz bir IP adresim yok, eğer ortamda bir DHCP sunucu varsa bana bir IP adresi göndersin” anlamında bir mesaj yayınlar (Broadcast eder). Eğer ortamda bir DHCP sunucu tanımlı ise bu mesajı alır “Ben bir DHCP sunucu olduğuma göre bu mesaja yanıt vermeliyim” şeklinde düşünüp kendisinde tanımlı olan IP adreslerinden boşta olanlardan birini seçerek bilgisayara gönderir. IP adresi alan bilgisayar artık diğer bilgisayarlarla iletişim kullanırken bu adresi kullanır.
Böylece bir IP adresinin nasıl alındığını anlamış olduk, IP adresinin nasıl MAC adresine çevrildiğini anlamıştık. Şimdi “İyi ama, biz Windows 98’de ya da Windows NT’de Ağ Komşuları’na (Ya da Network Neighborg’a) tıkladığımızda karşımıza IP adresleri ya da MAC adresleri gelmiyor ki, yalnızca bilgisayar isimleri geliyor” diyebilirsiniz; haklısınız. Baştaki söylediklerimizi düşünürsek; TCP/IP dünyasında bir bilgisayarı üç şey belirler: Bilgisayarın ismi, IP adresi, MAC adresi. Bir bilgisayarın MAC adresini ya da IP adresini değil de ismini kullanmak daha kolaydır. Aksi taktirde bilgisayarların IP adreslerini daha da kötüsü MAC adreslerini ezberlemek zorunda kalabilirdik. Bu yüzden bilgisayarlara hatırlanması kolay ve açıklayıcı isimler verir ve iletişim sırasında bu isimleri kullanırız.
Bilgisayar ismini kullanmak kolayımıza gidiyor ama ağ üzerinde iletişim gerçekte MAC adresleri üzerinden gerçekleşiyor. O zaman bilgisayar ismini önce IP adresine çeviren daha sonra da MAC adresine çeviren mekanizmalar, protokoller olmalıdır. IP adresini MAC adresine çeviren protokole değinmiştim (ARP Protocol). Bilgisayar adları IP adreslerine nasıl çevriliyor şimdide buna kısaca değineyim: En basit olarak şunu yapabiliriz: Bulunduğumuz yerde “Adı şu olan makine bana IP adresini bildirsin” anlamında bir mesaj broadcast ederiz. Eğer bulunduğumuz ortamda böyle bir bilgisayar varsa bize IP adresini verir. Ama bunu yapmaktan kaçınmamız gerekir. Çünkü yayınladığımız broadcast mesajlar ağ üzerindeki her bilgisayarı gereksiz yere meşgul ederler. Bu bir apartmanın önüne gelip birilerini dışarı çıkarmak için arabanın kornasına basmaya benzer. İstediğiniz kişiler dışarı çıkarlar ama bu arada tüm apartmanı ayağa kaldırırsınız. Aynı işi apartmanın kapısındaki zil tablosuna bakıp ilgili zili çalarak ta yapabilirsiniz. Bu durumda da amacınıza ulaşırsınız üstelik kimseyi de rahatsız etmemiş olursunuz.
Bilgisayar ağları da benzer mekanizmalar kullanabilir. Şu anda bu iş için iki temel seçeneğiniz vardır: DNS ve WINS. “Neden iki seçenek” diye sorabilirsiniz. Çünkü bu iki ayrı seçenek iki ayrı ismi IP adresine çeviriyor. PC dünyasında bilgisayarların iki ismi vardır. Birincisi en çok 15 karakter olabilen NetBIOS ismi. Diğeri ise 256 karakter olabilen Unix/Internet ortamındaki “Host” ismi. NetBIOS ismine örnek olarak “MUHASEBE” şeklinde bir isim verebiliriz. Host ismine örnek olarak ise “bilgi.sanor.com.tr” ismini verebiliriz. Host ismindeki ilk parametre (“bilgi”) bir Internet domainindeki bilgisayarın ismidir. Host ismini geri kalanı ise o bilgisayarın bulunduğu Internet domain’ini tanımlar (sanor.com.tr). Buradaki domain, NT’deki domain’den tamamen farklıdır. İkisi arasında bir bağlantı yoktur.
Bilgisayarların domain+bilgisayar isminden oluşan host ismine Tümüyle Tanımlanmış İsim (Fully Qualified Name, FQN) de denir.
İsimler iki tane olunca isim/IP eşleştirme (Çözümleme) mekanizmaları da iki tane olur. Microsoft, NetBIOS isimlerini IP adresine çevirme konusunda Windows Internet Adlandırma Servisi’ni (Winsows Internet Naming Service, WINS) öneriyor. Host isimlerini IP’ye çevirme konusunda ise hem Microsoft, hem de Internet dünyası Domain İsim Sistemi (Domain Name System, DNS) mekanizmasını kullanıyor.
WINS servisinde bir makineyi WINS sunucusu olarak tanımlıyoruz, bütün bilgisayarlar gidip adlarını ve IP adreslerini bu sunucuya bildiriyorlar (Yeni bir eve taşındığımızda hane halkının mahallenin muhtarına kayıt olması gibi). Böylece WINS sunucusu üzerinde ortamdaki bilgisayarların isimleri ve IP adreslerine ilişkin bir veritabanı oluşturulmuş oluyor.
Bir bilgisayar ismini bildiği bir bilgisayarın IP adresini bulmak istediği zaman broadcast yapmak yerine bu sunucuya gidiyor “Şu addaki bilgisayarın ismi nedir?” Şeklinde bir soru soruyor. WINS sunucu da kendi veritabanına bakarak soruyu yanıtlıyor. Bu aşamadan sonrasını zaten açıklamıştım (ARP ile IP adresi MAC adresine çevriliyor, sonra da MAC adresi üzerinden iletişim gerçekleştiriliyor.
Bu bağlamda “Bilgisayarlar ortamda bir WINS sunucunun var olup olmadığını varsa adresini nereden biliyorlar?” şeklinde bir soru aklınıza gelebilir. Bu sorunun yanıtı “WINS sunucu adresi elle girilmiştir” şeklinde verilebilir. Ağ Özellikleri sayfasına gidilir, TCP/IP protokolü seçilir ve WINS kısmından ortamdaki WINS sunucu adresi girilebilir. Peki WINS sunucu adresinin de otomatik bir şekle verilme olanağı yok mu?
Yukarıda DHCP’yi anlatırken DHCP sunucunun IP adresinin yanı sıra başka bilgileri de istemci bilgisayarlara (DHCP client’lara) gönderebileceğini söylemiştik.İşte bu bilgilerden birisi de WINS sunucunun adresidir. DHCP sunucudan IP adresi alan bilgisayarlar ortamdaki WINS sunucunun adresini de öğreniyorlar ve gidip kendilerini kaydettiriyorlar. Bu işlem otomatik olarak, el değmeden son derece fenni yöntemlerle gerçekleştiriliyor.
Yukarıdaki son cümle biraz abartılı görülebilir, ama bunun bir nedeni var: WINS, Microsoft tarafından bulunan ve kullanılan bir yöntemdir. Internet’te isim IP eşleştirmesi için başka bir yöntem kullanılıyor: DNS (Domain Name System). Bu sistemde bilgisayar adları ve IP adresleri DNS sunucu olarak konumlandırılan bilgisayarlara “Elle” kaydediliyor. Burada WINS’dekine benzer bir otomasyon söz konusu değil. İsim-IP bilgilerini girme işi bilgi işlem bölümü çalışanlarının üzerine kalıyor. Bilgiler DNS’e kaydedildikten sonra bir bilgisayar ismini bildiği bir bilgisayarın IP adresini öğrenmek isterse DNS sunucuya gidiyor ve adını soruyor.
Bilgisayarlar ortamda bir DNS sunucu olup olmadığını nereden biliyorlar? Bu sorunun cevabı artık daha kolay: DNS sunucunun adresi ya elle statik olarak giriliyor ya da DHCP tarafından DNS sunucu adresi de dağıtılabilir.
DNS sisteminin kötülüğü bilgilerin elle girilmesinde ve statik olmasındadır. Bilgisayar adlarının ve IP adreslerinin elle girilmesi ve değiştirilmesi gereklidir.
Windows NT’de 4.0 versiyonuna kadar bir DNS sunucu fonksiyonu bulunmuyordu. 4.0 ile birlikte DNS sunucu fonksiyonu da eklendi. Üstelik Microsoft DNS’i WINS’e bağlamayı da başardı. 4.0’da, DNS sunucu bir kaydı kendi veritabanında bulamazsa ortamdaki bir WINS sunucuya sorabilir ve ondan aldığı yanıtı iletebilir. Bu yöntemle hem Microsoft çözümünü koruyor hem de DNS sunucu isteklerini karşılıyor.
Kısaca özetlersek:
TCP/IP bir protokoller kümesidir. TCP/IP, Internet’in protokolüdür. Son yıllarda ise Internet’in yanı sıra yerel bilgisayar ağlarında da hızla yaygınlaşmıştır. TCP/IP içindeki DHCP, bilgisayarlara otomatik olarak IP konfigürasyonu dağıtmak için kullanılır. ARP, IP adresini MAC adresine çevirir. WINS, NetBIOS isimlerini IP adresine çevirir. DNS, host isimlerini IP adresine çevirir.
2.5. TCP/IP’nin Yapısı
Bilgisayar ağlarını anlatan kitaplara bakarsak hepsinde yedi katmanlı OSI yapısından söz edildiğini görürüz. Burada TCP/IP de ise dört katmanlı bir yapı düşünüyoruz. Aşağıdaki şekilde bu katmanları ve katmandaki protokolleri görebiliriz.
1) Uygulama (Application)
2) İletim (Transport)
3) Internet
4) Ağ Ethernet, Token-Ring, FDDI, Frame Relay, X-25, SLIP, PPP
2.6. Ağ (Network) katmanı
Ağ katmanı bilgisayarlarda bulunan ağ kartını, kabloları vs. şeyleri göstermektedir. Veri paketlerinin ağa iletilmesinden ve ağdan çekilmesinden bu katman sorumludur.
2.7. Internet Katmanı
İnternet Katmanında IP’ye göre düzenlenmiş veri paketlerini görüyoruz. İletim katmanından gelen veriler burada Internet paketleri haline geliyor. Paketlerin yönlendirilmesi ile ilgili işler de burada yapılıyor. Bu katmanda dört adet protokol bulunuyor:
I) ARP: IP adreslerini MAC adreslerine çeviriyor.
II) ICMP: Kontrol mesajları gönderip karşılığında gitti gitmedi bilgisi sağlıyor. PING komutu bu protokolü kullanarak karşı bilgisayarın TCP/IP konfigürasyonu bakımından ayakta olup olmadığını anlar.
III) IGMP: Multicast gruplarını belirlemek için kullanılır. Bir ağda mesajlar üç şekilde gönderilebilir: Mesaj ya bütün makinelere (Broadcast message), ya bir gruba (Multicast message) ya da doğrudan bir makineyi (Direct message) gönderilebilir.
IV) IP: Paketlerin adresleme ve yönlendirme işlemlerini yapar.
2.8. İletim (Transport) katmanı
İletim Katmanında bilgisayarlar arası iletişim için oturumlar düzenlenir. Burada iki seçenek söz konusudur:
I) TCP: Bağlantılı (Connection-oriented) ve güvenilir bir iletişim sağlar. Buradaki bağlantı mantıksal bir bağlantıdır: İki bilgisayarın iletişim kuralları için anlaşmaları demektir. TCP’ye uygun olarak gönderilen paketler için bir onay mesajı beklenir. Belli bir süre içerisinde onay mesajı gelmezse paket yeniden gönderilir. Bu da iletimin güvenli olması anlamına gelir.
II) UDP: Bağlantısız ve güvenilir olmayan bir iletişim sunar. Bu iletişim şeklinde karşı tarafla iletişim kuralları için anlaşma gerekmediği ve giden mesajların yerine ulaşıp ulaşmadığı kontrol edilmediği için bu protokol daha hızlı bir veri iletişimi sağlar. Verinin çok hızlı bir şekilde karşı tarafa ulaştırılması veya paket kaybının önemli olmadığı durumlarda bu protokol kullanılır.
2.9. Uygulama (Application) Katmanı
Uygulama katmanı ağ üzerinden iş yapacak uygulamaların bulunduğu katmandır. FTP, DNS, WINS gibi uygulamalar bu katmanda bulunur. İçinde ağ işlevi olan bir uygulama geliştirmek için iki API’miz var. API (Application Programming Interface) uygulama geliştirme arabirimi anlamına geliyor ve bir program yazarken kullanacağımız fonksiyonlar, uyacağımız kurallar anlamına geliyor. Örneğin, program yazmak için Win32 API’sini kullanırsak, Windows 95, Wındows 98 ve Windows NT ortamlarında çalışabilecek 32 bitlik bir program oluşturmuş oluruz.
Internet Üzerinde ağ uygulamaları için Microsoft ve IBM’in birlikte geliştirdiği NetBIOS API’si ya da Internet ortamındaki standart API olan Sockets’in Windows uyarlaması, Windows Sockets (WinSock) kullanılır. Bir programı NetBIOS API’si ile yazarsanız bu program Microsoft İşletim Sistemi altında çalışır, fakat Internet ortamında çalışmaz. Uygulama Windows Sockets API’sine uygun yazılırsa her iki ortamda da çalışır. Sockets uyumlu bir uygulamaya örnek olarak PING programını verebiliriz.
2.10. Tanımlanmış IP protokolleri
Bu tabloda yer alan IP protokollerinin kullanım biçimleri TCP/IP iletişimi için önemlidir. Örneğin, programlarda kullanılan socket açma komutunun son parametresi aşağıdaki IP protokollerinden biri olmalıdır.
2.11. IP Protokolleri Tanımları
IPPROTO_IP: TCP için standart protokol
IPPROTO_ICMP: Internet Kontrol Mesajları Protokolü
IPPROTO_IGMP: Internet Grup Yönetim Protokolü
IPPROTO_IPIP: IPIP tünelleri
IPPROTO_TCP: Transmission Control Protocol (TCP)
IPPROTO_EGP: Başka bir bilgisayardaki eşik protokolü
IPPROTO_PUP: PUP protokolü
IPPROTO_UDP: Kullanıcının tanımladığı Datagram Protokolü
IPPROTO_IDP: XNS IDP Protokolü
IPPROTO_RAW: 255 byte’lık Ham IP paketleri
2.12. TCP Socket Protokolleri
TCP socket'lerinde bağlantı türleri socketin özelliğine göre değişir. TCP iletişiminde iki ana kavram vardır. Biri bağlantılı, diğeri bağlantısız iletişim. Bağlantılı iletişimde socket'ten mesaj bekleyen (listen komutu ile socketi dinleyen) programa bağlantı, connect komutu ile yapılır. Bağlantı sağlandıktan sonra mesaj gönderme ve alma işlemi read ve write komutları ile gerçekleşir. Bağlantılı iletişimde kullanılan socket türü SOCK_STREAM olmalıdır. TCP/IP üzerinden iletişimde, hattın yoğunluğu ve kalitesine bağımlı olarak parçalanan TCP paketleri bu socket türü kullanıldığında alıcı socket altında sıralanır ve birleştirilerek TCP katmanına ulaştırılır. Bu durumda uygulama programı, bir read komutu ile tüm mesajı bir seferde okuyabilir. Kısa mesajlar SOCK_DGRAM socket üzerinden iletilebilir. Bu tür mesajların parçalanması söz konusu olmadığından yukarıdaki sorun yaşanmaz. Bu tür mesajlarda mesaj boyu 256 byte ya da daha kısa olmalıdır. Ve mesajlar hep aynı uzunlukta olmalıdır. Bağlantısız iletişim ortamında kullanılır. Yani socket dinleyen program accept komutu kullanmaz, sockete bilgi gönderen de connect komutunu kullanmaz. Burada yalnız listen komutu vardır. Programlar karşılıklı "read" ve "write" komutu ile haberleşir. İletişim açısından çok güvenli bir socket haberleşmesi değildir. Daha güvenli ve bağlantılı iletişimde (connected) DATA_DGRAM mesajları, SOCK_SEQPACKET tipi socket'ler üzerinde iletilmelidir. Bir bilgisayar içindeki programlar arası iletişim SOCK_RAW tipi socket ile kurulabilir. Bu tür socket'lerde Data Gram tipi mesajlar iletilir.
Tanrı varsa eğer, ruhumu kutsasın... Ruhum varsa eğer!