Ana içeriğe geç

Bölüm 81: Son Söz

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

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

Bitirdin.

Yolculuğun başında adres çubuğuna bir şey yazmıştın ve ilk bayt geri döndü. Aradaki yolun her metresini gördün: ismin sayıya çevrildiği masayı, kapının numarasını, el sıkışan üç mesajı, kilidin kurulduğu anı, zarfın içine giren zarfı, kartın verdiği kararı, switch’in öğrendiği tabloyu, router’ın seçtiği en uzun öneki, kimsenin haritasını tutmadığı otonom sistemleri, camın içindeki ışığı ve karşı tarafta katman katman soyulan paketi.

Artık ağa “çalışan bir şey” diye bakamazsın. Baktığın şey, kimsenin tamamını bilmediği, hiçbir merkezin yönetmediği, her durağında yerel karar verilen ve buna rağmen çalışan bir düzen.

Bu kitabı okumadan önce de bu sayfaları açabiliyordun. Değişen şey erişim olmadı; görüş oldu. Artık bir sayfa geç açıldığında sorunun nerede olabileceğini biliyorsun: isim çözümlemesi mi uzadı, el sıkışma mı fazla tur harcadı, kuyruk mu doldu, yoksa darboğaz senin hattında değil karşı tarafın çıkışında mı. Aynı belirtiyi dört ayrı katmana ayırabilmek, bu kitabın verdiği asıl beceri.

Bu bölümde neyi kapatıyoruz?

  • Yolculuğun tamamını tek bir zincir hâlinde yerine oturtacağız.
  • Girişte sorduğum üç omurga sorusunu yan yana koyup birbirine bağlayacağız.
  • Kitabın neleri kasten dışarıda bıraktığını netleştireceğiz.
  • Katmanlı tasarımın kime neyi ödettiğini göstereceğiz.

Büyük Resim

Yolculuğun tamamı tek bir zincir. Her halka bir bölüme çözülüyor:

  1. Metin adres çubuğunda parçalarına ayrılıyor ve tarayıcı ağa çıkmadan önce ceplerini yokluyor (1. bölüm).
  2. Yolun paket anahtarlamayla çalıştığı, hiçbir kutunun yolun tamamını bilmediği ortaya çıkıyor (2. bölüm).
  3. İsim, kökten yetkiliye uzanan bir zincirle sayıya çevriliyor (3. bölüm).
  4. Gelen cevabın çoğu zaman hiyerarşiden değil bir depodan geldiği anlaşılıyor (5. bölüm).
  5. Adres makineyi gösteriyor, süreci gösteren ikinci sayı devreye giriyor (6. bölüm).
  6. Üç mesajla bir bağlantı kuruluyor ve iki taraf başlangıç numaralarını değiş tokuş ediyor (8. bölüm).
  7. Kilit taşımanın üstüne takılıyor; tek gidiş-dönüşte anahtar kuruluyor ve karşı tarafın kimliği bir imza zinciriyle doğrulanıyor (11. ve 12. bölüm).
  8. İstek nihayet yazılıyor ve sunucu onun hangi siteye ait olduğunu başlıktan öğreniyor (13. bölüm).
  9. Aynı veri her katmanda bir zarf daha giyiyor (18., 19. ve 20. bölüm).
  10. Kart frame’i okuyor ve adres eşleşmezse gerisini hiç okumadan bırakıyor (23. bölüm).
  11. Komşunun donanım adresi bağırarak soruluyor, switch de hangi adresin hangi kabloda olduğunu kendi öğreniyor (25. ve 27. bölüm).
  12. Makine adresini kiralıyor, maskeyle hedefin uzakta olduğuna karar veriyor ve paketi geçide veriyor (36. ve 37. bölüm).
  13. Router en uzun öneki seçiyor ve paketi bir sonraki durağa itiyor (39. bölüm).
  14. Sınırdaki geçit kaynak adresi çeviriyor, otonom sistemler birbirine yol ilan ediyor ve kimse haritanın tamamını tutmuyor (45. ve 46. bölüm).
  15. Bitler bakırda gerilime, camda ışığa dönüşüyor ve okyanusu geçiyor (52., 58. ve 64. bölüm).
  16. İstek bir veri merkezinin leaf-spine dokusundan geçip sunucunun rafına varıyor (65. bölüm).
  17. Karşı tarafta zarflar ters sırayla açılıyor ve yanıt numaralanmış baytlar hâlinde geri akıyor (66. ve 67. bölüm).
  18. Gönderen hızını ağdan sızan belirtilere bakarak ayarlıyor ve ilk bayt düşüyor (68. ve 70. bölüm).

