Ders 01 / 12
Ağ Nedir
Uçlar, bağlantılar ve anahtarlama; paket anahtarlamanın devre anahtarlamaya göre neden seçildiği ve en iyi çaba teslimin sonuçları.
İçindekiler
Bir adres satırına http://ornek.test/ yazıp isteği gönderdiğinizde, saniyenin küçük bir
bölümü içinde bir sayfa görünür. Arada olan biteni tek bir cümleyle özetlemek mümkün
değildir: adın bir adrese çevrilmesi, iki makine arasında bir bağlantı kurulması, bir
isteğin biçimlendirilip gönderilmesi ve dönen yanıtın çizilmesi gerekir.
Bu kurs, o tek isteğin yolculuğunu parça parça açar. Her ders zincirin bir halkasını kurar; son ders hepsini baştan sona birleştirir. Zincirin en altında, en somut soru durur: iki makine arasında veri nasıl hareket eder?
Uçlar, Bağlantılar ve Anahtarlar
Ağ (network), aralarında veri taşıyabilen makinelerden oluşan bir yapıdır. Üç bileşenle tanımlanır.
Konaklar (host), veri üreten ve tüketen uç makinelerdir. İsteği yazdığınız makine bir
konaktır; ornek.test sayfasını tutan makine de bir konaktır. Ağ, konaklar için vardır;
konaklar ağ için değil.
Bağlantılar (link), iki noktayı fiziksel olarak birleştiren ortamdır: bakır tel, cam lif, radyo dalgası. Her bağlantının iki ölçülebilir özelliği vardır. Bant genişliği (bandwidth), birim zamanda taşınabilen veri miktarıdır. Gecikme (latency), bir verinin bir uçtan diğerine varması için geçen süredir. İkisi bağımsızdır: geniş bant genişlikli bir bağlantının gecikmesi yüksek olabilir. Gecikmenin bir bölümü fizik yasalarıyla sınırlıdır; sinyal, ortamdaki yayılma hızından daha çabuk gidemez.
Anahtarlama düğümleri, ikiden çok konağı birbirine bağlar. Her konağı her konağa ayrı bir bağlantıyla iliştirmek düşünülemez: konak için gereken bağlantı sayısı olur ve bu, büyüdükçe hızla olanaksızlaşır. Bunun yerine konaklar ortak düğümlere bağlanır, düğümler birbirine bağlanır ve veri düğümden düğüme aktarılır. Bu aktarma kararını veren düğüme yönlendirici (router) denir.
İki Anahtarlama Modeli
Veriyi düğümler üzerinden geçirmenin iki farklı yolu vardır ve aralarındaki seçim, internetin tasarımını belirleyen kararların en temelidir.
Devre Anahtarlama
Devre anahtarlama (circuit switching) modelinde, iletişim başlamadan önce iki uç arasında bir yol kurulur ve bu yol üzerindeki kaynaklar iletişim süresince o iki uca ayrılır. Yol kurulduktan sonra veri, ayrılmış kapasiteden akar.
Bu modelin bir üstünlüğü vardır: kaynak ayrıldığı için başarım öngörülebilirdir. Devre kurulduysa, ayrılan kapasite garanti edilmiştir.
Bedeli ise kaynak israfıdır. Bir sayfayı okurken hiçbir veri göndermezsiniz; bir metin yazarken duraklarsınız. Veri iletişimi patlamalıdır: kısa yoğun aralıklar, uzun sessizlikler. Ayrılmış devre, sessizlik boyunca da ayrılmış kalır ve o kapasiteyi başka kimse kullanamaz. İkinci bedel kuruluş süresidir: tek bir sayfa isteği için önce bir yol kurmak, sonra veriyi göndermek, sonra yolu yıkmak gerekir.
Paket Anahtarlama
Paket anahtarlama (packet switching) modelinde önceden hiçbir yol kurulmaz. Gönderilen veri paket (packet) adı verilen parçalara bölünür. Her paket, nereye gideceğini kendi üzerinde taşır ve düğümler her paketi ayrı ayrı, geldiği anda iletir.
Her paketin iki bölümü vardır. Başlık (header), paketin nereden gelip nereye gittiği gibi yönlendirme için gereken bilgiyi taşır. Yük (payload), taşınan verinin kendisidir. Zarf ve mektup benzetmesi doğrudur: düğümler zarfa bakar, mektubu açmaz.
Bu modelin kazancı istatistiksel çoğullamadır: bir bağlantı, o anda gönderecek verisi olan herkes tarafından paylaşılır. Sessiz kalan bir konak kapasiteyi tutmaz. Toplam talep ortalaması, tepe taleplerin toplamından çok küçük olduğu için aynı bağlantı çok daha fazla konağa hizmet eder.
İkinci kazanç dayanıklılıktır. Önceden kurulmuş bir yol olmadığı için, bir bağlantı koptuğunda o yolu kullanan bir “devre” yıkılmaz; sonraki paketler başka bir yoldan gider. Ağın bir bölümünün arızalanması, iletişimi bütünüyle durdurmak yerine yeniden yönlendirilmesine yol açar.
Bedeli belirsizliktir. Ayrılmış kapasite olmadığı için, aynı anda çok sayıda paket aynı düğüme geldiğinde kuyruklar oluşur; kuyruk dolarsa paketler düşürülür. Teslim süresi paketten pakete değişir.
Seçimin Gerekçesi
İnternet paket anahtarlama üzerine kuruludur. Gerekçe, taşınan trafiğin niteliğidir: bilgisayar iletişimi patlamalıdır ve konak sayısı çok büyüktür. Kaynağı önceden ayırmak, kaynağın büyük bölümünü boşta bırakır. Paket anahtarlama, öngörülebilirlikten vazgeçip verimlilik ve dayanıklılık satın alır.
| Ölçüt | Devre anahtarlama | Paket anahtarlama |
|---|---|---|
| Kaynak ayırma | İletişimden önce, süre boyunca | Yok; paket başına paylaşım |
| Boşta kapasite | Ayrılmış kalır, kullanılamaz | Başkalarınca kullanılır |
| Kuruluş maliyeti | Her iletişim için yol kurulur | Yok |
| Arıza davranışı | Yol kopunca iletişim düşer | Paketler başka yoldan gider |
| Teslim süresi | Öngörülebilir | Yüke göre değişken |
| Yük altında | Yeni devre kabul edilmez | Kuyruklar uzar, paket düşebilir |
Bu ödünleşim, ağın verdiği sözün adını da belirler: en iyi çaba (best effort) teslim. Ağ, paketi iletmek için elinden geleni yapar; ancak varacağına, sırasında varacağına veya bir kez varacağına söz vermez.
Bir Mesajın Paketlere Bölünmesi
Söz bu kadar zayıfken güvenilir bir sayfa nasıl görüntülenir? Yanıt, eksik sözün konaklar tarafından tamamlanmasıdır. Gönderen uç veriyi numaralandırılmış paketlere böler; alan uç numaralara bakarak sırayı düzeltir ve eksikleri saptar.
Aşağıdaki program bu bölme ve yeniden kurma işini gösterir. Ağ katmanının kendisi kullanılmadan, yalnızca veri üzerinde yapılan işlem incelenir.
MESAJ = "Ornek Sayfa icerigi" PAKET_BOYU = 5 paketler: list[tuple[int, str]] = [ (sira, MESAJ[i:i + PAKET_BOYU]) for sira, i in enumerate(range(0, len(MESAJ), PAKET_BOYU)) ] for sira, yuk in paketler: print(f"sira={sira} yuk={yuk!r}") print() # Paketler farklı yollardan gidebilir; varış sırası gönderim sırası değildir. varis_sirasi = [2, 0, 3, 1] gelen = [paketler[i] for i in varis_sirasi] print("varista gorulen sira:", [sira for sira, _ in gelen]) birlestirilmis = "".join(yuk for sira, yuk in sorted(gelen)) print("yeniden kurulan:", repr(birlestirilmis)) print("kayipsiz mi:", birlestirilmis == MESAJ)
Çıktı:
sira=0 yuk='Ornek' sira=1 yuk=' Sayf' sira=2 yuk='a ice' sira=3 yuk='rigi' varista gorulen sira: [2, 0, 3, 1] yeniden kurulan: 'Ornek Sayfa icerigi' kayipsiz mi: True
Paketler karışık sırayla geldi; sıra numarası sayesinde özgün mesaj kayıpsız kuruldu. Numara olmasaydı, karışık varış onarılamaz bir bozulma olurdu.
Bu, ağ tasarımındaki bir ilkeyi örnekler: zor güvenceler uçlarda kurulur. Ara düğümlerin sırayı korumasını istemek onları karmaşıklaştırır ve yavaşlatır; oysa uçlar zaten veriyi bir bütün olarak görmek zorundadır. Sıra düzeltme, eksik parçayı yeniden isteme ve yinelenen parçayı atma işleri uçlara bırakılır. Bu işleri yürüten protokoller Ağ Modelleri ve Protokoller kursunun konusudur.
Gerçek paketlerde yükün baytları, Bilgisayarlar Nasıl Çalışır kursunda tanımlanan kurallara göre yorumlanır: bir metin belirli bir karakter kodlamasıyla baytlara çevrilir ve başlıktaki sayısal alanlar belirli bir bayt sırasıyla yazılır. Ağ başlıklarında kullanılan büyük uçlu düzen, o kursta ağ bayt sırası adıyla geçmişti; adın kaynağı budur.
Paket Boyu ve Bölünme
Paketin ne kadar büyük olacağı serbest değildir. Her bağlantı türünün taşıyabileceği en büyük paket boyu vardır. Bu sınırı aşan veri bölünmek zorundadır.
Sınırın iki yönü de maliyetlidir. Paketler küçüldükçe başlık yükünün oranı artar: her paket kendi başlığını taşır, yani aynı veriyi taşımak için daha çok başlık gönderilir. Paketler büyüdükçe tek bir kaybın maliyeti artar ve bir paketin bağlantıyı meşgul ettiği süre uzar.
Yukarıdaki örnekte 19 karakterlik mesaj 5 baytlık paketlere bölündüğünde dört paket oluştu ve sonuncusu yalnızca dört bayt taşıdı. Son paketin eksik dolması olağandır; veri boyu paket boyunun katı olmak zorunda değildir.
Özet
- Ağ, konaklar, bağlantılar ve aktarma kararı veren anahtarlama düğümlerinden oluşur; bağlantılar bant genişliği ve gecikme ile nitelenir.
- Devre anahtarlama iletişimden önce kaynak ayırır ve öngörülebilirlik sağlar, ancak patlamalı trafikte kapasiteyi boşta bırakır.
- Paket anahtarlama kaynağı önceden ayırmaz; istatistiksel çoğullamayla verimlilik, yolun sabit olmamasıyla arızaya dayanıklılık kazanır.
- Bu seçimin bedeli en iyi çaba teslimdir: ağ, paketin varacağına, sırasında varacağına veya yalnız bir kez varacağına söz vermez.
- Mesaj başlık ve yük taşıyan numaralı paketlere bölünür; sıra düzeltme ve eksik saptama ara düğümlerde değil uçlarda yapılır.
Sonraki Adım
Bu ders paketlerin nasıl taşındığını kurdu, ancak taşımayı kimin başlattığını
söylemedi. ornek.test sayfasını tutan makine ile isteği yazdığınız makine ağ açısından
eşit birer konaktır; buna karşın rolleri simetrik değildir. Biri sürekli bekler, diğeri
istediği anda konuşmaya başlar. Sonraki ders bu rol ayrımını tanımlar ve iki makinenin
birbirini nasıl bulduğunu göstermek üzere gerçek bir sunucu çalıştırır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.