Taşıma Katmanı ve Tıkanıklık Kontrolü
Taşıma katmanı, ana bilgisayardan ana bilgisayara teslimatı süreçten sürece iletişime genişleterek, uygulamalara güvenilir, sıralı, tıkanıklık kontrollü bayt akışları (TCP) veya hafif, bağlantısız datagramlar (UDP) sunmaktadır; tıkanıklık kontrolü ise paylaşımlı ağın çökmemesi için gönderme hızlarını düzenlemektedir.
Tanım
Taşıma katmanı, farklı ana bilgisayarlarda çalışan uygulama süreçleri arasında mantıksal iletişim sağlayan, ağ katmanının ana bilgisayardan ana bilgisayara teslimatının üzerine çoklama, güvenilir teslimat, akış kontrolü ve tıkanıklık kontrolü gibi hizmetler ekleyen protokol katmanıdır.
Kapsam
Bu alan, uçtan uca taşıma hizmetlerini kapsamaktadır: verilerin uygulama süreçlerine çoklanması ve ters çoklanması, güvenilmez bir ağ üzerinden güvenilir veri aktarımının prensipleri (onaylar, yeniden iletim, sıra numaraları, kayan pencereler), bağlantı odaklı İletim Kontrol Protokolü (TCP) ve bağlantısız Kullanıcı Datagram Protokolü (UDP) ile tıkanıklık kontrolünün teorisi ve pratiği. Ağ üzerinden paketlerin yönlendirilmesi (ağ katmanı) ve taşıma hizmetlerini kullanan uygulama protokolleri (uygulama katmanı) bu kapsamın dışındadır.
Alt konular
Temel sorular
- Taşıma katmanı, çoklama ve ters çoklama yoluyla veriyi doğru uygulama sürecine nasıl teslim etmektedir?
- Güvenilmez, kayıplı bir ağ üzerinde güvenilir, sıralı teslimat nasıl inşa edilebilmektedir?
- TCP'nin bağlantı kurulumu, akış kontrolü ve güvenilirlik mekanizmaları nasıl çalışmaktadır?
- Bir uygulama, TCP yerine UDP'yi ne zaman kullanmalıdır?
- Tıkanıklık kontrolü, ağ aşırı yüklenmesini nasıl tespit edip yanıt vermekte ve aynı zamanda adil kalmayı nasıl sağlamaktadır?
Anahtar kavramlar
- çoklama ve ters çoklama
- portlar ve soketler
- güvenilir veri aktarımı
- kayan pencere, go-back-N, seçmeli tekrar
- TCP üçlü el sıkışma
- akış kontrolü
- tıkanıklık kontrolü
- toplamsal artış/çarpımsal azalış (AIMD)
- yavaş başlatma ve tıkanıklık önleme
- Kullanıcı Datagram Protokolü (UDP)
Temel kuramlar
- Güvenilmez bir kanal üzerinden güvenilir veri aktarımı
- Güvenilirlik, temel ağın güvenilmezliğine rağmen kayıp, çoğaltma ve yeniden sıralamayı tespit edip kurtaran onaylar, yeniden iletim zamanlayıcıları, sıra numaraları ve kayan pencere protokolleri (go-back-N ve seçmeli tekrar) ile inşa edilmektedir.
- TCP tıkanıklık kontrolü
- TCP, paket kaybından tıkanıklığı çıkarım yapmakta ve gönderme penceresini toplamsal artış/çarpımsal azalış dinamikleriyle (yavaş başlatma, tıkanıklık önleme ve hızlı kurtarma) ayarlayarak, kayıp durumunda keskin bir şekilde geri çekilirken mevcut bant genişliğini araştırmaktadır.
- Bağlantısız ve bağlantı odaklı taşıma
- UDP, kurulum, güvenilirlik veya tıkanıklık kontrolü olmayan ince, bağlantısız bir hizmet sunarak gecikme ve ek yükü en aza indirmektedir; TCP ise bağlantı odaklı, güvenilir, tıkanıklık kontrollü bir bayt akışı sağlamaktadır. Bu seçim, garantiler karşılığında gecikme ve kontrol arasında bir denge kurmaktadır.
Klinik önem
Taşıma katmanı davranışı, neredeyse her ağ tabanlı uygulamanın performansını şekillendirmektedir: TCP, web, e-posta ve dosya transferlerini güvenilir bir şekilde taşırken, UDP, DNS, gerçek zamanlı ses ve video ile birçok oyun gibi düşük gecikmeli kullanımların temelini oluşturmaktadır. Tıkanıklık kontrolü, 1980'lerin sonlarından bu yana İnternet'in yük altında çökmesini engellemiştir ve CUBIC ve BBR gibi algoritmalar ile QUIC gibi protokoller üzerindeki devam eden çalışmalar, gecikme-verim-adil paylaşım dengesini ayarlamaya devam etmektedir.
Tarihçe
TCP ve IP, başlangıçta 1974 Cerf-Kahn tasarımında tek bir protokol olarak yer almış ve daha sonra ayrılmıştır; UDP (RFC 768, 1980) ise yalnızca temel datagram hizmetine ihtiyaç duyan uygulamalar için eklenmiştir. Erken İnternet'teki bir dizi tıkanıklık çöküşünden sonra, Van Jacobson'ın 1988'deki çalışması, TCP tıkanıklık kontrolünün temelini oluşturan yavaş başlatma ve tıkanıklık önleme algoritmalarını tanıtmıştır; bu algoritmalar, Reno, CUBIC ve BBR gibi varyantlara dönüşerek onlarca yıl boyunca geliştirilmiştir.
Tartışmalar
- Kayıp tabanlıya karşı gecikme tabanlı ve model tabanlı tıkanıklık kontrolü
- Klasik TCP, tıkanıklığı paket kaybından çıkarım yapmaktadır; bu durum, yüksek bant genişliğine sahip, yüksek gecikmeli bağlantıları yetersiz kullanabilmekte ve geç tepki verebilmektedir, bu da BBR gibi gecikme tabanlı ve model tabanlı algoritmaları tetiklemektedir. Bu tür algoritmaların kayıp tabanlı olanlarla bir arada bulunması durumunda adillik ve dağıtılabilirlik üzerine tartışmalar devam etmektedir.
Öne çıkan isimler
- Van Jacobson
- Jon Postel
- Vinton Cerf
- Sally Floyd
İlgili konular
Temel eserler
- kurose2021
- jacobson1988
- rfc9293
Sıkça sorulan sorular
- TCP yerine UDP'yi ne zaman kullanmalıyım?
- Düşük gecikmenin garantili teslimattan daha önemli olduğu ve kaybı tolere edebileceğiniz veya kendiniz yönetebileceğiniz durumlarda (örneğin gerçek zamanlı ses/video, DNS sorguları veya oyunlar) UDP kullanmalısınız. Web sayfaları, dosya transferleri ve e-posta gibi durumlarda güvenilir, sıralı teslimata ve yerleşik tıkanıklık kontrolüne ihtiyacınız olduğunda TCP kullanmalısınız.
- Tıkanıklık kontrolü aslında ne işe yarar?
- Tıkanıklık kontrolü, bir göndericinin veriyi ağa ne kadar hızlı enjekte ettiğini, genellikle paket kaybı veya gecikme gibi tıkanıklık sinyallerine dayanarak ayarlamaktadır. Ağ aşırı yüklendiğinde geri çekilerek ve diğer durumlarda boş kapasiteyi araştırarak, toplam trafiği ağın kapasitesine yakın tutmakta ve bant genişliğini akışlar arasında kabaca adil bir şekilde paylaşmaktadır.