Ana içeriğe geç

Bölüm 18: Katmanlı Mimari

10 dakikalık okumaGüncelleme:

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
  1. Giriş
  2. Adres Çubuğundan İsteğe
  3. Paket Anahtarlamalı Yol
  4. İsimden Adrese
  5. DNS Kayıtları
  6. Önbellek, Tazelik ve Güven
  7. Port Numarası ve Soket
  8. Bağlantısız Taşıma: UDP
  9. Üç Adımlı El Sıkışma
  10. Simetrik Şifreleme
  11. Açık Anahtarlı Kriptografi
  12. TLS El Sıkışması
  13. Sertifika Zinciri
  14. HTTP Mesajının Anatomisi
  15. Durum, Çerez ve Oturum
  16. HTTP/2'den HTTP/3'e
  17. İçerik Dağıtım Ağları
  18. Diğer Uygulama Protokolleri
  19. Katmanlı Mimari
  20. Hizmet ve Protokol
  21. Encapsulation ve Başlıklar
  22. Paket Yakalama ve Çözümleme
  23. Ağ Interface Kartı
  24. Fiziksel Adresleme
  25. Hata Sezme ve CRC
  26. Adres Çözümleme: ARP
  27. Ortam Erişimi: CSMA/CD
  28. Switch'ler
  29. Ağ Topolojileri
  30. Sanal Yerel Ağlar
  31. Kablosuz Erişim: 802.11
  32. Radyo Kanalı ve Kapasite
  33. Kablosuz Ağ Güvenliği
  34. Hücresel Ağlar
  35. Spektrum ve Kuşaklar
  36. Hareketlilik ve Aktarma
  37. Adres Kiralama: DHCP
  38. Adresin Anatomisi
  39. Adres Tükenmesi ve IPv6
  40. Router Mimarisi
  41. Kuyruk Yönetimi
  42. Cihaz Yapılandırma
  43. Routing Protokolleri
  44. Kontrol Düzlemi ve SDN
  45. Ağ İzleme ve Yönetimi
  46. Alanlar Arası Routing
  47. Adres Çevirisi
  48. Ara Kutular
  49. Tünelleme ve IPsec
  50. Firewall'lar
  51. Ağ Saldırıları
  52. Operatör ve Metro Ağları
  53. Bitten Sinyale
  54. Sembol Hızı ve Kanal Kapasitesi
  55. Multiplexing Teknikleri
  56. İletim Ortamları
  57. Bakır Kablo Sonlandırma
  58. Fiber Sonlandırma
  59. Fiber Optik İletim
  60. Bakır Erişim Ağı: DSL
  61. DSL'de Hız ve Mesafe
  62. Pasif Optik Ağlar
  63. Kablo Erişim Ağları
  64. Kablo Modem ve CMTS
  65. Denizaltı Kabloları
  66. Veri Merkezi Ağları
  67. Encapsulation Çözme
  68. Güvenilir Aktarım
  69. Tıkanıklık Denetimi
  70. Trafik Çözümleme
  71. Gecikme Bütçesi
  72. Soket Programlama
  73. Eşten Eşe ve Protokol Tasarımı
  74. Uyarlanır Video Akışı
  75. Gerçek Zamanlı Ses ve Görüntü
  76. Kablosuz Sensör Ağlarının Mimarisi
  77. Sensör Ağlarında Ortam Erişimi
  78. Sensör Ağlarında Yönlendirme ve IP
  79. Zaman Eşitleme ve Konum Bulma
  80. Sensör Ağı Uygulamaları
  81. Mobil Kablosuz Sensör Ağları
  82. 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 kurarHTTP, IMAP, SMTP, DNS
Transport (taşıma)veriyi bir süreçten karşıdaki sürece teslim ederTCP, UDP
Network (ağ)datagrama yol seçer ve varışa kadar iletirIP, routing protokolleri
Data link (veri bağı)veriyi yalnızca komşu düğüme kadar götürürEthernet, 802.11, PPP
Physical (fiziksel)biti elektriğe, ışığa ya da dalgaya çevirirbakı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:

İ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.

KatmanVeri parçasının adıBu katta duran cihazlarKarar verirken neye bakar
Applicationileti / veriproxy, reverse proxy, uygulama firewall, 7. katman load balanceristek satırı, başlıklar, alan adı, yol
Presentationverişifreleme sonlandıran kutulargösterim ve kodlama
Sessionveriayrı bir kutusu yokkonuşma düzeni
Transportsegment (TCP) / datagram (UDP)durum bilgili firewall, NAT, 4. katman load balancerport numaraları ve bağlantı durumu
Networkpaket (datagram)router, 3. katman switch, temel firewallhedef IP adresi
Data linkframeswitch, bridge, kablosuz access point (erişim noktası), ağ kartıhedef MAC adresi
Physicalbithub, repeater, medya dönüştürücü, kablo, konnektör, prizin kendisihiç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 Range baş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