Yolculuk 70. bölümde bitti ama kitap orada bitmedi. Son üç kısım aynı fikirlerin başka ağlarda nasıl yeniden kurulduğunu gösterdi. Tarayıcının yaptığını birkaç satır kodla yaptın ve bir protokol tasarlanırken hangi kararların verildiğini gördün (71. ve 72. bölüm). Geç gelen verinin hiç gelmemiş sayıldığı bir dünyada video ve canlı görüşmenin nasıl ayakta kaldığını izledin (73. ve 74. bölüm). Son olarak pille yaşayan, zamanının çoğunu uykuda geçiren ve bazen hiç yerinde durmayan ağlara indin (75. ile 80. bölüm arası).

Üç soru, birlikte

Girişte üç soru sormuştum ve üçünü ayrı bölümlerde kapattık. Şimdi yan yana koyalım, çünkü üçü aynı fikrin üç yüzü.

Bir isim nasıl adrese dönüşüyor ve bunu sana kim söylüyor? Sorumluluk bölünerek. Kimse bütün adları bilmiyor; her basamak yalnızca bir sonraki basamağı gösteriyor. Sana söyleyen ise hiyerarşinin kendisi değil, onun müşterisi olan resolver.

Kaybolabilen bir yolun üstünde kaybolmayan bir aktarım nasıl kuruluyor? Zekâyı uçlara koyarak. Ağ teslim sözü vermiyor; sözü veren, iki uçtaki yazılım.

Kimsenin yolun tamamını bilmediği bir ağda paket yolunu nasıl buluyor? Yerel kararla. Her kutu yalnızca bir sonraki durağı seçiyor ve doğru yol bu seçimlerin toplamından çıkıyor.

Üçünün ortak cevabı: internet, merkezî bilgiyi yerel karara çevirerek ölçekleniyor. Ölçeklenmesinin sebebi de kırılganlıklarının sebebi de bu.

Sensör ağları bu cevapları zorlu koşullarda sınadı. Birinci sorunun cevabı değişti: sink bir adres değil bir özellik sordu ve isimlerin yerini verinin kendisi aldı. İkinci cevabın bir sınırı göründü: uçtan uca bir yol hiç kurulamıyorsa güvenilirlik uçlardan ara düğümlere, emanetçiden emanetçiye taşındı. Üçüncü cevap ise olduğu gibi dayandı. RPL’de de hiçbir düğüm haritanın tamamını tutmadı; her biri yalnızca ebeveynini seçti ve ağaç bu seçimlerin toplamından çıktı.

Kitabın kasten dışarıda bıraktıkları

Dürüst olmak gerekiyor: bu kitap her şeyi anlatmadı ve anlatmadıklarının bir kısmı bilinçli seçimdi.

Türetmeleri geçtim. Kitap boyunca formül kullandım ve hesap yaptım: Shannon kanal kapasitesini, Snell yasasından kritik açıyı, Hamming uzaklığının sezme ve düzeltme eşiklerini, kayıp oranıyla hızın ters karekök ilişkisini, hücre kümesinin neden yalnızca belli sayılarda kurulabildiğini. Ama hiçbirini kanıtlamadım. Shannon’ın sınırı nereden çıkıyor, 26. bölümdeki ALOHA’nın veriminin niçin 1/(2e) olduğu, testere dişinin ortalamasının niçin karekökle ölçüldüğü: üçünün de arkasında bu kitapta açmadığım bir olasılık ve bilgi kuramı katmanı var.

