1. Giriş

Aktarım Denetim Protokolü (TCP) paket anahtarlamalı bilgisayar ağlarındaki ve bu tür ağların birbirine bağlı sistemlerindeki konaklar arasında çok güvenilir bir konaktan konağa protokol olarak kullanılmak üzere tasarlanmıştır.

Bu belge Aktarım Denetim Protokolü ve protokolün kullanıcılara veya uygulamalara arayüzünü ve kendisini gerçekleyen programlar tarafından yerine getirilen işlevleri açıklar.

1.1. Güdülenme

Bilgisayar iletişim sistemleri gerek orduda gerek idari teşkilatta ve gerekse sivil çevrelerde gittikçe önemi artan bir konudur. Bu belgede öncelikle askeri bilgisayarların iletişim gereksinimleri, özelikle bir tıkanıklıkta ve güvenilir olmayan bir bağlantı durumunda güvenilirliği sağlama konularına dikkat edilecektir. Ama bu sorunların çoğu sivil ve devlet sektöründe de bulunmaktadır.

Stratejik ve taktiksel olarak bilgisayar iletişim ağları esasen bilgisayarları birbirine bağlamak ve çok sayıda uygulamayı destekleyen standart süreçler arası iletişim protokollerinin tüm gereksinimlerini sağlamak için geliştirilir ve konuşlandırılır. Bu tür standartlarla ilgili gereksinimi karşılamak için Savunma Bakanlığının Araştırma ve Mühendislik Dairesi[74] Savunma Bakanlığı bünyesinde süreçler arası iletişim protokolünün standartlaştırılması temelinde burada açıklanan Aktarım Denetim Protokolünü (TCP) bildirmiştir.

TCP, çok ağlı çalışmayı destekleyen uygulamaları destekleyen protokollerin katmanlı hiyerarşisine uyum sağlamak için tasarlanmış bağlantı yönelimli, uçtan uca güvenilir iletişim sağlayan bir protokoldür. Birbirine bağlı bilgisayar iletişim ağlarına konak olarak bağlı bilgisayar çiftlerindeki süreçler arasında süreçler arası güvenilir iletişim için gerekenleri sağlar. TCP katmanı altındaki iletişim protokollerinin güvenilirliği ile ilgili pek az önkabul yapılmıştır. TCP'nin daha düşük seviyeli protokollerden basit ve potansiyel olarak güvensiz bir veri katarı hizmeti sağlayabileceği varsayılır. TCP'nin doğrudan bağlantılı ağlardan paket anahtarlamalı veya devre anahtarlamalı ağlara kadar geniş bir tayftaki iletişim sistemleri üzerinde çalışabilmesi prensip olarak mümkün olmalıdır.

TCP temel olarak ilk defa Cerf ve Kahn tarafından [1] içinde açıklanan kavramlara oturtulmuştur. TCP katmanlı protokol mimarisinde, Genel Ağ veri katarı "zarfları" halinde zarflanmış değişik uzunluktaki veri bölütlerini almak ve göndermek için TCP'ye bir yöntem sağlayan temel Genel Ağ Protokolünün hemen üstüne oturur. Genel Ağ veri katarı farklı ağlardaki kaynak ve hedef TCP'lerin adreslenmesini sağlar. Genel Ağ protokolü ayrıca çoklu ağlar ve bağlantılı ağ geçitlerinden taşınmasını ve teslimatını sağlamak için TCP veri bölütlerinin parçalanması ve yeniden birleştirilmesi ile de ilgilenir. Genel Ağ protokolü ayrıca öncelik, güvenlik sınıflandırması ve TCP veri bölütlerinin bölümlere ayrılması ile ilgili bilgileri de taşır, böylece bu bilgi çok sayıda ağ arasında bir uçtan bir uca iletilebilir.

Şekil 1. Protokol Katmanları
+---------------------+
|      üstdüzey       |
+---------------------+
|        TCP          |
+---------------------+
| Genel Ağ protokolü  |
+---------------------+
|    iletişim ağı     |
+---------------------+

Bu belge çoğunlukla, konak bilgisayarlarda daha yüksek seviyeli protokollerle birlikte yerleşik olan TCP gerçeklenimleri bağlamında kaleme alınmıştır. Bazı bilgisayar sistemleri ağlara bağlanmak için üzerlerinde ağa özel yazılımlara ek olarak TCP ve IP katmanlarını barındıran bilgisayarları kullanır. TCP belirtimi, bağlanma noktasında bile gerçeklenebilir görünen daha yüksek seviyeli protokollere bir arayüzden başka bağlanma noktası protokolü olarak da gerçeklenmeye uygun bir arayüz tanımlar (Burada bağlantı noktasından kasıt, sistemin ağa bağlantısını sağlayan bilgisayardır).

