İçindekiler
- Taşıma katmanı kavramını anlamak
- Taşıma katmanı protokolleri
- User Datagram Protocol – UDP,
- Transmission Control Protocol – TCP,
- RTT
- Akış denetimi
- Tıkanıklık kontrolü
- Real-time Transport Protocol – RTP
- Real-time Transport Control Protocol – RTCP
Uçtan-uca Taşıma

Genel konsept olarak taşıma, uygulamalar arasında uçtan-uca, bağlantı sağlanması olarak tanımlanabilir. Bu katman bazen end-to-end protocols olarak da isimlendirilir.
Taşıma katmanı protokolleri, kaynak düğümden çıkan bir paketi, hedefe ulaşıncaya kadar güvenilir ve etkin olarak taşımalıdır.
Taşıma protokollerinin, uygulamalar açısından belirli gereksinimleri sağlamaları gerekir. Bu açıdan bu protokoller;
- Garantili mesaj dağıtımı (mesajlar atılabilir)
- Gönderilen sırayla mesajların dağıtımı (mesaj sıraları bozulabilir)
- Gönderilen her mesajın en fazla bir kopyasını dağıtma (çoklanabilir)
- İstenilen boyutlardaki mesajlara destek (MTU sınırları)
- Alıcı-gönderici arasındaki sankronizasyon (uzun gecikmeler olabilir)
- Alıcı-gönderici için akış kontrol desteği (best-effort delivery)
- Her düğümde, birden çok uygulama sürecine izin vermeli (multitasking)
User Datagram Protocol - UDP
UDP, yapısı ve fonksiyonları oldukça basit bir protokoldür. UDP başlığı, kaynak port numarası, hedef port numarası, paket uzunluğu ve hata tespiti sağlamaktadır.
Uygulama noktasında UDP paketleri, kendi kaynak portu üzerinden hedef porta veri iletir. Port, uygulamalar arasında uçtan-uca taşıma işlevlerinin ayrıştırıldığı servis numaralarıdır. Örn: DNS 53, HTTP 80, SMTP 25 gibi
Geleneksel anlamda istemci-sunucu iletiminde; istemci, sunucunun bilinen portuna bağlanır. Bu bağlantı sonrasında sunucu, istemcinin portunu öğrenir ve karşılıklı iletişim sürdürülegelir.
UDP – Port Numarası

UDP – Soket adres

UDP – Paket başlığı
Paket Uzunluğu = IP datagram uzunluğu – IP Başlığı Length değeri
yada
Paket Uzunluğu = Data + UDP Header (8)
Checksum = PseudeHeader + UDP Header + UDP Data
PseudeHeader = Kaynak IP + Hedep IP + Protocol (IP’de) + UDP toplam uzunluk + 8 bit sıfır (12 byte tamamlamak için)

UDP – Checksum
UDP checksum hesaplaması, IPv4’de opsiyonel olmakla birlikte, bu hesaplama IP başlığından checksum’ın kaldırılması nedeniyle IPV6’da zorunludur.

User Datagram Protocol - UDP
UDP, bağlantısız ve yeniden iletim mekanizması olmadığı için veri transferi daha hızlıdır.
Ayrıca sıra numarası ve onay mekanizması tanımlanmadığından, aktarılan paketlerin doğru sırası ve bir paketin alınıp alınmadığı bilinmemektedir.
İletilen verinin hedefe ulaşıp ulaşmadığı ağın o anki durumuna bağlıdır. Ayrıca IP ağlarının doğası gereği, bazı paketler çoğaltılmış olabilir ve bazı paketler de sırası bozulmuş şekilde gelebilir.
Ancak artan UDP temelli band genişliği kullanımı, ağ çöküşünü önlemek için kullanılan tıkanıklık kontrolü içermemesi nedeniyle ciddi endişeler ortaya çıkarmaktadır.
Herşeyden önce UDP bağlantı yükü azdır ancak UDP datagramlarının ağda kaybolması, iletilememesi, bozulması durumları ortaya çıkabilir.
Transmission Control Protocol - TCP
TCP protokolü, bağlantı yönelimli, noktadan noktaya güvenilir bir aktarım protokolüdür.
TCP, eksik segmentlerin ve sırası bozulmuş verilerin düzenlenmesi için mekanizmalar içermesi, internet uygulamalarının pek çoğunun TCP tabanlı olmasına yol açmıştır (http, ftp, mail vb. trafikler).
TCP, byte tabanlı bir protokol olmakla birlikte, veriler segment adı verilen paketler halinde taşınır.

TCP – Segment yapısı
Sıra Numarası (SequenceNum), Onay Numarası (Acknowledgment) ve Pencere Boyutu (AdvertisedWindow) alanları, TCP’nin kayan pencere algoritmasında kullanılır.
Veri akışı gerçekte çift yönlü olsa da örneği basitleştirmek için tek yönlü bir akış üzerinden;
İletilen byte dizisini tanımlayan sıra numarası üzerinden alıcıya sıra numarasını onay numarası olarak kullanarak bu iletim hakkında cevap verecektir.
TCP – Sıra Numarası
Örnek: Bir TCP bağlantı üzerinden 5000 byte veri transfer edilmek isteniyor ve her segment’te 1000 byte veri gönderilecektir. İlk byte’ın sıra numarası 1 olarak tanımlandığına göre her segment’in sıra numarasını hesaplayın.
Cevap:
- Segment -> SN: 1 (veri: 1-1000)
- Segment -> SN: 1001 (veri: 1001-2000)
- Segment -> SN: 2001 (veri: 2001-3000)
- Segment -> SN: 3001 (veri: 3001-4000)
- Segment -> SN: 4001 (veri: 4001-5000)
şeklinde gönderilecektir.
TCP – Segment yapısı
6-bit bayrak alanında, TCP bağlantıları arasında kontrol bilgisinin taşınımı için kullanılan SYN, FIN, RESET, PUSH, URG ve ACK bulunur.
SYN ve FIN, bağlantının kurulumu ve sonlandırılmasında kullanılır.
ACK bayrağı, Acknowledgment alanının doldurulduğu tüm durumlarda 1’e kurulur.
URG bayrağı, tamponda, ilgili segmentin öncelikli veri içerdiğini tanımlar. URG’li segment tampon dolmadan uygulamaya verilir. Çok az örneği var.
PUSH bayrağı, göndericinin alıcı tarafında tampon kilitlenmesi ile karşılaşmaması için, tamponun dolmasını beklemeksizin mevcut segmentleri uygulamaya aktarması için kurulur.
RESET bayrağı, alıcıda meydane gelen karışıklık sonucu bağlantının iptal edilmesini talep eder. (alınmaması gereken bir segment alındığında)
TCP – Hata denetimi (checksum)
TCP’de hata denetimi zorunludur ve UDP’ye çok benzer.

TCP – Bağlantı kurulumu
TCP’de bağlantı kurulumu 3 yönlü el sıkışma (three-way handshake) tekniği ile sağlanır.

TCP – Veri aktarımı

TCP – Durum Geçiş Diagramı

TCP – Normal senaryo

TCP – Bağlantının sonlandırılması

TCP’de bağlantı sonlandırılması;
- ESTABLISHED→FIN WAIT 1→FIN WAIT 2→TIME WAIT→CLOSED
- ESTABLISHED→CLOSE WAIT→LAST ACK→CLOSED
- ESTABLISHED→FIN WAIT 1→CLOSING→TIME WAIT→CLOSED
Internet’te TIME_WAIT süresi 2*120 sn. (2 MSL-Maximum segment lifetime) olarak kullanılır.
Aktarım Katmanından önceki konu için – Tıklayınız