İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

TCP Bağlantı Yönetim İşlemleri

Giriş

TCP konum-sürümlü bir protokoldür. İşlemleri (nasıl ve ne zaman TCP varlıkları arasında özel segment alışverişi yapılacağı gibi) birçok kurala uymalıdır. Bu kurallar bir konum-geçiş diyagramı üzerinde anlatılmıştır. TCP bağlantı yönetim işlemlerinin genel bir gösterilimi Şekil 9-10'da mevcuttur. Bu şekli TCP'nin belirli özelliklerini açıklamak için kullanacağız.

TCP işlemlerine örnekler

TCP'nin open, veri transferi ve close işlemleri aşağıdaki bölümlerde anlatılacaktır. Bu TCP işlemlerini anlatmaya geçmeden önce bir haberleşme protokolündeki, type (tip) ve instance (örnek) terimlerini tanımamız gerekir.

Bir tip, bir objeyi tanımlar. Bu örnekte, TCP bir objedir. Bir instance, bir objenin görünmesidir. Böylece, TCP her çağrıldığında, kendisini gösterir. Birçok kullanıcı prosesi eşzamanlı olarak TCP'yi kullanabildiğinden, her bir kullanıcı oturumu TCP mantığını çağırır, ve her bir çağırma TCP tipinin bir instance'dir. Daha pragmatik terimlerle, her bir kullanıcı TCP çağrısı, bazı TCP servislerinin bir oturumu desteklemek üzere icra edilmesini gösterir. Her bir TCP instance'i, TCP'nin olay hakkında sürekli bilgilendirilmesini gerektirir. Her bir kullanıcı oturumunun bu bilgi parçaları TCB'de tutulur.

Şekil 9-10 TCP Bağlantı Yönetim Konum Diyagramı

TCP open

Şekil 9-11'de bağlantı kuran iki TCP varlığı arasındaki ana işlemler gösterilmiştir. TCP A'nın kullanıcısı TCP'ye bir aktif-open primitive'i göndermiştir. Uzak kullanıcı kendi TCP sağlayıcısına bir pasif-open göndermiştir. Bu olaylar, sırası ile 1 ve 2 olayları olarak belirtilmiştir. Bu olaylardan her ikisi de diğerinden daha önce olmuş olabilir.

Şekil 9-11 TCP Open İşlemleri

Bir aktif-open meydana getirmek için TCP A'nın; SYN bayrağı 1'e set edilmiş bir segment hazırlaması gerekir. SYN SEQ 100 olarak kodlanmış segment, TCP B'ye gönderilir (şekilde 3 olarak etiketlenmiştir). Bu örnekte, sıra numarası (SEQ) 100, ISS numarası olarak kullanılmıştır. En yaygın yaklaşım ISS değerini 0 yapmaktır ancak daha önce tartıştığımız kurallara dayanarak ISS değeri herhangi bir sayı seçilebilir ve bu örnekte de ISS = 100 seçilmiştir. SYN kodlaması basitçe SYN bayrağının 1'e set edildiğini gösterir.

TCP B, SYN segmentini alınca 101 sıra numaralı bir acknowledgment'i geri gönderir. Aynı zamanda kendi ISS numarası 177'yi gönderir. Bu olay, 4'le etiketlenmiştir. Bu segmentin alınması ile, TCP A acknowledgment numarası 178'i içeren bir segmentle onay yollar (şekilde olay 5 olarak gösterildi).

Olay 3, 4, ve 5 ile bu handshaking işlemleri oluşunca (ki buna üç-yollu handshake denir), iki TCP modülü, olay 6 ve 7'de olduğu gibi, kendi kullanıcılarına open'lar gönderirler.

Şimdi Şekil 9-12'yi kullanarak, Şekil 9-11'deki işlemlerin Şekil 9-10'daki konum diyagramı kuralları ile ilişkisini gösterebiliriz. Şekil 9-10'daki bilgi yoğunlaştırılıp yeniden çizilerek Şekil 9-12 oluşturulmuştur. Şekil 9-12'de open işlemlerinin segment alışverişleri ve konum geçişleri ile ilişkisi gösterilmiştir. Şeklin en üstü, Şekil 9-11'den türetilmiştir ancak yalnızca iki TCP varlığı arasındaki segment akışını içerir, her bir cihaz içindeki üst ve TCP katmanları arasındaki işlemleri içermez.

