Bölüm 18: Katmanlı Mimari
Ağlar'a “Sen”i Katmak kitabının bir bölümü: adres çubuğuna yazdığın tek bir isteğin peşinden bakırla fiberin fiziğine inip karşı taraftan geri dönen uzun bir teknik yolculuk.
Kısım 4: Makineden Yerel Ağa (Bölüm 18-29)
Tüm bölümler
- Giriş
- Adres Çubuğundan İsteğe
- Paket Anahtarlamalı Yol
- İsimden Adrese
- DNS Kayıtları
- Önbellek, Tazelik ve Güven
- Port Numarası ve Soket
- Bağlantısız Taşıma: UDP
- Üç Adımlı El Sıkışma
- Simetrik Şifreleme
- Açık Anahtarlı Kriptografi
- TLS El Sıkışması
- Sertifika Zinciri
- HTTP Mesajının Anatomisi
- Durum, Çerez ve Oturum
- HTTP/2'den HTTP/3'e
- İçerik Dağıtım Ağları
- Diğer Uygulama Protokolleri
- Katmanlı Mimari
- Hizmet ve Protokol
- Encapsulation ve Başlıklar
- Paket Yakalama ve Çözümleme
- Ağ Interface Kartı
- Fiziksel Adresleme
- Hata Sezme ve CRC
- Adres Çözümleme: ARP
- Ortam Erişimi: CSMA/CD
- Switch'ler
- Ağ Topolojileri
- Sanal Yerel Ağlar
- Kablosuz Erişim: 802.11
- Radyo Kanalı ve Kapasite
- Kablosuz Ağ Güvenliği
- Hücresel Ağlar
- Spektrum ve Kuşaklar
- Hareketlilik ve Aktarma
- Adres Kiralama: DHCP
- Adresin Anatomisi
- Adres Tükenmesi ve IPv6
- Router Mimarisi
- Kuyruk Yönetimi
- Cihaz Yapılandırma
- Routing Protokolleri
- Kontrol Düzlemi ve SDN
- Ağ İzleme ve Yönetimi
- Alanlar Arası Routing
- Adres Çevirisi
- Ara Kutular
- Tünelleme ve IPsec
- Firewall'lar
- Ağ Saldırıları
- Operatör ve Metro Ağları
- Bitten Sinyale
- Sembol Hızı ve Kanal Kapasitesi
- Multiplexing Teknikleri
- İletim Ortamları
- Bakır Kablo Sonlandırma
- Fiber Sonlandırma
- Fiber Optik İletim
- Bakır Erişim Ağı: DSL
- DSL'de Hız ve Mesafe
- Pasif Optik Ağlar
- Kablo Erişim Ağları
- Kablo Modem ve CMTS
- Denizaltı Kabloları
- Veri Merkezi Ağları
- Encapsulation Çözme
- Güvenilir Aktarım
- Tıkanıklık Denetimi
- Trafik Çözümleme
- Gecikme Bütçesi
- Soket Programlama
- Eşten Eşe ve Protokol Tasarımı
- Uyarlanır Video Akışı
- Gerçek Zamanlı Ses ve Görüntü
- Kablosuz Sensör Ağlarının Mimarisi
- Sensör Ağlarında Ortam Erişimi
- Sensör Ağlarında Yönlendirme ve IP
- Zaman Eşitleme ve Konum Bulma
- Sensör Ağı Uygulamaları
- Mobil Kablosuz Sensör Ağları
- Son Söz
İstek makineden çıkarken düz metin olmaktan çıkıyor ve iç içe geçmiş zarflara dönüşüyor. O zarfların bir sırası var ve o sırayı şimdiye kadar bilerek adlandırmadım.
Adı katman. Zarfları bir sonraki durakta açacağız; burada onları saran düzeni kuruyoruz. Peki bu düzen neden kuruldu ve içinde kaç kat var?
Bir katman neyin üstüne basıyor?
Katmanlı düzenin tanımı kısa. Bir katın elinde iki şey var: kendi yaptığı iş ve hemen altındakinden aldığı hizmet; dışarıya verdiği söz bu ikisinden çıkıyor. Daha aşağısını bilmiyor. Bilmemesini bir eksik olarak görme; tasarımın kendisi bunu istiyor.
Kazancına modülerlik deniyor. Bir katmanın hizmetini nasıl ürettiği baştan aşağı değişebiliyor ve üstteki kat bunu hiç fark etmiyor. Kablo bakırdan cama dönüyor, tarayıcı tek satırını bile değiştirmiyor. Aynı bağımsızlığı öteki yönde de göreceksin: yeni bir uygulama protokolü yazmak için yol üstündeki router’lara dokunman gerekmiyor.
Bunu bir kargo şirketinin tezgâhında kolayca görebilirsin. Tezgâhtaki görevli kutunun içine bakmıyor; üstüne bir barkod yapıştırıyor ve işi bitiyor. Ayırma merkezindeki bant barkodu okumuyor, onun tek derdi şehir etiketi. Şoför şehir etiketini de umursamıyor; elinde yalnızca bir sefer listesi duruyor. Kutu uygulamanın mesajına, barkod transport layer başlığına, şehir etiketi network layer başlığına, sefer listesi ise data link layer’ın frame’ine karşılık geliyor. Benzerlik arıza anında bozuluyor: kargoda tıkanan bir gönderi için görevli kutuyu açıp içine bakabilir, hatta bakmak zorundadır. Katmanlarda o yetki yok.
Modülerliğin yanında ikinci bir kazanç daha var ve adı adlandırma. Yığın açıkça bölündüğü için her parçanın ayrı bir adı, her sınırın ayrı bir yeri oluyor. Katmanlamayı önce bir konuşma dili, sonra bir mühendislik aracı olarak düşün. Arıza da o dille bulunuyor: bağlantı var ama isim çözülmüyor cümlesi, sorunun nerede olmadığını daha kimse bakmadan söylüyor.
Kaç katman var? Üç cevap, üçü de doğru
Katman sayısını sorduğunda üç ayrı rakam duyacaksın ve üçü de aynı ağı tarif ediyor.
OSI referans modeli yedi katman sayıyor; ilan edilmiş amacı karmaşıklığı azaltmak ve ortak standart geliştirmek. TCP/IP ise dörtle yetiniyor: Application, Transport, Internet, Network Interface. En alttaki Network Interface katmanı, OSI’nin data link ve physical layer’larının işini tek başına görüyor; ona host-to-network ya da network access da deniyor. Ders kitaplarının çoğu ise ikisinin arasında duran beş katmanlı bir yığın öğretiyor. Türkçe kaynaklarda veri bağı katmanı diye geçen kata bu kitap boyunca data link layer diyeceğim; tablolarda yer darlığından kısaca bağ olarak geçecek.
| Katman | İşi | Örnek |
|---|---|---|
| Application (uygulama) | iki uçtaki programın konuştuğu dili kurar | HTTP, IMAP, SMTP, DNS |
| Transport (taşıma) | veriyi bir süreçten karşıdaki sürece teslim eder | TCP, UDP |
| Network (ağ) | datagrama yol seçer ve varışa kadar iletir | IP, routing protokolleri |
| Data link (veri bağı) | veriyi yalnızca komşu düğüme kadar götürür | Ethernet, 802.11, PPP |
| Physical (fiziksel) | biti elektriğe, ışığa ya da dalgaya çevirir | bakır, radyo, fiber |
En alttaki satırın işi kulağa fazla sade geliyor olabilir. Oysa bir tel çekilmeden önce kararlaştırılması gereken her şeyi orada bulacaksın. Standart bunları dört başlıkta topluyor ve dördünü de bir bit yola çıkmadan cevaplamış olman gerekiyor:
- Mekanik: konnektörün şekli, kaç pin taşıdığı, boyutları. RJ-45’in sekiz pini bu başlıktadır.
- Elektriksel: bir bitin kaç volt olduğu, kaç mikrosaniye sürdüğü, hattın empedansı. 100 ohm’luk twisted pair (bükümlü çift) bu başlıktadır.
- İşlevsel: hangi pinin ne anlama geldiği. 1 ve 2 numaralı pinin “gönder” çifti olması bu başlıktadır.
- Yordamsal: olayların hangi sırayla olacağı. Bağlantı algılama darbeleri ve hız pazarlığı bu başlıktadır.
İki taraf bu dört başlıkta anlaşmamışsa iletim hiç başlamıyor. Bir uç sayısal 1’i +5 volt ve 2 mikrosaniye olarak gönderirken öteki uç +7 volt ve 5 mikrosaniye bekliyorsa, kablo sapasağlam olsa bile karşıya tek bir bit geçmiyor.
Internet yığınında karşılığı olmayan iki kat
OSI’nin yedilisinde TCP/IP’de karşılığı olmayan iki kat var. İkisi de “gerçeklenmedi” diye geçiştiriliyor; oysa ikisinin de tarif ettiği iş bugün fazlasıyla yapılıyor, sadece başka bir yerde.
Presentation layer tek bir soruyla uğraşır: aynı bit dizisini iki makine aynı şey olarak mı okuyor? Cevap kendiliğinden evet değil. OSI bu işi ikiye böler. Soyut sözdizim verinin ne olduğunu söyler: “bu alan bir tamsayı, şu alan bir tarih”. Aktarım sözdizimi ise o soyut tanımın telde hangi baytlara döneceğini söyler. İkisini ayırmak, aynı veriyi farklı kodlamalarla göndermeyi mümkün kılıyor.
Bu ayrımın bir gösterimi var ve adı ASN.1; kodlama kuralları da BER ve DER. Kulağa müzelik geliyor, değil: tarayıcının doğruladığı X.509 sertifikası ASN.1 ile tanımlı ve DER ile kodlanmış bir yapıdır. SNMP de aynı gösterimi kullanır. Presentation layer ölmedi; adı unutuldu.
İkinci iş bayt sırası. Bir sayıyı belleğe yazarken kimi işlemci en anlamlı baytı başa koyar, kimi sona. İki makine bu konuda anlaşmazsa 1.000 yazan biri karşıda 59.395 okur. Ağda bu yüzden tek bir kural var ve adı ağ bayt sırası: en anlamlı bayt önce. Ağ programı yazan herkes, sayıyı sokete koymadan önce bu sıraya çevirmek zorunda; OSI’nin diliyle o çevirme presentation layer’ın işi. Üçüncü iş karakter kodlaması, dördüncüsü sıkıştırma, beşincisi şifreleme. Tarayıcının kurduğu şifreli kanal, kitap boyunca göreceğin en canlı presentation layer örneği.
Session layer ise iki tarafın konuşma düzenini yönetir. Üç işi var. Birincisi diyalog denetimi: sıranın kimde olduğunu belirler, çünkü yarım çift yönlü bir hatta iki tarafın aynı anda konuşması karışıklık demektir. İkincisi eşitleme noktaları: uzun bir alışverişin içine işaretler koyar, bağlantı koptuğunda taraflar en son işaretten devam eder. Üçüncüsü etkinlik yönetimi: birden çok işi tek bir oturumun içinde sıraya dizer.
İkinci iş bugün her yerde. İki saatlik bir dosya transferi %90’da koptuğunda baştan başlamıyorsan, birileri session layer’ın işini yapıyor demektir ve o birileri uygulamanın kendisi. HTTP’nin Range başlığı, kesilen indirmeyi kaldığı bayttan sürdüren istemci, QUIC’in connection ID’si: üçü de ayrı bir kat açmadan aynı hizmeti kuruyor.
Internet yığınının kararı “bu işler gereksiz” değildi. Karar şuydu: bu işler her uygulama için aynı değil, o hâlde zorunlu bir kat yapma. Bir dosya transferi eşitleme noktası ister, bir DNS sorgusu istemez. Zorunlu kat, istemeyene de fatura keser.
DerinleşmeOSI hiç gerçeklenmediyse neden hâlâ öğretiliyor?
ISO çalışmayı 1977’de başlattı, modeli 1984’te yayımladı ve 1994’te bir kez gözden geçirdi. Belgenin numarası ISO 7498. Model bir reçete değil, bir betimleme: hangi işin hangi kata düştüğünü sıralar; o işi kimin, hangi kutuda, hangi koddan gerçekleyeceğine karışmaz.
Modelin yanında bir OSI protokol yığını da yazıldı ve bazı hükümetler 1980’lerin sonunda satın alımlarda onu şart bile koştu. Ama TCP/IP daha önce, çalışan koduyla geldi ve sahayı aldı. OSI yığınından bugüne birkaç parça kaldı: sertifikaların X.509 biçimi, dizin protokolü LDAP’ın atası X.500 ve operatör omurgalarında hâlâ çalışan routing protokolü IS-IS. Session ile presentation için yazılan OSI protokolleri ise Internet yığınında hiç karşılık bulmadı.
Buna rağmen model ölmedi, çünkü asıl ürünü yazılım değil sözlüktü. Bugün bir ağ mühendisi üçüncü katman switch’i dediğinde herkes routing yapan bir kutuyu anlıyor. Yedinci katmanda çalışan firewall dediğinde, o kutunun istek başlıklarına baktığını anlıyor. Bu numaralar OSI’den kalma ve TCP/IP’nin dörtlüsü onları hiç üretmedi.
Bir arıza toplantısında da aynı sözlük iş görüyor. Sorun ikinci katmanda mı yoksa üçüncüde mi sorusu, kabloyla routing tablosunu tek hamlede ayırıyor. Kimse ölçü aletine sarılmadan önce arama alanı yarıya iniyor.
Hangi cihaz hangi katmanda durur?
Sözlüğün asıl işi burada başlıyor. Bir kutunun kaçıncı katmanda çalıştığını belirleyen şey markası ya da fiyatı değil, okuduğu en derin başlıktır. Bir cihaz hangi başlığa kadar iniyorsa o katmanın cihazıdır; daha yukarısını görmez, daha aşağısını zaten taşımak zorundadır.
Aynı katmanın taşıdığı veri parçasının da her katta ayrı bir adı var. Adlar keyfî değil, konuşurken hangi zarftan bahsettiğini belirsizlikten kurtarıyor.
| Katman | Veri parçasının adı | Bu katta duran cihazlar | Karar verirken neye bakar |
|---|---|---|---|
| Application | ileti / veri | proxy, reverse proxy, uygulama firewall, 7. katman load balancer | istek satırı, başlıklar, alan adı, yol |
| Presentation | veri | şifreleme sonlandıran kutular | gösterim ve kodlama |
| Session | veri | ayrı bir kutusu yok | konuşma düzeni |
| Transport | segment (TCP) / datagram (UDP) | durum bilgili firewall, NAT, 4. katman load balancer | port numaraları ve bağlantı durumu |
| Network | paket (datagram) | router, 3. katman switch, temel firewall | hedef IP adresi |
| Data link | frame | switch, bridge, kablosuz access point (erişim noktası), ağ kartı | hedef MAC adresi |
| Physical | bit | hub, repeater, medya dönüştürücü, kablo, konnektör, prizin kendisi | hiçbir şeye; yalnızca sinyali geçirir |
En üst satırdaki adlar şimdilik yabancı gelebilir; hepsi ileride tek tek açılıyor. Kabaca karşılıkları şöyle: proxy istemcinin isteğini onun adına ileten kutu, reverse proxy aynı işi sunucunun önünde yapan ve istemcinin gerçekte konuştuğu kutu, load balancer ise gelen istekleri arkadaki birden çok sunucuya dağıtan kutu.
Tabloyu tersten okursan daha çok şey öğreniyorsun. En alttaki cihazın verecek hiçbir kararı yok. Hub gelen elektriği bütün portlara tekrar eder. Medya dönüştürücü de yalnızca sinyalin taşındığı ortamı değiştirir; bakırdan gelen biti fibere, fiberden geleni bakıra aktarır. İkisi de içeride ne olduğunu bilmez, bilmesi de beklenmez. Bir üste çıktığında cihaz ilk kez bir alana bakıp bir karar veriyor: switch hedef MAC adresini okur ve frame’i yalnızca o adresin öğrenildiği porta yollar. Aynı satırdaki bridge switch’in atasıdır ve o kararı ilk veren cihazdır; ikisinin arasındaki farkı switch’i tanıdıktan sonra ayrı ayrı sereceğim. Bir üste daha çıktığında karar yerelden çıkar; router hedef IP adresine bakar ve paketi başka bir ağa iletir.
Ders kitaplarındaki kısa tanım da buradan çıkıyor: switch aynı ağın içindeki makineleri birbirine bağlar, router ise ayrı ağları birbirine bağlar. Başka kaynaklardaki şemalarda ikisini adından önce şeklinden tanırsın. Cisco’nun simgelerinde ve ders kitaplarının çoğunda router yuvarlak çizilir, üstten bakılmış yassı bir silindir gibi; switch ise köşeli bir kutudur ve ikisinin de üstünde oklar çizilidir. Bu kitabın şemaları kutunun adını üstüne yazıyor, ama bir ders slaytında yalnızca bir daire ile bir kare görürsen hangisinin hangisi olduğunu artık biliyorsun.
Bu tırmanışın somut bir bedeli var: cihaz ne kadar yukarı çıkarsa paket başına o kadar çok iş yapar. Hub’ın gecikmesi nanosaniyeler, switch’inki mikrosaniyeler mertebesinde; routing’i donanımda yapan bir kutu da mikrosaniyelerde kalıyor. İstek başlıklarını yazılımda ayrıştıran bir proxy’ninki ise milisaniyeye çıkabiliyor. Kutuyu yukarı taşımak çoğu zaman gecikme satın almak anlamına geliyor.
İki uyarı da tabloyu doğru okumak için gerekiyor. Birincisi, bir cihazın kendi katmanının altındaki her katmanı da gerçeklemesi zorunludur. Router üçüncü katman cihazıdır ama frame’i çözmeden pakete ulaşamaz; her portu aynı zamanda ikinci ve birinci katmanda da çalışır. Katman numarası, cihazın tavanını söyler, tamamını değil.
İkincisi, saha adları modelin sınırlarını umursamıyor. 3. katman switch, switch donanımının hızıyla routing yapan bir kutudur; ismi ikinci katmanı, işi üçüncüyü anlatır. Ev kutun ise tek kasada modem, router, switch ve access point’i birleştirir; birinci katmandan üçüncüye kadar hepsinde birden iş görür. Böyle bir kutuya tek bir numara vermek mümkün değildir, gerekmez de. Sorulması gereken soru “bu kutu kaçıncı katmanda?” değil, “bu kutu şu anda hangi başlığa bakıyor?” sorusudur.
Aynı harita bir arıza toplantısında da yön veriyor. Bir bağlantı hiç kurulmuyorsa sıra alttan başlar: kablo takılı mı, ışık yanıyor mu, karşı MAC öğrenilmiş mi, hedefe giden bir yol var mı, port açık mı, sunucu cevap veriyor mu. Her basamak bir katmandır ve her basamak arama alanını bir kat daraltır.
Özet
- Katman, altındakine dayanıp üstündekine söz veren bir kattır. Daha aşağısını bilmemesi bir eksik değil, tasarımın kendisidir.
- Katman sayısı modele göre değişir: OSI yedi, TCP/IP dört, ders kitaplarının çoğu beş sayar; presentation ile session katlarının işini Internet yığınında application layer üstlenir. Sertifikanın ASN.1 kodlaması ve HTTP’nin
Rangebaşlığı bunun iki canlı örneğidir.- Fiziksel katman dört başlıkta anlaşmaktır: mekanik, elektriksel, işlevsel ve yordamsal; biri tutmazsa sapasağlam bir kablodan bile tek bit geçmez.
- Bir cihazın katmanı okuduğu en derin başlıktır: hub hiçbir alana bakmaz, switch hedef MAC adresine, router hedef IP adresine bakar; kutu yukarı çıktıkça paket başına daha çok iş yapar.
- Switch aynı ağın içini, router ağları birbirine bağlar: şemalarda switch köşeli bir kutu, router yuvarlak bir silindir olarak çizilir.
Katmanları saydık ve her kutuyu kendi katına oturttuk. İki katın arasındaki anlaşmayı ise henüz adlandırmadım. Peki bir kat altındakinden ne alıyor ve karşı makinedeki eşine ne söz veriyor?
19. bölüme devam et: Hizmet ve Protokol