1.2. Etki Alanı

TCP, çok ağlı bir ortamda iki süreç arasında güvenilir bir iletişim sağlamak için düşünülmüştür. TCP, çoklu ağlarda ortak kullanım için iki konak arası protokol olarak tasarlanmıştır.

1.3. Belge Hakkında

Bu belgede bir TCP gerçekleniminin, gerek daha yüksek seviyeli protokollerle etkileşim gerekse diğer TCP gerçeklenimleriyle etkileşimin gerektirdiği davranışın bir belirtimi sunulmaktadır. Bu bölümün kalanında protokol arayüzlerine ve işlemlerine kısaca bir gözatılmıştır. FELSEFE bölümünde TCP tasarımının felsefi temeli özetlenmiştir. İşlevsel Belirtim bölümünde ise TCP veri bölütlerinin biçimlerinin ayrıntıları ile oluşan çeşitli olaylarda (yeni veri bölütlerin gelişi, kullanıcı çağrıları, hatalar, vs.) TCP'nin verdiği tepkilerin ayrıntıları açıklanmıştır.

1.4. Arayüzler

TCP arayüzlerinin bir tarafı Genel Ağ Protokolü gibi daha düşük seviyede bir protokole bakarken, diğer tarafı kullanıcıya veya uygulama süreçlerine bakar.

Uygulama süreçleri ve TCP arasındaki arayüz makul derecede bir ayrıntıyla ele alınmıştır. Bu arayüz bir işletim sisteminin dosyaları işlemesi için bir uygulama sürecine sağladığı çağrılara çok benzeyen bir çağrı kümesinden oluşur. Örneğin, bağlantıları kurmak ve kapamak, kurulu bağlantılar üzerinden veri göndermek ve almak için çağrılar vardır. Ayrıca TCP'nin uygulama programları ile eşzamansız haberleşmesi beklenir. TCP gerçeklenimcilerine belli bir işletim sistemine uygun arayüzlerin tasarlanması için epeyce özgürlük tanınmış olsa da, TCP/kullanıcı arayüzünde geçerli bir gerçeklenim için asgari bir işlevsellik gereklidir.

TCP ile daha düşük seviyeli protokol arasındaki arayüz aslında belirlenmemiştir, ancak iki seviyenin birbirlerine eşzamansız olarak bilgi aktarabilecekleri bir mekanizmanın olduğu varsayılır. Genel olarak, bu arayüzü daha düşük seviyedeki protokolün belirleyeceği umulur. TCP birbirine bağlı ağlardan oluşan çok genel bir ortamda çalışmak üzere tasarlanmıştır. Bu belge boyunca, daha düşük seviyeli protokolün Genel Ağ Protokolü [2] olduğu varsayılmıştır.

1.5. İşlemler

Evvelce belirtildiği üzere, TCP'nin birincil amacı süreç çiftleri arasında güvenilir ve güvenli olabilen mantıksal bir devre veya bağlantı hizmeti sağlamaktır. Bir az güvenilir ağ iletişim sisteminin tepesinde bu hizmeti sağlamak için aşağıdaki alanlardaki oluşumlara ihtiyaç vardır:

  • Temel Veri Aktarımı
  • Güvenilirlik
  • Akış Denetimi
  • Çoğullama
  • Bağlantılar
  • Öncelik ve Güvenlik

TCP'nin bu alanların her birindeki temel işlemleri aşağıdaki paragraflarda açıklanmıştır.

Temel Veri Aktarımı:

TCP, Genel Ağ sistemi üzerinden aktarım için bazı sayıları veri bölütleri içinde sekizliler şeklinde paketleyen kullanıcılar arasında iki yönlü olarak sürekli bir sekizliler akımı olarak aktarabilir. Genelde, TCP verinin ne zaman durdurulacağına ve ne zaman bırakılacağına kendi kuralları dahilinde karar verir.

