2.7. Bağlantının Kurulması ve Temizliği
Bir TCP'nin işleme sokabileceği bağımsız veri akımlarını kimliklendirmek için TCP bir port tanıtı sağlar. Port tanıtları her TCP tarafından bağımsız olarak seçildiğinden eşsiz olmayabilir. Her TCP'ye eşsiz tanıtlar sağlamak, yani birbirlerine bağlı ağlar üzerinde eşsiz olacak bir soket oluşturmak için Genel Ağ adresi ile port tanıtını birleştiririz.
Bir bağlantı, uçlarındaki soketlerin oluşturduğu çift ile belirtilir. Bir yerel soket çok sayıda yabancı soketle bağlantı kurabilir. Bir bağlantı veri taşımak için her iki yönde de kullanılabildiğinden "çift yönlü"dür.
TCP'ler hangi portun hangi süreçle ilişklendirileceğini belirlemekte özgürdürler çünkü onları kendileri seçer. Bununla birlikte bazı gerçeklenimler bazı kabullerin yapılmasını gerektirir. TCP'nin bazı bakımlardan daima belli süreçleri belli soketlerle ilişkilendirdiğini bilmek gerekir. Biz, süreçlerin kendi portları olabileceğini ve bu süreçlerin sadece kendi soketleri üzerinden bağlantıya geçebileceğini, tasavvur ediyoruz. (Sahipliğin gerçeklenmesi yerel bir konudur ama bir port isteği yapacak bir kullanıcı komutu veya örneğin, belli bir süreci bir port isminin yüksek seviyeli bitleri ile ilişkilendirerek, belli bir sürece belli bir grup portu tahsis edecek bir yöntem tasarlayabiliriz.)
Bir bağlantı, bağımsız değişken olarak bir yerel bir de yabancı port vererek bir AÇ çağrısıyda belirtilir. AÇ çağrısı geriye, kullanıcının sonraki çağrılar için atıfta bulunabileceği TCP tarafından sağlanmış bir (kısa) yerel bağlantı ismi döndürür. Bir bağlantı ile ilgili olarak hatırlanması gereken çeşitli şeyler vardır. Bu bilgiyi saklamak için Aktarım Denetim Bloğu (ADB) adını verebileceğimiz bir veri yapısı tasarlarız. Bir gerçeklenim stratejisi olarak yerel bağlantı ismi bu bağlantının ADB'sine bir gösterici olurdu. AÇ çağrısında ayrıca bağlantının doğrudan mı kurulacağı yoksa edilgen olarak mı bekleneceği belirtilir.
Edilgen bir AÇ isteği, sürecin bir bağlantı başlatmaktan ziyade gelen bağlantı isteklerini kabul etmek istediği anlamına gelir. Çoğunlukla edilgen bir AÇ isteği belirten bir süreç herhangi bir çağrıcıdan gelen bağlantı isteğini kabul edecektir. Bu durumda herşeyi sıfır bir yabancı soket, belirsiz bir soketi belirtmekte kullanılır. Belirsiz yabancı soketlere sadece edilgen AÇ çağrılarında izin verilir.
Bilinmeyen başka süreçlere hizmet sağlamak isteyen bir hizmet süreci belirsiz bir yabancı soketle edilgen bir AÇ çağrısı yapar. Bundan sonra bir süreç bu yerel sokete bağlantı isteğinde bulunmuş gibi yapılır. Eğer bu yerel soket bu hizmetle ilişkili olduğu bilinen bir soketse, bağlantı kurulur.
Ne oldukları bilinen soketler bir standart hizmeti öncelikle bir soket adresi ile ilişkilendiren uzlaşımsal bir mekanizmadır. Örneğin, "Telnet Sunucusu" süreci kalıcı olarak belli bir sokete atanmış ve diğer soketler de dosya aktarımı, uzak iş girişi, metin üreteci, yansıtıcı ve giriş noktası (son üçü deneme amaçlıdır) süreçleri için ayrılmıştır. Bir soket adresi, her yeniden oluşturuluşunda belli bir soket döndüren bir "Ara-Bul" hizmetine erişim için ayrılmış olabilirdi. Bildik soketler kavramı TCP belirtiminin bir parçasıdır, fakat soketlerin hizmetlere atanması bu belirtimin dışındadır (bkz, [4]).
Süreçler edilgen AÇ çağrıları yapabilir ve başka süreçlerin doğrudan AÇ çağrılarının bunlarla eşleşmesini beklerler; bağlantılar kurulduğunda TCP tarafından bilgilendirilir. Birbirlerine aynı anda doğrudan AÇ çağrısı yapan iki süreç doğru biçimde bağlanacaktır. Bu esneklik bileşenleri birbirlerine göre eşzamansız hareket eden dağıtık hesaplamanın desteklenmesi bakımından yaşamsal önemdedir.
Yerel edilgen AÇ çağrıları ile yabancı doğrudan AÇ çağrılarındaki soketleri eşleştirmede başlıca iki durum sözkonusudur. İlk durumda, yerel edilgen AÇ çağrıları yabancı soketi tamamen belirtir. Bu durumda eşleşme kesin olmalıdır. İkinci durumda, yerel edilgen AÇ çağrıları yabancı soketi belirsiz bırakır. Bu durumda, yerel soketler eşleştiği sürece herhangi bir yabancı soket kabul edilebilirdir. Diğer olasılıklar kısmen sınırlanmış eşleşmeleri kapsar.
Aynı yerel soketi kullanan edilgen AÇ çağrılarından bazıları (ADB'lerde kayıtlı olarak) beklemedeyse, belirsiz yabancı soketli bir ADB seçilmeden önce, bir yabancı doğrudan AÇ çağrısı, bir yerel doğrudan AÇ çağrısındaki belirli yabancı soketli bir ADB ile, eğer böyle bir ADB mevcutsa, (belirsiz yabancı soketli bekleyenleri sonraya bırakarak) eşleşecektir.
Bağlantıları oluşturan yordamlar eşzamanlama denetim bayrağından (EŞZ
) yararlanırlar ve üç iletilik bir değiştokuşa katılır. Bu değiştokuş üçlü uzlaşı [3] diye adlandırılmıştır.
Bir bağlantı bir kullanıcı AÇ çağrısıyla oluşturulan ve beklemekte olan bir ADB ile EŞZ
içeren bir veri bölütünün geliş randevusu tarafından ilklendirilir. Yerel ve yabancı soketlerin eşleşmesi bir bağlantı ilklendirildiği anda sağlanmış olur. Sıra numaraları da her iki yönde eşzamanlandığı anda bağlantı "kurulmuş" olur.
Bir bağlantı temizliği de veri bölütlerinin değiştokuşunu ve bu durumda SON
denetim bayrağının taşınmasını gerektirir.