Düşük Seviye Duyarsızlığı ve Ağ Teorisi
Önceki Soket Nedir? Sonraki
Düşük Seviye Duyarsızlığı ve Ağ Teorisi
Protokol katmanlarından bahsettiğime göre artık ağların nasıl çalıştığına dair gerçekleri öğrenmenin ve SOCK_DGRAM paketlerinin nasıl oluşturulduğuna dair örnekler vermenin zamanı geldi. Pratik olarak bu bölümü atlayabilirsiniz, ancak burayı okursanız iyi bir temel bilgiye sahip olursunuz.
Şekil 2.1. Veri Paketlemesi (data encapsulation)
Hey çocuklar, Veri Paketleme konusunu öğrenme zamanı! Bu çok çok önemli. O kadar önemli o kadar önemli ki burada yani Chico Eyaletinde ağ teknolojilerine dair bir kurs alırsanız bu konu ile mutlaka karşılaşırsınız ;-). Temelde konu şu: bir paket doğar, sonra bu paket önce muhatap olduğu ilk protokol tarafından (mesela TFTP protokolü) ile bir başlık (ve ender olarak da olsa bir dipnot ile) kullanılarak paketlenir (kapsüle konur), ardından tüm bu yığın (TFTP başlığı da dahil) bir sonraki protokolün (örn. UDP) kurallarına göre paketlenir, sonra IP ve en sonundaki en alt katman olan donanım katmanındaki fiziksel protokol ile (örn. Ethernet) paketlenir.
Başka bir bilgisayar bu paketlenmiş paketi aldığında önce donanım Ethernet başlığını çıkarır, ardından işletim sistemi çekirdeği IP ve UDP başlıklarını alır ve ardından da TFTP programı TFTP başlığını alır ve içindeki veriye erişir.
Artık şu kötü üne sahip Katmanlı Ağ Modeli (Layered Network Model) kavramından bahsedebilirim. Bu ağ modeli diğer modellere pek çok üstünlüğü bulunan bir ağ işlevselliğinden bahseder. Mesela yazdığınız soket programının tek bir harfini bile değiştirmenize gerek kalmadan bu programı farklı fiziksel donanımlar üzerinde çalıştırabilirsiniz (seri, thin Ethernet, AUI, her ne ise) çünkü düşük seviyedeki programlar sizin yerinize ayrıntıları hallederler. Ağ donanımının fiziksel detayları ve topolojisi soket programcısını ilgilendirmez.
Daha fazla laf kalabalığı yapmadan bu müthiş modelin katmanlarını liste olarak vereyim, ağ ile ilgili sınava girerseniz işe yarayabilir:
  • Uygulama
  • Sunum
  • Oturum
  • Taşıma
  • Veri Bağlantısı
  • Fiziksel
Fiziksel katman donanımla ilgilidir (seri, Ethernet, vs.). Uygulama katmanı fiziksel katmandan alabildiğine uzaktır -- kullanıcılar ağ ile bu katmanda temas kurar.
Açıkçası bu model o kadar geneldir ki eğer isterseniz bu modeli arabanıza bile uygulayabilirsiniz. Unix ile daha uyumlu bir katmanlı model şöyle yazılabilir:
  • Uygulama Katmanı (telnet, ftp, etc.)
  • Konaktan Konağa Taşıma Katmanı (TCP, UDP)
  • Internet Katmanı (IP ve yönlendirme)
  • Ağa Erişim Katmanı (Ethernet, ATM ya da her ne ise)
Bu aşamada söz konusu katmanların veri paketlenmesinin hangi aşamalarına karşılık geldiğini görebiliyor olmalısınız.
Tek bir paketi oluşturmak için ne kadar çok iş yapılması gerektiğini gördünüz mü! Aman allahım! Üstelik paket başlık bilgilerini de cat komutunu kullanarak elle girmeniz gerekiyor! Şaka şaka! Tek yapmanız gereken eğer veri akış soketi kullanıyorsanız send() ile veriyi göndermek. Eğer veri paketi soketi kullanıyorsanız bu sefer de yapılması gereken paketi uygun şekilde paketleyip sendto() işlevini kullanarak bunu yollamak. Çekirdek sizin için Taşıma katmanını ve Internet katmanını kurar, donanımınız da Ağa Erişim Katmanını halleder. Ah, modern teknoloji.
Ağ teorisi ile ilgili kısa dersimiz burada sona eriyor. Ah evet tabii ki yönlendirmeyle ilgili söylemem gereken şeyler vardı: unutun! Bundan bahsetmeyeceğim. Yönlendirici (router) IP başlığını çeker yönlendirme tablosuna bakar, seçim yapar, vs. vs. vs. Eğer gerçekten meraklı iseniz IP RFC belgesine bakın. Bunu öğrenmezsiniz ölmezsiniz.
Önceki Üst Ana Başlık Sonraki
Internet Soketlerinin İki türü Başlangıç struct'lar ve Veri İle Uğraşmak
Bir Linux Kitaplığı Sayfası