9.6. Paketler ve yönlendirme

Bir IP adresi, bir mesajın kimin için olduğunu söyler. Onu gerçekten teslim eden mekanizmaya yönlendirme denir ve bu, bir paketin gönderenin yerel ağından, muhtemelen çok uzaktaki bir alıcının yerel ağına kadar yol aldığı sıçrama sıçrama süreçtir.

9.6.1. Kısaca bir paket

Bir paket, IP katmanının iş birimidir – küçük bir başlık ve bir yük içeren bir bayt yığını. Başlık, yönlendirme için önemli olan iki alana sahiptir:

  • Kaynak IP adresi (paketin nereden geldiği).

  • Hedef IP adresi (nereye gittiği).

Yük, taşıma katmanının ağ katmanından teslim etmesini istediği her şeydir. Paket başlığı ayrıca bir yaşam süresi sayacı, başlık üzerinde bir sağlama toplamı ve birkaç kontrol bayrağı içerir. Bunların hiçbiri kameranın Python kodunun doğrudan dokunduğu şeyler değildir.

Paketler “denedik”ten fazlasını vaat etmez – kaybolabilir, çoğaltılabilir veya sırasız teslim edilebilir. Güvenilirlik ve sıralama, üstteki taşıma katmanının çözdüğü sorunlardır; ağ katmanı yalnızca her paketi hedefine doğru iletmek için elinden geleni yapar.

9.6.2. Sıçrama sıçrama

Paket kameradan ayrılır ve kameranın yerel segmentinde bulunmayan ilk cihaza ulaşır: varsayılan ağ geçidi. (Önceki sayfa ağ kurulurken DHCP’nin kameraya ağ geçidinin adresini verdiğinden bahsetmişti.) Bu cihaz bir yönlendirici‘dir – işi paketleri almak, hedeflerine bakmak ve onları ileriye iletmek olan bir kutu.

Beş kutu gösteren bir diyagram. Solda, "10.0.0.42" etiketli bir kamera. "10.0.0.1 / 203.0.113.5" etiketli bir yönlendiriciye bağlı. Ardından ortada adsız iki yönlendiricinin bir dizisi. Sonra "198.51.100.1 / 198.51.100.x" etiketli bir yönlendirici. Son olarak "198.51.100.20" etiketli bir sunucu. "hedef: 198.51.100.20" etiketli bir ok zincir boyunca soldan sağa doğru ilerler.

Kameradan hedefe giden bir paket, her biri bir adım daha yakın olan yönlendiriciler arasında sıçrar.

Yönlendiricinin bir yönlendirme tablosu vardır – “bu desene uyan hedefler için, paketi bu arabirimden gönder” listesi. Kamerayla aynı ağdaki hedefler için, girdi “geldiği kablodan geri gönder” der. Daha geniş internetteki hedefler için, girdi “yukarı yöndeki yönlendiriciye gönder” der. Bilinen hedef desenleri için (bir kurumsal VPN, belirli bir iş ortağının ağı, bir uydu bağlantısı), yönlendirici varsayılanı geçersiz kılan daha spesifik bir girdiye sahip olabilir.

Yukarı yöndeki yönlendirici de aynı şeyi yapar. Ve bir sonraki. Ve bir sonraki. Her sıçrama aynı biçimdedir: paketi al, hedefi tabloda ara, doğru arabirimden gönder. Sonunda paket, hedef IP ile aynı yerel segmentte bulunan bir yönlendiriciye ulaşır. O yönlendirici son sıçramayı teslim eder, hedef paketi alır ve yolculuk sona erer.

9.6.3. Uç noktalar rotayı bilmez

Uzak bir sunucuya paket gönderen bir kamera, paketin oraya nasıl ulaşacağını bilmez. Yalnızca hedef IP’yi ve kendi varsayılan ağ geçidinin adresini bilir. Aradaki her şey – hangi yönlendiriciler, hangi fiberler, hangi su altı kabloları – yol boyunca yönlendiricilerin kendi tablolarına göre giderken karar verdikleri bir şeydir. Yönlendiricilerin kendileri yalnızca en yakın komşularını ve yaygın hedeflerin kabaca yönünü bilir; internetteki tek bir cihaz bile onun tam bir haritasına sahip değildir.

Bu merkezi olmayan yapı, bireysel yollar başarısız olduğunda ağın çalışmaya devam etmesinin nedenidir. Ortada bir yerde kesilen bir kablo, birkaç yönlendiricide yeniden yönlendirme olayına dönüşür; uç noktalar bunu hiç fark etmez. Aynı zamanda bir Tokyo kamerasından bir Dublin sunucusuna giden bir paketin, taraflardan hiçbiri arada hangi ülkelerin olduğunu bilmeden başarılı olabilmesinin de nedenidir.

9.6.4. Bunun bir Python betiği için anlamı

Kameranın ağ katmanındaki işi şuna iner:

  • Bir IP adresine sahip olmak.

  • Varsayılan ağ geçidinin adresini bilmek (DHCP bunu otomatik olarak doldurur).

  • Herhangi bir IP’ye adreslenmiş giden paketleri o ağ geçidine teslim etmek ve yolun geri kalanına güvenmek.

Bir betik asla bir rota seçmez, asla bir ara sıçramayı adlandırmaz ve ortadaki yönlendiricileri asla görmez. Hedef IP’yi pakete yazar ve ağ katmanı devralır. Bir Python betiği açısından yönlendirmenin tamamı yalnızca kameranın katıldığı ağın bir özelliğidir – “ağ geçidi paketleri benim için yararlı bir yere gönderir”.

Bundan sonra gelen taşıma katmanı, yönlendirmenin sadece çalıştığını varsayar ve bunun üzerine güvenilirliği, sıralamayı ve programdan programa adreslemeyi inşa eder.