Bazen kullanıcılar gönderilmesi için TCP'ye teslim ettikleri verilerin tamamının iletildiğinden emin olmak ister. İşte bu amaçla bir gitsin işlevi tanımlanmıştır. TCP'ye teslim edilmiş verinin gerçekten iletildiğinden emin olmak için gönderici tarafın bu verinin alıcı tarafa doğru itilmesi gerektiğini belirtmesi gerekir. Bir GİTsin, TCP'nin hemen bu noktada alıcıya verileri göndermesine ve teslim etmesine sebep olur. gitme noktası alıcı tarafa görünür olmayabileceği gibi gitsin işlevi bir kayıt sınırlama işaretçisi de sağlamaz.

Güvenilirlik:

TCP'nin Genel Ağ iletişim sistemi tarafından hasar verilmiş, kaybedilmiş, yinelenmiş veya sırası değiştirilerek teslim edilmiş verileri kurtarması gerekir. Bunu sağlamak için aktarılacak her sekizliye alıcı TCP tarafından olumlu bir alındı (ALN) gönderilmesini gerektiren bir sıra numarası atanır. Eğer bir zaman aşımı süresi içinde ALN alınmazsa veri yeniden aktarılır. Alıcı tarafta bu sıra numarası gönderilen veri bölütlerin doğru sıraya konması (veri bölütleri karışık bir sırada gelmiş olabilir) ve gelen veri bölütlerinin içinden yinelenmiş olanların ayıklanması için kulanılır. Aktarılan veri bölütlerinde meydana gelen hasarı saptamak için her veri bölütüne, alıcı tarafta sınanması ve bozuksa veri bölütünün iptal edilebilmesi için bir sağlama özeti eklenir.

TCP'ler düzgün olarak işlediği sürece ve Genel Ağ sistemi tamamen parçalanmadıkça verinin düzgün teslimatını etkileyecek hiçbir aktarım hatası olmaz.

Akış Denetimi:

TCP alıcıya gönderici tarafından gönderilmiş verinin miktarını yönetme imkanı da sağlar. Bunun için her ALN ile bir "pencere" döndürülür ve bu pencere son veri bölütün başarıyla alındığını belirtmekten başka alıcıdan bir izin alınmasını gerektirmeden gönderilebilecek sekizlilerin sayısını belirten bir sıra numarası aralığı içerir.

Çoğullama:

Tek bir konak içinde birden fazla sürecin TCP iletişim oluşumlarını aynı anda kullanabilmelerini mümkün kılmak için TCP her konağa bir takım adresler ve portlar sağlar. Genel Ağ iletişim katmanındaki ağ ve konak adreslerine kademeli eklenerek bu bir soketi şekillendirir. Bir bağlantı bir soket çifti gerektirdiğinden bir soket aynı anda çok sayıda bağlantıda kullanılabilir.

Süreçlerin portlara bağlanması her konak tarafından bağımsız olarak yürütülür. Yine de, sıklıkla kullanılan süreçleri (örn, bir günlük kayıtçısı veya zaman paylaşım hizmeti) herkesin bildiği hep aynı soketlere bağlamak kullanışlılık sağlar. Bu hizmetlere böylece bilinen adreslerden erişilebilir. Diğer süreçlerin port adreslerinin kurulması ve öğrenilmesi daha anlık mekanizmaların işe karışmasını gerektirebilir.

Bağlantılar:

Yukarıda açıklanan güvenilirlik ve akış denetim mekanizmaları TCP'lerin her veri akımı için ilklendirilmesini ve belli bir durum bilgisinin sürekli sağlanmasını gerektirir. Soketleri, sıra numaralarını ve pencere boyutlarını da içererek bu bilgi bütününe bağlantı adı verilir. Her bağlantı her biri bir ucu belirten bir çift soket tarafından eşsiz olarak belirlenir.

İki süreç haberleşmek istediklerinde, kendi TCP'leri önce bir bağlantı oluşturmalıdır (her iki uçta da durum bilgileri ilklendirilmelidir). Haberleşme tamamlandığında, özkaynakları başkalarının kullanımı için serbest bırakmak için bağlantı sonlandırıldıktan sonra kapatılır.

Bağlantılar güvenilir olmayan makinalar arasında ve güvenilir olmayan Genel Ağ iletişim sistemi üzerinden yapılmak zorunda olunduğu için, bağlantıların hatalı ilklendirilmesinden kaçınmak için saate dayalı sıra numaraları ile bir uzlaşma mekanizması kulanılır.

Öncelik ve Güvenlik:

TCP kullanıcıları iletişimlerinin önceliğini ve güvenliğini belirleyebilir. Gerekli önlemler bu özellikler gerekli olmadığında kullanılan öntanımlı değerler için alınır.



[74] Deputy Undersecretary of Defense for Research and Engineering