Ayrım şu: formülü kullanmak için ne söylediğini bilmek yeter ve o kadarını verdim. Türetmek için başka bir kitap gerekiyor. Burada tek bir isteğin yolculuğunu izledik, her durağın altındaki teoriyi değil.

İşletim ve tasarım da dışarıda. Bir ağı nasıl boyutlandıracağın, hangi topolojiyi neye göre seçeceğin, kapasite planlamasının nasıl yapıldığı ayrı bir kitabın konusu. Aynı şekilde saldırı ve savunma tarafına yalnızca yolun üstünde denk geldiğimiz kadarıyla değdik.

Bir de zamanın kendisi var. Bu kitaptaki güncel sayılar 2026 ölçümleridir ve bir kısmı birkaç yıl içinde eskiyecek. Mekanizmalar eskimeyecek; oranlar eskiyecek. Hangisinin hangisi olduğunu ayırt edebilmen için güncel ölçümlerin yanına tarihini koydum.

Katmanlı tasarımın bedeli

Kitap boyunca katmanların işi kolaylaştırdığını gördük. Kolaylaştırmayan taraflarını da gördük ve toplamak gerekiyor.

Her katman kendi başlığını ekliyor; 66. bölümde gördüğün gibi küçük paketlerde başlık taşınan verinin kendisinden kat kat büyük olabiliyor. Her katman bir üstündekinden habersiz çalıştığı için aynı iş iki kez yapılabiliyor: sağlama toplamı üç ayrı katmanda hesaplanıyor. Ve bir katmanın verdiği söz üstündekinin ihtiyacına tam oturmayınca, aradaki fark yeni bir katmanla kapatılıyor.

Buna rağmen kimse katmanları kaldırmadı. Sebep şu: katman bir performans tercihi değil, bir değiştirilebilirlik tercihi. Kablonun bakırdan cama geçmesi üstteki hiçbir şeyi bozmadıysa, bedeli ödemeye değmiş demektir. Sınırı taşıyanlar oldu elbette: 15. bölümdeki QUIC taşımayla şifrelemeyi tek katmanda birleştirdi, 65. bölümdeki RDMA işletim sistemini atladı. İkisi de katmanı kaldırmadı; katmanın bittiği yeri, hızın gerektirdiği yere kaydırdı.

Bunun bir de teknik olmayan yüzü var. İnterneti ayakta tutan şey yalnızca protokoller değildir; aynı zamanda anlaşmalardır. İki operatörün trafiği karşılıklı taşımayı kabul etmesi, bir kayıt kuruluşunun alan adını devretmesi, bir standart kuruluşunun bir sayıyı tahsis etmesi: bunların hiçbiri kodda yazmıyor. Kitap boyunca birkaç kez, teknik olarak mümkün olan bir şeyin ticari olarak yapılmadığını gördük. Ağın şeklini belirleyen şey çoğu zaman mühendisliğin sınırı olmuyor; kimin kiminle anlaştığı oluyor.

Buradan Sonra Nereye?

Dört somut yol var.

Kendi ağını ölç. Elindeki komutlar artık yabancı değil: dig, ss, ip route, traceroute, tcpdump. Windows’ta aynı işi nslookup, Get-NetTCPConnection, route print, tracert ve Wireshark görüyor. Kendi makinenden bir sayfa açıp trafiği baştan sona izle; bu kitabın tamamı o çıktının içinde duruyor.

