Bilgisayar Ağları III (Computer Networks III)

watch_later 3/18/2016
comment 1 Comment
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.
Ulaşım Katmanı: Prosesler arasında mantıksal bağlantı sağlar ve ağ katmanı hizmetlerini kullanır.




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...
avatar

Sınav için çok yararlı oldu kral adamsın sağol

delete 25 Kasım 2019 13:41



sentiment_satisfied Emoticon