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ğrısıyda belirtilir. ç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ğrısında ayrıca bağlantının doğrudan mı kurulacağı yoksa edilgen olarak mı bekleneceği belirtilir.

Edilgen bir 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 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ğ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ğ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ğrıları yapabilir ve başka süreçlerin doğrudan ç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ğ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ğrıları ile yabancı doğrudan çağrılarındaki soketleri eşleştirmede başlıca iki durum sözkonusudur. İlk durumda, yerel edilgen çağrıları yabancı soketi tamamen belirtir. Bu durumda eşleşme kesin olmalıdır. İkinci durumda, yerel edilgen ç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ğrılarından bazıları (ADB'lerde kayıtlı olarak) beklemedeyse, belirsiz yabancı soketli bir ADB seçilmeden önce, bir yabancı doğrudan çağrısı, bir yerel doğrudan ç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ğ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.