Standardı kaynağından oku. Bir protokolü gerçekten bilmek, RFC’sini açmakla başlıyor. RFC 9293 (TCP), RFC 9000 (QUIC), RFC 8446 (TLS 1.3), RFC 9110 (HTTP) ve RFC 1035 (DNS) iyi bir başlangıç. Son kısımlar için RFC 3550 (RTP), RFC 6550 (RPL) ve RFC 7252 (CoAP) aynı işi görüyor. Metinlerin dili kuru ama tuzağı yok: her belge kendinden önceki numarayı hangi noktada geçersiz kıldığını başında söylüyor. Sayı ararken de aynı yere bak. Bir alanın kaç bit olduğunu ikinci elden okumak yerine tanımlandığı satırdan okumak, bu kitabın da yöntemiydi.

Bir laboratuvar kur. Sanal makinelerle ya da Cisco Packet Tracer, GNS3 gibi benzeticilerle kurulan iki alt ağ ve bir router, kitaptaki bölümlerin yarısını elle tekrarlatır. Maskeyi bir bit kaydır ve iki makinenin birbirini görmez olmasını izle; varsayılan yolu sil ve yerel ağın hâlâ çalıştığını gör. Yanlış yapılandırdığında öğrendiğin şey, doğru yapılandırdığında öğrendiğinden fazla. Sensör ağları için Contiki-NG işletim sistemiyle gelen Cooja benzeticisi, RPL’i ve 6LoWPAN’ı tek bir bilgisayarda onlarca sanal düğümle çalıştırmana izin veriyor.

Klasiklere geç. Kurose ve Ross’un Computer Networking: A Top-Down Approach kitabı bu kitabın da omurgasıydı. Yanına Tanenbaum’un Computer Networks’ü, derinlik için Stevens’ın TCP/IP Illustrated serisi ve tasarım gerekçesi için Peterson ile Davie’nin Computer Networks: A Systems Approach kitabı konabilir. Sensör ağlarında Akyıldız ile Vuran’ın Wireless Sensor Networks (2010) ve Karl ile Willig’in Protocols and Architectures for Wireless Sensor Networks (2005) kitapları bu alanın ders kitabı sayılıyor.

Bonus: Küçük Notlar

Kitapta yeri gelmeyen birkaç şey.

Ethernet’in adı, ışığı taşıdığı varsayılan ve sonradan var olmadığı anlaşılan “eter”den geliyor; adı 1973’te 26. bölümdeki Bob Metcalfe koydu. ping komutunu 1983’te yazan Mike Muuss, adını denizaltı sonarının sesinden aldığını söylemişti. İnternet üzerinden geçen trafiğin büyük kısmı da, 64. bölümde gördüğün gibi kıtaları birbirine bağlayan ve derin sularda bir bahçe hortumundan kalın olmayan kablolardan geçiyor.

Bir de teşekkür. Bu kitap ders kitaplarına, Türkçe ders serilerine ve onlarca standart metnine dayanıyor; bu alanı yazanların emeği olmasa hiçbiri yazılamazdı. Bir hata bulursan ya da bir bölüm sende oturmadıysa, söylemen bu kitabı düzeltir.

Bitirirken bir şey daha söylemek istiyorum. Bu yolculuk boyunca en çok tekrarlanan fikir, hiçbir parçanın bütünü bilmemesiydi. Tarayıcı ağı bilmiyordu, kart yolu bilmiyordu, switch hedefi bilmiyordu, router yolun tamamını bilmiyordu, otonom sistem komşusunun içini hiç görmüyordu, sensör düğümü ebeveyninin ötesini bilmiyordu. Her biri yalnızca kendi bir adımını doğru yaptı.

Bu, mühendislikte pek rastlanmayan bir başarı. Milyarlarca makine, tek bir merkez olmadan, kimsenin izin vermesini beklemeden, birbirine yalnızca sınırda anlaşarak çalışıyor. İşin zor tarafı da bu: kimse tamamından sorumlu olmadığı için, kimse tamamını da düzeltemiyor.

Adres çubuğu hâlâ orada. Bir dahaki sefere Enter’a bastığında, arada ne olduğunu biliyor olacaksın.