Şekil 9-12'nin alt tarafında open'ın konum diyagramının ilgili kısmı gösterilmiştir. Etiketler kalın yazı ile A, B, A-3, A-4, B-3 olarak gösterilmiştir. Bu işaretçiler şeklin üstündeki kalın yazılmış olay numaraları ile eşlenerek; her bir TCP modülünün segmentleri ve konum diyagramlarını nasıl kullandığını göstermek için kullanılabilir.

Şekil 9-12'deki işlemlerin takibine yardımcı olması için, şeklin üst tarafındaki 3 olarak etiketli olaya bakalım. Burada TCP A'nın SYN SEQ 100 yayınladığı görülür. Bu segmentin iletimi öncesi, TCP A bu özel kullanıcı oturumu için CLOSED konumundadır. TCP A, segmenti TCP B'ye gönderdikten sonra konumunu SYN-SENT olarak değiştirir, ve bağlantı için, konum diyagramında gösterildiği gibi, bir TCB girişi oluşturur.

Şekil 9-12 Open İşlemleri, Segment Alışverişi, ve Konum Geçişlerinin İlişkisi

Bundan sonra, diyagramın altına bakalım. A notasyonu TCP A'nın bu kullanıcı oturumu açısından CLOSED konumunda olduğunu gösterir. A-3 ile etiketlenmiş konum geçişi, şeklin üzerinde 3 olarak etiketli TCP A'nın segment yayını ile eşleştirilmiştir. Segment yayınlanınca, TCP A SYN-SENT konumuna girer ve bağlantı için, konum diyagramında gösterildiği gibi, bir TCB girişi oluşturur.

Şimdi TCP B'yi inceleyeceğiz. Şeklin üst kısmında gösterildiği gibi, TCP B LISTEN konumundadır. Konum diyagramında LISTEN konumu B olarak etiketlenmiştir. Diyagramın üst kısmında görüyoruz ki SYN SEQ 100 segmentini alınca, TCP B SYN-RECEIVED konumuna geçer. Bu olaylar konum diyagramında B-3 etiketi ile gösterildi. Şeklin üstünde, olay 4'te ve şeklin altında B-4'te; TCP B'nin SYN ve ACK geri yolladığını görüyoruz.

Şekil 9-12 üzerindeki analiz şeklin üst ve alt parçalarındaki numara ve olaylar eşlenmeye devam edilerek ilerletilebilir.

TCP'ye yeni başlayan biri sıklıkla ‘TCP modülü kapalı bir TCP soketini başlatabilir mi?' sorusunu yöneltir. Yani, bir bağlantı oluşmadan önce orada bir pasif-open olmalı mıdır? TCP aslında kapalı soketlere open yayınlanmasına müsaade eder. Şekil 9-13'de bu aktivite ve eşzamanlı olarak iki TCP modülünden yayın yapıldığında TCP'nin open'ları nasıl kabul ettiği gösterilmiştir. Kapalı bir TCP soketine bir open yayınlamak ile ilgili soruyu yanıtlamak için, ana gereksinimler şunlardır: Open çağrısı bölgesel ve yabancı soket tanımlayıcılarını içermelidir. Open çağrısı aynı zamanda öncelik, güvenlik ve kullanıcı timeout bilgisi içerebilir. Eğer bu bilgiler mevcut ise, TCP modülü SYN segmentini yayınlar. Şekil 9-13'te, open'lar A ve B'den yaklaşık olarak aynı anda yollanmıştır. Bu şekildeki olaylar şöyle gelişir:

Şekil 9-13 Closed Konumlara Eşzamanlı Open Yayınlanması

Olay 1: TCP modülleri bu open'ları alınca, bağlantı bilgisini tutmak üzere yeni iletim kontrol blokları yaratırlar.

Olay 2: TCP A ve B de SYN segmentlerini yaklaşık olarak aynı zamanda göndermişlerdir. Bu şekilde okların pozisyonu trafiğin göreceli zaman sırasını göstermek için kullanılmıştır. Böylece TCP B'nin segmenti TCP A'ya ulaştığında daha TCP A'dan gönderilen SYN segmenti TCP B'ye varmamıştır.

Olay 3: Sonuçta TCP A'dan gönderilen SYN segmenti TCP B'ye varır. Olay 2'deki SYN segmentlerinin sonuçları iki TCP modülünün CLOSED'dan SYN-SENT'e ve SYN-RECEIVED'e geçmesidir.

Olay 4 & 5: İki TCP modülü de, SYN segmentlerini onaylamak üzere, birer ACK segmenti yayınlarlar. Olay 5'teki TCP B'nin segmenti olay 4'teki TCP A'nın segmentinden önce varır. TCP'nin bu eşzamansız yönü bir internet içerisinde değişken gecikmelere sebep olur. Gecikme her iki yönde de değişir.

