Kısım I · Makine · Bölüm 19
Ağ
Bilgisayarlar nasıl konuşur (Networking fundamentals)
Neden burada: Bölüm 18 ile tek makinenin işletim sistemini ve ona komut vermeyi tamamladık. Şimdi o makineden dışarı çıkıyoruz. Tarayıcı başka bir bilgisayardaki soruyu nasıl isteyecek? Arada uzanan kablo bir fonksiyon çağrısı değil; bitlerin gerçekten yol alması gerekiyor. Bu bölüm, ağ kartının dışındaki yolu kuruyor. Bir sonraki bölüm o yolun üstüne web'in kurallarını koyacak.
Neye dayanıyor: Bölüm 2: gönderilen şeyin sonunda bitler ve byte'lar olduğu. Bölüm 17: ağ kartı bir giriş/çıkış aygıtıdır; işletim sistemi sürücüsü aracılığıyla veri alıp verir. Bölüm 1.4: her katın, alttakinin ayrıntısını saklayan bir arayüz sunduğu. Bölüm 8: gecikme ile bant genişliğinin ayrı sorular olduğu.
- Kat 10Bizim uygulamamızSorular ve ortak puan tablosu bu yolu kullanacak.
- Kat 9Web ve tarayıcıTaşınan byte'ları anlamlı isteklere ve sayfalara dönüştürür. Bölüm 20.
- Kat 8Ağ ve internetPaketler, adresler, yönlendirme, TCP ve UDP.
- Kat 7İşletim sistemi ve sürücüProgramın ağ isteğini aygıtın yapacağı işe bağlar.
- Kat 0–3Bitler ve donanımBellekteki veri, kablo veya havada fiziksel sinyalle taşınır.
Bu bölümün sonunda bir bilgisayardan diğerine giden yolu yalnızca “internet gönderdi” diye açıklamayacaksın. Yerel bağlantıyı uzak ağdan, adresi porttan, taşıma güvencesini uygulamanın verdiği cevaptan ayırabileceksin. MDN'in daha önce okuduğun How the web works sayfasındaki istemci–sunucu çizimini hatırla: burada o iki kutunun arasındaki çizginin içini açıyoruz; HTML'i henüz incelemiyoruz.
19.1 Ağ: LAN, WAN, Wi-Fi, Ethernet; modem, yönlendirici, anahtar
Bir ağ (network), aygıtların aralarında veri alışverişi yapabildiği bağlantı düzenidir. En küçük örnek iki bilgisayar olabilir. Her biri önce kendi belleğinde duran veriyi bir ağ arayüzüne verir; arayüz ve bağlantı teknolojisi onu fiziksel sinyale dönüştürür. Karşı tarafta sinyal yeniden bitler olarak okunur. Bakırda elektriksel sinyal, fiberde ışık, kablosuz bağlantıda elektromanyetik dalga kullanılması, üstteki programın yine byte alıp vermesini değiştirmez.16
Yerel alan ağı (local area network, LAN), ev veya ofis gibi sınırlı bir yerdeki aygıtların yerel bağlantısıdır. Geniş alan ağı (wide area network, WAN) ise uzak yerlerdeki ağları birbirine bağlar. Bunlar bir uygulama türünü değil, bağlantının kapsamını anlatır. Aynı odadaki iki bilgisayar, dış dünyaya bağlantı yokken de yerel ağ üzerinden haberleşebilir; “ağ var” ile “internete erişim var” aynı cümle değildir.1611
Gündelik iki bağlantı adı bu yerel tarafta karşına çıkar. Ethernet (Ethernet) kablolu yerel ağlarda kullanılan bir teknoloji ailesidir. Wi-Fi (Wi-Fi), aygıtların radyo üzerinden yerel bağlantı kurmasını sağlar. Wi-Fi'ye bağlanmak internetin kendisine bağlanmak değildir: önce yakındaki ağa katılırsın; o ağın başka ağlara çıkışı varsa dışarı ulaşabilirsin. İnternet bağlantısı kesildiğinde kablosuz ağ adının hâlâ görünmesi bu ayrımın basit bir örneğidir.16
Her bilgisayarı her bilgisayara mı bağlayacağız?
10 aygıtın her çiftini ayrı kabloyla bağlarsan 10 × 9 ÷ 2 = 45 bağlantı gerekir; her çifti iki kez saymamak için ikiye böldük. Python ile doğrulandı. Ortadaki anahtara bağlamak bu örnekte 10 bağlantı gerektirir.1
Anahtar yerel iletimde MAC adresi (MAC address) denen ağ arayüzü adreslerini kullanabilir. Yönlendiricinin uzak ağ için kullandığı IP adresi ise farklı sorumluluktadır; ayrım 19.4'te tamamlanacak.1
Yerel ağdan çıkış
Yönlendirici (router), farklı ağlar arasında paket ileten aygıttır. Anahtar aynı yerel ağdaki bağlantılarla ilgilenirken yönlendirici “bu hedef için hangi komşu ağa doğru çıkmalıyım?” sorusunu cevaplar. Aşağıda IP adresiyle bu kararın nasıl ilişkilendiğini göreceğiz. Bu ayrım görevler arasındadır; tek bir fiziksel kutunun içinde iki görev birden bulunabilir.1
Modem (modem), erişim hattının gerektirdiği sinyalle ağ verisi arasında dönüşüm yapan ekipmandır; MDN bunu telefon altyapısı örneğiyle anlatır. Modemin işi ile yönlendiricinin yol seçme işi aynı değildir. Evde “modem” dediğin kutu, modemle birlikte yönlendirici, anahtar ve kablosuz erişim noktası görevlerini bir arada sunabilir. Bir kutu, birden çok soyutlama. Her internet erişiminin eski telefon hattını kullandığı sonucunu çıkarma; burada görev ayrımını öğreniyoruz.1
Bilgisayar -- Ethernet/Wi-Fi -- yerel ağ
|
yönlendirici
|
erişim hattı ve ISP
|
başka ağlar
19.2 Paket: veriyi parçalara bölmek; paket anahtarlama
Şimdi bağlantı var. Bir dosyayı başından sonuna kadar tek ve bölünmez bir sinyal olarak göndermek yerine, ağ onu taşınabilir parçalarda işler. Bir paket (packet), iletim için düzenlenmiş bir veri birimidir. Kabaca iki kısmı vardır: taşıma ve hedef bilgilerini içeren başlık (header) ile taşınan asıl veri, yani yük (payload). Bir sonraki katmanın verisini, bu katmanın taşıma bilgileriyle birlikte düşünürüz.6 “Başlık” belge başlığı demek değildir; makinenin belirli bir düzene göre okuyacağı alanlardır.
Paket anahtarlama (packet switching), bağlantıların farklı iletişimlere ait paketler arasında paylaşılmasıdır. Aradaki yönlendirici bir paketi alır, ilgili başlık bilgisine bakar, sonraki bağlantıya iletir. Senin sorunun paketi giderken ardından başka birinin fotoğrafının paketi gidebilir. Bütün konuşma için baştan sona yalnız sana ayrılmış özel bir hat kurmak zorunda değildir. Böylece sessiz kaldığın anlarda yol başkalarının verisini taşıyabilir.6
Eski telefon sistemlerindeki devre anahtarlama (circuit switching) modelinde iletişim boyunca bir devre ayrılır. Paket ağında ortak kapasite paylaşılır; bedeli kuyruk, değişken bekleme ve kapasite yetmezse kayıp olabilir.62
Parçalamak ile yeniden birleştirmek ayrı işlerdir
Öğretim örneği: 12.000 byte yükü 1.000'er byte parçaya ayırınca 12.000 ÷ 1.000 = 12 parça eder; Python ile doğrulandı. Başlıkları ve gerçek protokol sınırlarını hesaba katmadık. Paketlere bölmek tek başına teslim güvenilirliği sağlamaz.23
Birden çok yol bulunması, bütün paketlerin mutlaka farklı yollardan gideceği anlamına gelmez. Fakat aynı yoldan gitmeleri ve sırayla ulaşmaları da genel bir IP güvencesi değildir. Yol değişebilir, kuyruklar farklı gecikme yaratabilir; paket kaybolabilir veya tekrarlanabilir. “Bunu hangi sırayla birleştireceğiz, eksik olursa ne yapacağız?” sorusuna yalnızca yönlendirici kavramıyla cevap veremeyiz. 19.5'te TCP'yi tam bu boşluk için ekleyeceğiz.36
Hızın iki ayrı yüzü
Bölüm 8.1'deki gecikme ve bant genişliği ayrımı burada görünür olur. Paket yolda sinyal olarak ilerlerken zaman geçer; bütün bitlerini bağlantıya koymak da zaman alır; yönlendirici onu işler ve gerekirse kuyrukta bekletir. HPBN bu bileşenleri yayılma, iletim, işleme ve kuyruk gecikmesi olarak ayırır. “Daha çok Mbps” yalnızca bunların bazılarına doğrudan çaredir.2
Örneğin, yalnız veri iletimini hesaba kattığımız ve hızın sabit kaldığı hayalî bir 20 Mbit/s bağlantıda, 1 MB = 1.000.000 byte için 1.000.000 × 8 ÷ 20.000.000 = 0,4 saniye gerekir. 10 KB = 10.000 byte için aynı hesap 0,004 saniye, yani 4 milisaniyedir. Hesapları Python ile doğruladık. Bunlar sayfanın toplam açılma süresi değildir: hedefe gitmek, karşı tarafı beklemek, protokol mesajları ve diğer kaynaklar ayrıca zaman alır. Küçük bir istekte dosyanın kendisinden çok gidiş geliş bekleyebilirsin.2
Gidiş-dönüş süresi (round-trip time, RTT), bir mesajın gidip cevabının geri gelmesi için geçen süredir. Örnek olarak her biri bir öncekinin sonucunu bekleyen altı iletişim adımı, adım başına 80 ms gidiş-dönüş gerektiriyorsa yalnız bu beklemeler 6 × 80 = 480 ms eder. Bu bir internet ölçümü değil, bağımlı adımların bedelini gösteren hesap modelidir. Aynı anda başlatılabilen işler için süreleri böyle körlemesine toplamayız.2
19.3 Protokol: üzerinde anlaşılmış kurallar; TCP/IP ve OSI
İki ağ kartının sinyal gönderebilmesi, iki programın birbirini anlamasına yetmez. Bir taraf ilk byte'ı uzunluk, öteki harf sanıyorsa aynı bitleri farklı okurlar. Protokol (protocol), tarafların hangi iletileri hangi biçimde ve hangi sırayla değiş tokuş edeceğini belirleyen kurallar bütünüdür. “Önce ne gönderilir, bu alan ne demektir, cevap gelmezse ne yapılır?” gibi soruları ortaklaştırır. Bölüm 2.8'deki “anlam bağlamdadır” fikri artık makineler arasında ortak bir sözleşmeye dönüşüyor.6
Her şeyi tek dev kurala yüklemek yerine sorumlulukları ayırırız. Katmanlı model (layered model) bu iş bölümünün haritasıdır. TCP/IP modeli (TCP/IP model), burada dört katla anlatılacak: bağlantı, internet, taşıma ve uygulama. RFC 1122'nin girişindeki internet mimarisi ayrımı da bu temel sorumlulukları tanımlar. Bunlar kitabın Kat 0–10 numaralarıyla aynı numaralandırma değildir; kat planımızdaki ağ bölümünün içini açan ikinci, daha dar bir çizimdir.3
| TCP/IP katmanı | Cevapladığı soru | Örnek |
|---|---|---|
| Uygulama (application) | Bu veri hangi hizmetin hangi isteğidir? | Web için HTTP; ad çözümleme için DNS, Bölüm 20. |
| Taşıma (transport) | Hangi programla konuşuluyor; hangi teslim hizmeti sunuluyor? | TCP veya UDP, 19.5. |
| İnternet (internet) | Paket hangi ağ adresine ve sonraki ağa gidecek? | IP, 19.4. |
| Bağlantı (link) | Bu yerel bağlantıda sonraki aygıta nasıl ulaşılacak? | Ethernet veya Wi-Fi, sürücü ve fiziksel ortam. |
Üst katmanın verisini alt katmanın başlığıyla sarmaya kapsülleme (encapsulation) denir. TCP'nin iletim birimi segment, Ethernet gibi bağlantı katmanının birimi çerçeve (frame) diye anılır. Yönlendirici yerel çerçeveyi açıp IP hedefine göre yeni bağlantı için çerçeve hazırlayabilir; taşıdığı hukuk sorusunu anlaması gerekmez.46
Kitabın Kat 8'i ağ ve internetti. TCP/IP modelindeki “uygulama katmanı” ise DNS gibi destek protokollerini de kapsar; doğrudan bizim Kat 10'daki hukuk uygulamamız demek değildir. Ayrıca ağdaki çerçeve bir iletim birimidir, CSS çerçevesi veya videodaki kare değildir. Haritaları üst üste koy, ama numaralarını birbirine eşitleme.
OSI modeli (Open Systems Interconnection model) ise aynı iletişim sorumluluklarını yedi katla inceleyen bir başvuru modelidir: fiziksel, veri bağlantı, ağ, taşıma, oturum, sunum, uygulama. TCP/IP'nin dört katına bire bir dosya klasörü gibi oturması gerekmez; özellikle üstteki sorumluluklar farklı gruplanır. Bu kitapta OSI sırasını ezberlemek yerine TCP/IP tablosundaki dört soruyu kullanacağız. Bir bağlantı sorunu ile HTTP yanıtının neden farklı düzeylerde olduğunu ayırabilmen yeter.3611
19.4 IP adresi: IPv4, IPv6, yönlendirme ve ISP
IP adresi (Internet Protocol address), IP iletişiminde kaynak ve hedefi belirtmek için kullanılan ağ adresidir. Uzak ağa gidilen yolda, paketlerin başlığında hangi adrese yöneltilecekleri bulunur. Bu adres, bellekteki bir hücrenin adresi değildir; Bölüm 16'daki dosya yolu da değildir. Aynı “adres” sözcüğü farklı düzenlerde farklı yerleri seçer. IP, ağlar arasında hedef belirleme düzenidir.37
IPv4 (Internet Protocol version 4) adresi 32 bittir ve çoğunlukla noktalarla ayrılmış dört onluk sayı olarak yazılır. Her bölüm bir byte'ı temsil eder; bu yüzden 0–255 aralığı Bölüm 2.3'ten tanıdık gelir. 192.0.2.10 gibi bir yazımı gördüğünde dört ayrı bilgisayar değil, tek adresin dört parçasını görüyorsun. 32 bitin kuramsal desen sayısı Python hesabıyla 2**32 = 4.294.967.296 olur; bu sayıyı kullanılabilir herkese açık aygıt sayısıyla eşitleme, adres alanının özel amaçlara ayrılan bölümleri de vardır.75
IPv6 (Internet Protocol version 6) adres alanını 128 bite genişletir. Okunabilir gösterimde iki nokta ile ayrılmış onaltılık gruplar kullanılır; onaltılık gösterim için Bölüm 2.4'e dön. Burada önemli olan uzun adresleri ezberlemek değil, aynı ağlar arası hedefleme sorununun daha geniş bir adres düzeniyle ele alınmasıdır. IPv6 “daha hızlı internet paketi satın almak” demek değildir; sürüm adı, adres ve protokol düzenini anlatır.86
Yönlendirici bütün interneti bilmek zorunda mı?
Yönlendirme (routing), hedef adres için hangi yoldan devam edileceğiyle ilgilidir. Bir yönlendirici, kendi iletim tablosundaki bilgiyle paketi uygun sonraki bağlantıya yollar. Bütün yolun bütün ayrıntısını o anda baştan hesaplaması gerekmez. Adreslerin ağ önekleriyle gruplanabilmesi, her aygıt için ayrı satır tutmadan büyük hedef gruplarına yol gösterebilmeyi sağlar. MDN'in sokak adresi benzetmesindeki asıl yarar budur: bir kargo merkezi her apartmanı bilmeden hangi şehre göndereceğini bilebilir.16
İnternet servis sağlayıcı (Internet Service Provider, ISP), ağının dış dünyaya erişmesini sağlayan ve başka ağlarla bağlantı kuran kuruluştur. İnternet tek bir şirketin tek ağı değildir; birbirine bağlı ağların bütünüdür. Evindeki yönlendiriciden çıkan paket, sağlayıcının ağına, oradan başka ağlara ve sonunda hedefin bulunduğu ağa ilerleyebilir. Yolun her adımı yeni bir yerel iletimdir; “internete yolladım” bu çok adımlı işin üst düzey adıdır.1
IP'yi bir bilgisayarın değişmez kişisel kimliği sayma. Özel yerel adresler farklı ağlarda tekrar kullanılabilir. Ağ adresi çevirisi (Network Address Translation, NAT), yerel adres/port ile dış iletişimin adres/port bilgileri arasında eşleme tutabilir. Böylece farklı evlerde aynı yerel adresin görülmesi çelişki değildir; ayrıntılı NAT yapılandırması kapsamımız dışında.6
IP'nin sunduğu hizmeti de büyütmeyelim: hedefe ulaştırmaya çalışır ama tek başına teslim, sıra veya belirli sürede varış güvencesi vermez. Uzak ağın kopması hâlinde daha iyi bir yol varsa kullanılabilmesi değerlidir; her arızada mutlaka bir alternatif yol bulunacağı anlamına gelmez. Bu yüzden uygulamaların ağ hatasıyla karşılaşması tasarım kazası değil, iletişimin olağan olasılıklarından biridir.36
19.5 TCP ve UDP: güvenilir teslim, el sıkışma ve port
Bir bilgisayarda tarayıcı, bir mesajlaşma programı ve geliştirme sunucusu aynı anda çalışabilir. Yalnızca IP adresini bilmek, gelen verinin bunlardan hangisine gideceğini söylemez. Port (port), taşıma protokolünde hizmetleri ve veri akışlarını ayırt etmeye yarayan sayısal alandır. Fiziksel USB yuvası değildir. İşletim sistemi ağ yığınında bu bilgiyle veriyi ilgili iletişim ucuna yöneltir; program da onun aracılığıyla veri alır.45
IP binanın adresiyse port hizmet gişesine benzer; port bir sürecin değişmez kimliği değildir. TCP bağlantısını ayırt ederken iki ucun adres ve portları önemlidir. HTTP için 80, HTTPS için 443 varsayılan portları 20.2'de URL içinde göreceğiz.47
TCP: karşındaki programa sıralı bir byte akışı sunmak
TCP (Transmission Control Protocol), uygulamalara güvenilir ve sıralı bir byte akışı sağlayan taşıma protokolüdür. Gönderilen verinin hangi sıra aralıklarını kapsadığını izler; alıcı alınan ilerlemeyi onaylar; kayıp tespit edilirse eksik verinin yeniden gönderilmesini sağlar. Yoldaki paketlerin sırasız veya eksik olması böylece programın önüne aynı biçimde yığılmak zorunda değildir. TCP, güvensiz alt yolun üstüne daha kullanışlı bir arayüz kurar: Bölüm 1'in soyutlaması bir kez daha.4
Bu güvencenin anlamı “internet sonsuza dek kopsa da dosya mutlaka gelir” değildir. Bağlantı başarısız olabilir; TCP olmayan bağlantıyı yaratamaz. Ayrıca “byte karşı uca teslim edildi” ile “uygulama puanı veritabanına kaydetti” farklı iddialardır. İlki taşıma katmanına, ikincisi uygulamanın kendi işine aittir. Aynı şekilde TCP'nin güvenilirliği şifreleme demek değildir: yol üzerinde içeriğin okunmasını engelleyen korumayı sonraki bölümde TLS ile ekleyeceğiz.42
TCP bir byte akışı sunar; iki yazma işleminin karşıda tam iki okuma olacağını varsayamazsın. “Bir mesaj nerede bitti?” sorusunun cevabını üst protokol belirler. HTTP'nin kendi ileti biçimine ihtiyaç duyması bundandır; TCP'nin belge kavramını bilmesi gerekmez.45
El sıkışma: veri akışının ortak durumunu kurmak
El sıkışma (handshake), asıl veri alışverişinden önce tarafların iletişimin gerekli başlangıç bilgilerini anlaşarak kurmasıdır. Olağan TCP bağlantı başlangıcı üç iletilik bir akışla anlatılır: istemci SYN gönderir, sunucu SYN + ACK ile cevaplar, istemci ACK ile karşılığı onaylar. SYN sıra bilgilerini eşgüdümleme, ACK onaylama işaretidir; bunlar kullanıcıya gösterilen yazılar değil, TCP başlığındaki kontrol bilgisidir.42
İstemci Sunucu
| -------- SYN -------------> |
| <----- SYN + ACK ---------- |
| -------- ACK -------------> |
| veri akışı |
İlk satır isteği, ikinci satır sunucunun karşılığını, üçüncü satır istemcinin onayını gösterir. Bu hazırlığın zaman bedeli vardır; bağlantı yeniden kullanımı onu tekrar ödemeyi azaltabilir. Şema olağan başlangıç modelidir, özel hızlandırmaları işlemiyoruz. TCP el sıkışması hizmetin alan adı kimliğini doğrulamaz; bu ayrı işi Bölüm 20'de TLS ile açacağız.24
UDP: ayrı iletiler, daha az yerleşik güvence
UDP (User Datagram Protocol), portlar üzerinden ayrı veri iletileri taşıyan daha küçük bir hizmet sunar. UDP'nin kendisi TCP'deki gibi bağlantı kurma el sıkışması, teslim onayı, kaybı yeniden gönderme ve sıralama hizmeti vermez. Uygulama, kullanacağı üst protokolde bunların gerekli olanlarını ayrıca kurabilir. Dolayısıyla “UDP kullanılıyor” ile “bu uygulama hiçbir güvenilirlik mekanizmasına sahip değil” aynı şey değildir.5
| Soru | TCP | UDP |
|---|---|---|
| Programın gördüğü temel biçim | Sıralı byte akışı. | Ayrı veri iletileri (datagramlar). |
| Yerleşik yeniden gönderme ve sıralama | Var; uygulamadan alt yolun bir bölümünü gizler. | Yok; gerekirse üst protokol ekler. |
| Başlangıç | Bağlantı durumu kurulur. | TCP türü bağlantı el sıkışması yoktur. |
| Kendiliğinden şifreleme | Sağlamaz. | Sağlamaz. |
“TCP yavaş, UDP hızlı” diye iki ezber kutusu kurma. Zamanında gelmeyen eski bir ses parçasının sonradan gelmesi konuşmayı kurtarmayabilir; bir ders metninin ortasındaki eksik byte ise metni bozabilir. Gereken hizmet farklıdır. Kaybı ve tıkanmayı üstte nasıl yönettiğin, bağlantının koşulları ve bekleme süreleri sonucu belirler. Web de yalnız TCP'ye mahkûm değildir: HTTP/3, UDP üzerinde çalışan QUIC adlı taşıma protokolünü kullanır. Ayrımı 20.4'te bir sınır notuyla tamamlayacağız.59
19.6 İstemci–sunucu modeli: ilk tanım
İstemci (client), bir hizmetten yararlanmak için istekte bulunan taraftır. Sunucu (server), o hizmet için gelen istekleri karşılayan taraftır. Bu bağlamda sunucu bir süreç olabilir; üzerinde çalıştığı fiziksel ya da sanal bilgisayara ise sunucu makinesi diyeceğiz. İstemci–sunucu modeli (client–server model) bu rol ayrımına dayanır. Tarayıcı, bir web belgesi istediğinde istemci; isteği karşılayan program o iletişimde sunucudur.710
Sunucu sihirli bir donanım sınıfı değildir. İstemci ve sunucu aynı bilgisayarda farklı programlar olabilir; bir süreç farklı iletişimlerde farklı roller de alabilir. Go sunucumuz tarayıcıya hizmet verirken sunucu, veritabanından hizmet isterken istemci olacak.10
Prototip kodunu görmedik. HTML, CSS ve JavaScript dosyaları yalnız kendi bilgisayarında açılıyorsa soruları okumak ve yerel bir puanı hesaplamak için ağ gerekmeyebilir. Fakat bütün kullanıcıların aynı leaderboard'u, yani puan sıralamasını görmesini istiyorsak herkesin kendi belleğinde tuttuğu ayrı kopyalar yeterli olmaz. Planlanan Go sunucusu ortak hizmeti sağlayacak; tarayıcı veya Expo ile yazılan telefon uygulaması bu hizmetin istemcisi olacak. Postgres ve Redis'in görevlerini Bölüm 38 ve 40'ta açacağız.
Örnek akış: kullanıcı bir soru cevabı verir → istemci ilgili veriyi gönderir → sunucu onu işler → sonuç geri gelir → istemci puanı ekranda gösterir. Bu bir tasarım örneğidir, mevcut prototipin çalıştığına ilişkin gözlem değildir. Ağ katmanı byte'ların yoldaki taşınmasıyla ilgilenir; cevabın gerçekten doğru olması veya puan kuralının nasıl kurulacağı uygulama katının sorusudur. TCP teslim onayı alındığı için ekranda “puan kaydedildi” demek bu iki sorumluluğu karıştırır.
17.3’ün aygıt yoluna başka makinelere giden ağı ekledik. 1.7’nin önizlemesini 20.6’da bütün katlarıyla kuracağız.
Bu bölümde neler kuruldu
Ağ, aygıtlar arasında veri alışverişi imkânıdır; Wi-Fi ve Ethernet yerel bağlantının teknolojileridir. Anahtar yerelde, yönlendirici ağlar arasında iletir; modem erişim hattına uygun sinyal dönüşümüyle ilgilenir. Paket anahtarlama, ortak bağlantıları küçük veri birimleri arasında paylaşır. TCP/IP modeli bu işi bağlantı, internet, taşıma ve uygulama sorumluluklarına ayırır. IP adresi ağ hedefini; port iletişim hizmetini ayırt eder. TCP sıralı ve güvenilir byte akışı, UDP ayrı iletiler sunar. İstemci–sunucu ise bunların üzerinde kimin hizmet istediğini, kimin karşıladığını anlatır.
Terimler sözlükte, Bölüm 19 başlığı altında. Şimdi “byte'lar nasıl gidiyor?” sorusundan “tarayıcı hangi byte'ları, hangi adla ve hangi kuralla istiyor?” sorusuna geçiyoruz.
Birincil okuma: MDN, How does the Internet work?, A simple network ve A network of networks. Derinleşme: HPBN Building Blocks of TCP, Three-Way Handshake; Building Blocks of UDP, Null Protocol Services.
Takıldığın yeri yapay zekâ öğretmenine sor. Ona “Wi-Fi bağlı ama uygulama cevabı gelmiyor; bağlantı, IP, port ve uygulama cevabını birbirine karıştırmadan dört ayrı olasılık kur” de. Ardından her olasılığı kat planına kendin yerleştir; gerçek sistemde ölçmeden hangisinin doğru olduğunu ilan etme.
Bölüm sonu soruları
Metne bakmadan cevapla; ezberlenen kısaltmayı değil, hangi sorumluluğa ait olduğunu hatırla.
Örnek cevabı göster
Ağ kartı yerel bağlantıda veri alıp verir; anahtar yerel iletimi, yönlendirici başka ağlara geçişi sağlar. IP başlığındaki hedef ağlar arasındaki iletime yön verir. TCP uçlardaki programlara sıralı byte akışı sunar; port hangi hizmetle konuşulduğunu ayırt etmeye katılır. Bunlar tek şeyin farklı adları değildir. Bkz. 19.1, 19.4 ve 19.5.
Örnek cevabı göster
Taşıma katmanı byte'ları karşı iletişim ucuna sıralı ulaştırır; içlerindeki puan kaydı isteğinin doğru, yetkili veya kalıcı biçimde işlenip işlenmediğini bilmez. Uygulama veriyi alıp işleyecek, kalıcılık gerekiyorsa ilgili saklama işini tamamlayacak ve bir sonuç bildirecek. Kat 8'in başarısı Kat 10'un işinin tamamlandığı anlamına gelmez. Bkz. 19.5 ve 19.6.
Kaynaklar
- MDN, How does the Internet work?: ağ, yönlendirici, modem, sağlayıcı ve internet–web.
- HPBN, Building Blocks of TCP: byte akışı, el sıkışma ve bağlantı maliyeti.
- HPBN, Building Blocks of UDP: UDP hizmeti ve sınırları.
- RFC Editor, RFC 9293 · TCP: §2.1 byte akışı, §3.1 portlar, §3.5 bağlantı.
- RFC Editor, RFC 1122: §1.1.3 katmanlar, §3 internet ve §4 taşıma.
- Özgün teknik açıklama, The Internet explained from first principles: Ethernet, MAC, IP, NAT, paket/devre anahtarlama.
- MDN, What is a URL?: varsayılan portlar.
- RFC Editor, RFC 8200: §1, 128 bit IPv6 adresleri.
- HPBN, Primer on Latency and Bandwidth: gecikme ve aktarım kapasitesi.
- MDN, Overview of HTTP: istemci–sunucu rolleri.
- AWS, What is WAN?: LAN/WAN ve OSI modelinin yedi katı.