3.2. TEMEL BÖLÜMLEME
====================
TCP/IP (Tranmission Control Protocol / Internet Protocol) şu an İnternet üzerinde bilgisayarların birbirleriyle iletişim kurduğu protokoldur. İleride bu protokollerle çok karşılaşacaksınız ve bunlar hakkında kesinlikle iyi seviyede bir bilgi birikimine ihtiyacınız olacak. Temelsiz bir bina ayakta duramaz! Eğer bu protokollere çok yabancıysanız bu konu hakkında yazılmış bir çok kitap bulunmaktadır, bunlardan birisini okumanızı tavsiye ederim. İlk bölümde bahsettiğim Macmillan Computer Publishing (http://www.mcp.com/personal) adresinde bu konu ile ilgili bir kitap (Teach Yourself TCP/IP in 14 Days) bulabilirsiniz.
Sonraki bölümler için bir giriş olması için TCP/IP'nin temel bölümlenmesinden burada bahsetmek istiyorum. TCP/IP suitinde iki sınıf protokol vardır.
1. Network Level Protokoller: Bu protokoller kullanıcı tarafından görülmezler ve sistemin derinliklerinde işlerler. Mesela IP(Internet Protocol) kullanıcı ile diğer makineler arasındaki packet dağıtımını sağlar. IP bu işi birçok bilgi sayesinde gerçekleştirir (örneğin iki bilgisayarında IP adreslerini bilmeli) ve bu esnada diğer network level protokollerle iletişim halindedir. Ama IP'nin yaptığı bu işlerin hiçbirisi kullanıcı tarafından görülmez.(Eğer bir sniffer kullanmıyorsa!-daha sonra detaylı olarak inceleyeceğiz-)
2. Application Level Protokoller: Bunlar ise kullanıcı tarafından gözlenebilen protokollerdir. Örneğin FTP'yi(File Transfer Protocol) ele alalım. Bir bilgisayara FTP isteğinizi gönderirsiniz, kabul edilirse bağlanırsınız ve transfer başlar. Bu esnada transfer ile ilgili hata mesajlarını, durum raporlarını, ne kadar zamanda ne kadar byte gönderme yapıldığı gibi bilgileri kullanıcı olarak gözleyebilirsiniz.
3.3. TCP/IP NASIL ÇALIŞIYOR?
============================
TCP/IP bir protokol stack'i üzerinden çalışır. Bu stack(yığın) iki bilgisayar arasında iletişim kurulabilmesi için gerekli olan protokollerin toplamıdır. Bu stack katmanlara(layer) ayrılmıştır ve biz bunlardan 5 tanesini inceleyeceğiz.
SERVER------+
|
|
+-----+-------+
| Application |-->Bir kullanıcı data transferini başlattığında
| Layer | bu katman isteği Transport Layer'e iletir
+-----+-------+
|
|
+-----+-------+
| Transport |-->Bu katman dataya bir header ekler ve
| Layer | Network Layer'e gönderir
+-----+-------+
|
|
+-----+-------+
| Network |-->Bu katmanda routing amaçlı kullanılmak üzere
| Layer | dataya source ve destination IP'leri eklenir
+-----+-------+
|
|
+-----+-------+
| DataLink |-->Yukarıdaki katmanlar ve Physical Layer arasındaki
| Layer | data akışı üzerinde hata kontrolünü yapar
+-----+-------+
|
|
+-----+-------+
| Physical |-->Bu katman kullanılan ortam(modem veya ethernet)
| Layer | üzerinden datayı gönderir/kabul eder.
+-----+-------+
Sonuçta bir göndermek istediğiniz data bu katmanlardan geçer ulaştığı makinede de bunun tam tersi işleme tabi tutulur. Bu işlemler esnasında yoğun bir hata kontrolü yapılmaktadır. Her katman altındaki veya üstündeki katmandan data alıp ona data gönderebilir. Her katman bir çok protokol ile ilişkilidir.
3.4. PROTOKOLLER
================
Yukarıda TCP/IP üzerinden protokol stack'ini kullanarak bir datanın nasıl transfer edildiğini gördünüz. Şimdi bu katmanlarda kullanılan bazı belli başlı protokolleri yakından inceleyelim. İlk olarak yukarıda temel bölümleme ile ayırdığımız network-level protokollere bir göz atalım.
3.4.1. ARP (ADDRESS RESOLUTION PROTOCOL)
========================================
Bir network üzerindeki iki bilgisayar haberleşirken datalar packetlere ayrılarak gönderilirler. Bu packetlerin içinde datanın geldiği ve gideceği bilgisayarların IP adresleri saklanmaktadır. Ancak iletişimin kurulabilmesi için bu 32 bitlik IP adreslerinin 48 bitlik hardware adreslerine çevirilmesi gerekir. İşte bu çevrim işini gerçekleştiren protokole ARP denmektedir. ARP bunu gerçekleştirirken bir cache mekanizması kullanır. Yani hangi IP'nin hangi adrese denk geldiğini saklar. Bu da zamandan ve network kaynaklarından tasarruf sağlar.
3.4.2 ICMP (INTERNET CONTROL MESSAGE PROTOCOL)
==============================================
ICMP'nin görevi kısaca iki bilgisayar arasındaki bir transfer esnasında hata kontrolünü yapmaktır. Böylece karşıdaki bilgisayarın durumunu anlayabilirsiniz(hala bağlı mı değil mi gibi). En çok bilinen ICMP uygulaması ping adındaki programdır. Bu program karşıdaki makineye bir packet gönderir ve echo olarak bir cevap dönmezse karşıdaki bilgisayarın koptuğunu anlayabilirsiniz.
Ayrıca bu utility sayesinde gönderdiğiniz packetlerin ne kadar sürede karşıya ulaştığını da öğrenebilirsiniz. Bir çok IRC client'inde bu program dahil edilmiştir ve böylece yazdığınız mesajların karşıdaki kişiye ne kadar süre sonra gittiğini öğrenebilirsiniz. Eğer bu süre bayağı büyükse IRC kullanıcılarının LAG olarak tabir ettikleri durum ortaya çıkar.