Olay 6: ACK'nın TCP A tarafından alınması ile (olay 5), TCP A ULP'sine bir bağlantı open işareti yollar.

Olay 7: TCP A'dan gönderilen ACK segmenti sonunda TCP B'ye ulaşır.

Olay 8: Bağlantıyı tamamlamak üzere, TCP B ULP'sine bir bağlantı open gönderir.

TCP veri transfer işlemleri

Şekil 9-14'de bir bağlantıyı başarı ile kurmuş olan iki TCP varlığı gösterilmiştir. Olay 1'de ULP A, TCP A'ya iletim için bir SEND primitive'i ile veri gönderir. Farz edelim ki 50 bayt gönderildi. Olay 2'de görüldüğü gibi, TCP A bu veriyi bir segment haline getirir (paketleme yapar) ve segmenti TCP B'ye sıra numarası 101 ile gönderir. Hatırlayalım ki bu sıra numarası kullanıcı veri nehrinin ilk baytını tanımlar.

Şekil 9-14 TCP Veri Transfer İşlemleri

Uzak TCP'de, olay 3'te veri kullanıcıya (ULP B) teslim edilmiştir. TCP B, olay 4'te gösterildiği gibi, veriyi 151 acknowledgment numaralı bir segmentle onaylar. 151 acknowledgment numarası dahili olarak olay 2'deki segmentle 50 baytın iletildiğini onaylar.

Sonra, TCP B'ye bağlı kullanıcı veri gönderir (olay 5). Bu veri bir segmente olarak paketlenir ve, diyagramdaki olay 6'da olduğu gibi, iletilir. TCP B'den gelen başlangıç sıra numarası 177 idi; böylece, TCP sıralamasına 178 ile başlar. Bu örnekte, TCP 10 oktet iletir. TCP A, acknowledgment numarası 188 olan bir segment geri döndürerek, TCP B'nin 10 segmentini onaylar. Olay 8'de, bu veri TCP A kullanıcısına teslim edilmiştir.

TCP close işlemleri

Şekil 9-15'de bir close işlemi gösterilmiştir. Olay 1'de; TCP A kullanıcısı, TCP B'deki eş üst katman protokolü ile işlemlerini bitirmek (close) istemektedir. Burada TCP A, FIN biti 1'e set edilmiş bir segment yollar. Şekil 9-14'deki işlemlerin devamı olduğu düşünülerek 151 sıra numarası kullanılmıştır.

Bu segmentin TCP B'deki etkisi olay 3'ten görülmektedir. TCP B, TCP A'nın FIN SEQ 151'ini onaylar. TCP B'nin segmentinde SEQ = 188 ve ACK = 152'dir. Bundan sonra, TCP B kendi kullanıcısına bir closing primitive'i yayınlar (olay 4).

Uygulama, işlemlerinin konumuna bağlı olarak, close'u kabul edebilir veya etmeyebilir. Bu örnekte, kullanıcı uygulaması, olay 5'te olduğu gibi, close'u onaylar (acknowledges) ve kabul eder. Uygulama bunu takiben TCP B'ye bir "A'yı kapat" primitive'i yollar. Bu primitive TCP B tarafından FIN SEQ 188; ACK 152 olarak haritalanır, ki bu TCP B'nin yayınladığı son segmenttir (olay 6). Dikkat edelim ki, olay 6'da FIN bayrağı 1'e set edilmiştir, SEQ = 188 ve ACK = 152'dir. TCP A bu son segmenti ACK = 189 ile onaylar (olay 7). Tüm bu işlemlerin sonucu olay 8 ve olay 9'da gösterilmiştir. Böylece bağlantı-closed işaretleri kullanıcı uygulamalarına gönderilmiş olur. Bu şekilde bir close oluşturduğundan, TCP hoş close sağlayan bir protokol olarak anılır.

TCP bağlantı yönetiminin bu analizini tamamlamak için, Şekil 9-16'da konum diyagramının close işlemleri ile ilgili kısmı gösterilmiştir. Şeklin üst kısmı Şekil 9-15'in düşük ölçekli bir versiyonudur, ve burada yalnızca segment iletimleri gösterilmiştir.

TCP bağlantı tablosu

The Internet Management Information Base (MIB) TCP bağlantı tablosunu tanımlar. Bu tablo var olan her bir TCP bağlantısı ile ilgili bilgileri içerir. Şekil 9-17'de gösterildiği gibi, tablo beş sütun ve her bir bağlantı için bir satırdan oluşur.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır