Transport
Hizmetleri ve Protokoller
Farklı hostlardaki prosesler arasında mantıksal bağlantı (logical communication) oluşturur.
Transport protokolleri uç sistemlerde çalışır Gönderici taraf uygulama
mesajlarını segment’lere böler ve ağ katmanına gönderir. Alıcı taraf ise
segmentleri birleştirir ve uygulama katmanına gönderir. Uygulamalar için birden
fazla ulaşım katmanı protokolü bulunmaktadır. Internet: TCP ve UDP
Ulaşım
ve Ağ Katmanı (Transport and Network Layer)
Ağ Katmanı: Hostlar arasında mantıksal bağlantıyı sağlar.
Uçtan Uca Ulaşım Simülasyonu |
Benzetim:
12 çocuk farklı yerde
bulunan bir evdeki 12 çocuğa mektup gönderiyor. Burada:
1. Prosesler = Çocuklar
2. Uygulama Mesajları = Zarflardaki Mektuplar
3. Hostlar = Evler
4. Transport Protokol = Her evde mektup toplama ve
dağıtma yapan kişiler
5. Network Layer Protokol = Posta Hizmeti
İnternet
Ulaşım Katmanı (Transport Layer) Protokolleri
Güvenilir,
Sıralı Gönderim: TCP
1. Tıkanıklılık Kontrolü (Congestion Control)
2. Akış Kontrolü (Flow Control)
3. Bağlantı Kurma (Connection Setup)
Güvenilir
Olmayan, Sırasız Gönderim: UDP
IP protokolünün best effort(en iyi çaba) özelliği kullanılır.
Sunulamayan
Hizmetler
1. Gecikme
2. Band Genişliği
Multiplexing/Demultiplexing
Demultiplexing
alıcı host’ta
Doğru soketten gelen segmentler alınır.
Multiplexing
gönderen host’ta
Birden çok soketten gelen veri toplanır, başlık
eklenir.
Mıltiplexing / Demultiplexing Simülasyonu |
Demultiplexing
İşlemi
Host IP datagramlarını alır. Her datagram kaynak
IP adresine ve hedef IP adresine sahiptir. Her datagram 1 transport layer
segment taşır. Her segment kaynak ve hedef port numarasına sahiptir. (bazı
uygulamalar için bilinen port numaraları atanır) Host IP adreslerini ve port
numaralarını kullanarak segmenti uygun sokete yönlendirir.
TCP / UDP Segment Formatı |
Connectionless
Demultiplexing
Port numaralarıyla soketler oluşturulur:
DatagramSocket mySocket1 = new DatagramSocket(9911); DatagramSocket mySocket2 = new DatagramSocket(9922);UDP soket bir ikiliyle tanımlanır: (hedef IP, hedef port)
Host UDP segment aldığında:
Segmentteki hedef port numarası kontrol edilir.
UDP segment port numarasıyla birlikte sokete yönlendirilir. IP datagramlar aynı
sokete kaynak ve hedef IP ile port numaralarıyla yönlendirilir. Source port dönüş adresini (return address) sağlar.
DatagramSocket serverSocket = new DatagramSocket(19157);
Connectionless Demultiplexing Simülasyonu |
Connection-Oriented
Demultiplexing
TCP socket 4 değerle tanımlanır. Bunlar:
1. Kaynak IP
2. Kaynak port
3. Hedef IP
4. Hedef port
Alıcı host bu 4 değer ile segmenti uygun sokete
yönlendirir. Server host eşzamanlı çok sayıda TCP soket destekler:
1. Her soket kendi 4 değeriyle tanımlanır.
2. Web sunucular her bağlanan istemci için farklı
bir sokete sahiptir.
3. Non-persistent HTTP her istek için farklı bir
sokete sahiptir.
Connection-Oriented Demultiplexing Simülasyonu |
Kullanıcı Datagram Protokolü ((UDP) User Datagram Protocol)
Güvenilir olmayan bir İnternet transport protokolüdür.
1. Kayıp toleransı vardır.
2. Veri gönderim oranı hassastır.
3. Uygulamaya sırasız halde gidebilir.
4. UDP best effort servisini sunar,
Diğer UDP kullanımları:
1. DNS
2. SNMP
UDP ile güvenilir transfer için uygulama katmanına güvenilirlik eklenmelidir.
UDP Segment Formatı |
TCP Segment Formatı |
Connectionless
1. UDP alıcı ve gönderici arasında handshaking(el sıkışma) yapılmaz.
2. Her UDP segment diğerlerinden ayrı
değerlendirilir.
3. Sıklıkla multimedya uygulamalarında streaming(akış) için
kullanılır.
UDP
Niçin Var?
1. Bağlantı oluşturulmaz (gecikme olur).
2. Yapısı basit yani alıcı ve gönderici arasında bağlantı
yoktur.
3. Küçük segment başlığı oluşturulur.
4. Tıkanıklılık denetimi yoktur, UDP istediği hızda
veri gönderebilir.
UDP Checksum
İletilen segmentte hata algılama için kullanılan
bir mekanizmadır.
Gönderici:
1. Segment içeriklerine 16-bit integer dizisi
olarak bakılır.
2. Checksum segment içeriğinin 1'e tümleyeninin toplamı alınır.
3. Checksum değeri UDP checksum alanına
yerleştirir.
Alıcı:
1. Alınan segmentte checksum hesaplanır.
2. Hesaplanan checksum değerinin gelen checksum
değeriyle aynı olup olmadığına bakılır. Eğer:
HAYIR ise = hata var.
EVET ise = hata yok.
Egzersiz
Sayıları toplarken en soldaki bitlerdeki taşma
sonuca eklenir.
Aşağıdaki egzersizde iki 16-bit integer değerden checksum
değeri hesaplanıyor.
Güvenilir
Veri (Reliable Data) Transferi Prensipleri
Güvenilir veri transferi (reliable data transfer
(rdt)) protokolün gönderici ve alıcı taraflarını incelenmelidir. Veri transferin tek yönlü (unidirectional)
olduğunu düşünülürse:
1. Ancak kontrol bilgisi iki yönlü gitmektedir.
2. Sonlu durum makineleriyle (Finite State Machines) modellenebilir.
Güvenilir Veri Transferi Katman Simülasyonu |
Rdt
1.0: Güvenilir Kanal Kullanarak Güvenilir Transfer
Altyapıdaki kanal tümüyle güvenilirdir.
1. Bit hatası yoktur.
2. Kayıp paket yoktur.
3. Gönderici ve alıcı sonlu durum makineleriyle modellenebilir.
4. Gönderici kanala veriyi gönderir.
5. Alıcı kanaldan gelen veriyi okur
Rdt 1.0 Sonlu Durum Makinesi |
Rdt
2.0: Bit Hatası Olan Kanal ile Çalışma
Kanalda paket içindeki bitlerde bozulma olabilir.
Bu bit hatalarını kontrol etmek için checksum kullanılır.
Hata düzeltilmesi:
1. ACKnowledgements (ACKs): Alıcı göndericiye
aldığı paketin hatasız olduğunu iletir.
2. Negative ACKnowledgements (NAKs): alıcı
göndericiye aldığı paketin hatalı olduğunu bildirir.
3. Gönderici NAK ile bildirilen paketi tekrar
gönderir.
Rdt
2.0’daki Yenilikler (Rdt 1.0’a göre):
1. Hata denetimi
2. Alıcı geri bildirimi için kontrol mesajları(ACK,
NAK).
Rdt 2.0 Sonlu Durum Makinesi |
Rdt 2.0 Hata Olmadığı Zaman Çalışma Simülasyonu |
Rdt 2.0 Hata Olduğu Zaman Çalışma Simülasyonu |
Rdt
2.0’da Karşılaşılan Problemler
ACK/NAK bozulursa:
1. Gönderici alıcıda ne olduğunu bilmeyecektir.
2. Retransmit(Yeniden İletim) yapılamaz ve duplicate olabilir.
Duplicate’lerin seçilmesi:
1. Gönderici her pakete sıra numarası ekler.
2. Gönderici mevcut paketi retransmit yapar, ACK/NAK bozulursa alıcı duplicate paketleri atar.
Rdt
2.1
Gönderici
1. Sıra numarası pakete eklenir
2. İki sıra numarası (0,1) yeterlidir.
3. Alınan ACK/NAK paketin bozuk olup olmadığı
kontrol edilir
Alıcı
1. Gelen paket çift mi kontrol edilir.
2. Bulunulan durum gelen paket için sıra numarası
olur. (0 veya 1 olarak bekler)
Rdt 2.1 Alıcı Sonlu Durum Makinesi |
Rdt 2.1 Gönderici Sonlu Durum Makinesi |
Rdt
2.2 NAK Kullanılmayan Protokol
ACK kullanarak rdt 2.1 ile aynı işlevi yapar.
1. NAK yerine, alıcı en son doğru alınan paket
için ACK paket gönderir.
2. Alıcı paketin sıra numarasını bilmelidir.
3. Alıcıdaki duplicate ACK paketin retransmit edilmesini sağlar.
Rdt 2.2 Alıcı Sonlu Durum Makinesi |
Rdt 2.2 Gönderici Sonlu Durum Makinesi |
Rdt
3.0: Kanallarda Hata ve Kayıp
Kanalda paketler kaybolabilir (Data veya ACK). Bu veri transferinde checksum, sıra numarası. #, ACK, retransmit
yeterli olmaz.
Çözümü gönderici ACK için belirli bir süre bekler ve bu süre sonunda ACK gelmezse retansmit
yapılır.
Eğer paket (veya ACK) kaybolmamışsa ve gecikmiş olarak gelirse:
1. Retransmit ile duplicate oluşur ancak sıra
numarasıyla belirlenir.
2. Alıcı ACK gönderdiği paketin sıra numarasını
belirlemelidir.
3. Bekleme süresi sonunu belirlemek için aşağı
doğru sayıcı gereklidir.
Rdt 3.0 Gönderici Sonlu durum Makinesi |
Rdt 3.0 Çalışma Simülasyonu |
Rdt 3.0 Çalışma Simülasyonu |
Bir sonraki yazımda görüşmek üzere...