3.9. Olay İşleme

Bu bölümde betimlenen işlemler olası bir gerçeklenim örneğidir. Başka gerçeklenimlerin işlem sıraları birazcık farklı olabilir, fakat bu bölümdekilerden esasta değil sadece ayrıntıda farklı olmalıdır.

TCP etkinliğinin ayırıcı özellikleri olaylara verdiği yanıtlardır denebilir. Meydana gelen olaylar üç kategoride incelenebilir: kullanıcı çağrıları, veri bölütlerinin varışı ve zaman aşımları. Bu bölümde her bir olaya TCP'nin verdiği işlemsel yanıtlar açıklanmıştır. Çoğu durumda gereken işlem bağlantının durumuna bağımlıdır.

Meydana gelen olaylar:

Kullanıcı Çağrıları
AÇ
GÖNDER
AL
KAPAT
TERKET
DURUM
Ulaşan Veri bölütleri

Veri bölütü Varışları

Zaman aşımları
Kullanıcı Zaman aşımı
Yeniden Aktarım Zaman aşımı
ZMN-BEKLE Zaman aşımı

TCP/Kullanıcı arayüzü modeli hemen bir dönüş ve bir olay veya bir sözde kesme üzerinden olası bir gecikmiş yanıt alan kullanıcı komutlarından oluşur. Aşağıdaki açıklamalarda "sinyal" bir gecikmiş yanıta sebep olan şey anlamında kullanılmıştır.

Hata yanıtları karakter dizgeleri olarak verilmiştir. Örneğin, mevcut olmayan bağlantılara atıf yapan kullanıcı komutları şu yanıtı alır: "hata: bağlantı açık değil".

Sıra numaraları, alındı numaraları, pencereler, vesaire ile ilgili tüm aritmetik işlemler 2^32'lik bir sıra numaraları uzayıyla sınırlıdır. Ayrıca "=<" işareti 2^32 ile bölümden artandan küçük veya eşit oduğunu gösterir.

Gelen veri bölütlerine uygulanan işlemlerde izlenen doğal yol, önce sıra numarasının doğruluğunun sınanması (sıra numarası uzayının beklenen "alım penceresi" aralığına düşen sıra numaralarından biri olup olmadığı) ve bu sıra numarasına göre kuyruğa alınıp işlenmesidir.

Bir veri bölütü daha önce alınmış veri bölütleri ile örtüştüğünde, veri bölütünü sadece yeni veriyi içerecek şekilde yeniden oluşturur ve başlık alanlarını uygun biçimde ayarlarız.

Bir durum değişikliğinden bahsedilmedikçe TCP'nin aynı durumda kalacağına dikkat ediniz.

3.9.1. Çağrısı

KAPALI Durumu (örn, ADB'nin olmayışı)

Bağlantı durum bilgisini saklamak üzere yeni bir Aktarım Denetim Bloku (ADB) oluşturulur. Yerel soket belirteci, yabancı soket, öncelik, güvenlik/bölüm ve kullanıcı zaman aşımı bilgileri doldurulur. Yabancı soketin bazı parçalarının bir edilgen çağrısında belirsiz olabileceğini ve gelen EŞZ veri bölütündeki bağımsız değişkenlere göre doldurulacağına dikkat ediniz. Bu kullanıcı için istenen güvenlik ve önceliğin doğrulanmasına izin verilebilmesi için "hata: önceliğe izin verilmiyor" veya "hata: güvenlik/bölüme izin verilmiyor" şeklinde bir hata dönmemiş olması gerekir. Eğer çağrı edilgen ise DİNLE durumuna geçilir ve dönülür. Çağrı etkin ise ve yabancı soket belirsizse, "hata: yabancı soket belirsiz" hatası döner. Çağrı etkin ise ve yabancı soket belirliyse, bir EŞZ veri bölütü hazırlanır. Bir ilk gönderi sıra nunarası (İGS) seçilip <SIRA=İGS><DNT=EŞZ> biçiminde bir EŞZ veri bölütü gönderilir. GÖN.OLM değişkenine İGS, GÖN.SNR değişkenine İGS+1 atanır, EŞZ-GÖNDER durumuna geçilir ve döner.

Eğer çağrıcı belirtilen yerel sokete erişemiyorsa, "hata: bağlantı bu süreç için kuraldışı" hatası döner. Yeni bir bağlantı oluşturmak için yeterli yer yoksa, "hata: özkaynaklar yetersiz" hatası döner.

DİNLE Durumu

Çağrı etkin ve yabancı soket belirli ise, bağlantı edilgenden etkine döner, bir İGS seçilir. Bir EŞZ veri bölütü gönderilir, GÖN.OLM değişkenine İGS, GÖN.SNR değişkenine İGS+1 atanır. EŞZ-GÖNDER durumuna geçilir. GÖNDER ile ilişkili veri EŞZ veri bölütü ile gönderileceği gibi KURULU duruma geçildikten sonraki aktarım için kuyruğa da alınabilir. Aciliyet bitinin veri ile gönderilmesi komutta istenmişse, veri bölütleri bu komutun bir sonucu olarak gönderilir. İstek için kuyrukta yer yoksa, yanıt "hata: özkaynaklar yetersiz" olur. Eğer yabancı soket belirtilmemişse, "hata: yabancı soket belirsiz" hatası dönülür.

EŞZ-GÖNDER Durumu EŞZ-ALINDI Durumu KURULU Durumu SON-BEKLE-1 Durumu SON-BEKLE-2 Durumu KAPAT-BEKLE Durumu KAPANIŞ Durumu SON-ALN Durumu ZMN-BEKLE Durumu

"hata: bağlantı zaten mevcut" hatası döner.

3.9.2. GÖNDER Çağrısı

KAPALI Durumu (örn, ADB'nin olmayışı)

Eğer kullanıcının böyle bir bağlantıya erişim izni yoksa, "hata: bağlantı bu süreç için kuraldışı" hatası döner.

Aksi takdirde, "hata: bağlantı yok" hatası döner.

DİNLE Durumu

Yabancı soket belirliyse, bağlantı edilgenden etkine döner, bir İGS seçilir. Bir EŞZ veri bölütü gönderilir, GÖN.OLM değişkenine İGS, GÖN.SNR değişkenine İGS+1 atanır. EŞZ-GÖNDER durumuna geçilir. GÖNDER ile ilişkili veri EŞZ veri bölütü ile gönderileceği gibi KURULU duruma geçildikten sonraki aktarım için kuyruğa da alınabilir. Aciliyet bitinin veri ile gönderilmesi komutta istenmişse, veri bölütleri bu komutun bir sonucu olarak gönderilir. İstek için kuyrukta yer yoksa, yanıt "hata: özkaynaklar yetersiz" olur. Eğer yabancı soket belirtilmemişse, "hata: yabancı soket belirsiz" hatası döner.

EŞZ-GÖNDER Durumu EŞZ-ALINDI Durumu

KURULU duruma geçildikten sonra aktarılmak üzere veri kuyruğa alınır. Kuyrukta yer yoksa, yanıt "hata: özkaynaklar yetersiz" olur.

KURULU Durumu KAPAT-BEKLE Durumu

Tampon veri bölütlenir ve bir alındı bindirilip (alındı değeri = ALM.SNR) ile gönderilir. Bu tamponu hatırlamak için yeterli yer yoksa, yanıt "hata: özkaynaklar yetersiz" olur.

Aciliyet bayrağı etkinse, GÖN.ACL <- GÖN.SNR-1 yapılır ve giden veri bölütlerinde aciliyet göstericisi etkinleştirilir.

SON-BEKLE-1 Durumu SON-BEKLE-2 Durumu KAPANIŞ Durumu SON-ALN Durumu ZMN-BEKLE Durumu

"hata: bağlantı kapanıyor" döner ve istek yerine getirilmez.

3.9.3. AL Çağrısı

KAPALI Durumu (örn, ADB'nin olmayışı)

Eğer kullanıcının böyle bir bağlantıya erişim izni yoksa, "hata: bağlantı bu süreç için kuraldışı" hatası döner.

Aksi takdirde, "hata: bağlantı yok" hatası döner.

DİNLE Durumu EŞZ-GÖNDER Durumu EŞZ-ALINDI Durumu

KURULU duruma geçildikten sonra aktarılmak üzere veri kuyruğa alınır. Kuyrukta yer yoksa, yanıt "hata: özkaynaklar yetersiz" olur.

KURULU Durumu SON-BEKLE-1 Durumu SON-BEKLE-2 Durumu

İsteği yerine getirmek için gelen veri bölütlerinden kuyruğa alınanlar yetersizse, istek kuyruğa alınır. AL çağrısını hatırlamak için kuyruk alanı yoksa, yanıt "hata: özkaynaklar yetersiz" olur.

Kuyruktaki gelen veri bölütleri alım tamponunda yeniden oluşturulur ve kullanıcıya dönülür. Durum uygunsa, GİTsin imlemesi yapılır.

ALM.ACL kullanıcıya aktarılmakta olan verinin önündeyse kullanıcı acil veri varlığı konusunda uyarılır.

TCP, verinin kullanıcıya tesliminden sorumlu olduğunda, kullanıcıyla iletişimin bir alındı üzerinden yapılması gerekir. Böyle bir alındının oluşumu, aşağıda, bir gelen veri bölütünün işlenmesi konusunda ele alınacaktır.

KAPAT-BEKLE Durumu

Uzak taraf zaten bir SON göndermiş olduğundan, AL çağrıları elde mevcut olup da henüz kullanıcıya teslim edilmemiş metinden oluşmalıdır. Teslimatı bekleyen metin yoksa, AL çağrısı "hata: bağlantı kapanıyor" yanıtını alacaktır. Aksi takdirde, bekleyen metin AL çağrısını oluşturmakta kullanılabilir.

KAPANIŞ Durumu SON-ALN Durumu ZMN-BEKLE Durumu

"hata: bağlantı kapanıyor" döner.

3.9.4. KAPAT Çağrısı

KAPALI Durumu (örn, ADB'nin olmayışı)

Eğer kullanıcının böyle bir bağlantıya erişim izni yoksa, "hata: bağlantı bu süreç için kuraldışı" hatası döner.

Aksi takdirde, "hata: bağlantı yok" hatası döner.

DİNLE Durumu

Askıdaki AL çağrıları "hata: kapanış" yanıtları ile döndürülür. ADB silinir. KAPALI durumu geçilir ve dönülür.

EŞZ-GÖNDER Durumu

Kuyruktaki GÖNDER veya AL çağrıları "hata: kapanış" yanıtları ile döndürülür. ADB silinir.

EŞZ-ALINDI Durumu

Hiç GÖNDER yoksa ve gönderilecek bekleyen veri de yoksa, bir SON veri bölütü oluşturulup o gönderilir ve SON-BEKLE-1 durumuna geçilir; aksi takdirde, KURULU duruma geçince işlenmek üzere kuyruğa alınır.

KURULU Durumu

Veri bölütlerine bölünerek GÖNDER çağrıları haline getirilmiş verilerin tümü kuyruğa alındıktan sonra bir SON veri bölütü oluşturulur ve o gönderilir. Her durumda, SON-BEKLE-1 durumuna geçilir.

SON-BEKLE-1 Durumu SON-BEKLE-2 Durumu

Kesinlikle bu bir hatadır ve bir "hata: bağlantı kapanıyor" yanıtı alınmalıdır. İkinci bir SON yayınlanana kadar (ilk SON yeniden aktarılabilirse de) bir "tamam" da kabul edilebilir bir yanıt olurdu.

KAPAT-BEKLE Durumu

Önceki tüm GÖNDER çağrıları veri bölütleri haline getirilene kadar bu istek kuyruğa alınır; sonra bir SON veri bölütü gönderilir, KAPANIŞ durumuna geçilir.

KAPANIŞ Durumu SON-ALN Durumu ZMN-BEKLE Durumu

"hata: bağlantı kapanıyor" yanıtı alınır.

3.9.5. TERKET Çağrısı

KAPALI Durumu (örn, ADB'nin olmayışı)

Eğer kullanıcının böyle bir bağlantıya erişim izni yoksa, "hata: bağlantı bu süreç için kuraldışı" hatası döner.

Aksi takdirde, "hata: bağlantı yok" hatası döner.

DİNLE Durumu

Askıdaki AL çağrıları "hata: bağlantı baştan başlatılıyor" yanıtları ile döndürülür. ADB silinir. KAPALI durumu geçilir ve dönülür.

EŞZ-GÖNDER Durumu

Kuyruktaki GÖNDER veya AL çağrıları "hata: bağlantı baştan başlatılıyor" yanıtları ile döndürülür. ADB silinir. KAPALI durumu geçilir ve dönülür.

EŞZ-ALINDI Durumu KURULU Durumu SON-BEKLE-1 Durumu SON-BEKLE-2 Durumu KAPAT-BEKLE Durumu

Bir BŞT veri bölütü gönderilir.

    <SIRA=GÖN.SNR><DNT=BŞT>

Kuyruktaki tüm GÖNDER veya AL çağrıları "hata: bağlantı baştan başlatılıyor" yanıtları ile döndürülmeli; aktarım veya yeniden aktarım için kuyruğa alınmış tüm veri bölütleri (yukarıda BŞT için biçimlenmiş olan hariç) boşaltılmalı, ADB silinmeli, KAPALI duruma geçilip dönülmelidir.

KAPANIŞ Durumu SON-ALN Durumu ZMN-BEKLE Durumu

"tamam" yanıtı verilip ADB silinir, KAPALI duruma geçilip dönülür.

3.9.6. DURUM Çağrısı

KAPALI Durumu (örn, ADB'nin olmayışı)

Eğer kullanıcının böyle bir bağlantıya erişim izni yoksa, "hata: bağlantı bu süreç için kuraldışı" hatası döner.

Aksi takdirde, "hata: bağlantı yok" hatası döner.

DİNLE Durumu

"durum = DİNLE" ve ADB göstericisi döner.

EŞZ-GÖNDER Durumu

"durum = EŞZ-GÖNDER" ve ADB göstericisi döner.

EŞZ-ALINDI Durumu

"durum = EŞZ-ALINDI" ve ADB göstericisi döner.

KURULU Durumu

"durum = KURULU" ve ADB göstericisi döner.

SON-BEKLE-1 Durumu

"durum = SON-BEKLE-1" ve ADB göstericisi döner.

SON-BEKLE-2 Durumu

"durum = SON-BEKLE-2" ve ADB göstericisi döner.

KAPAT-BEKLE Durumu

"durum = KAPAT-BEKLE" ve ADB göstericisi döner.

KAPANIŞ Durumu

"durum = KAPANIŞ" ve ADB göstericisi döner.

SON-ALN Durumu

"durum = SON-ALN" ve ADB göstericisi döner.

ZMN-BEKLE Durumu

"durum = ZMN-BEKLE" ve ADB göstericisi döner.

3.9.7. Veri bölütü Varışları

Durum, KAPALI ise (örn, ADB'nin olmayışı)

Gelen veri bölütündeki tüm veri iptal edilir. BŞT içeren veri bölütü varsa iptal edilir. Bir BŞT içermeyen bir gelen veri bölütü yanıt olarak bir BŞT gönderilmesine sebep olur. Alındı ve sıra numarası alanlarının değerleri suçlu veri bölütünü gönderen TCP tarafından baştan başlatma işlemi için kabul edilebilir şekilde seçilir.

ALN biti etkin değilse, sıra numarası olarak sıfır kullanılır.

    <SIRA=0><ALN=VBL.SIRA+VBL.UZN><DNT=BŞT,ALN>

ALN biti etkinse,

    <SIRA=VBL.ALN><DNT=BŞT>

Ve döner.

Durum, DİNLE ise
İlk sınama bir BŞT için yapılır.

Gelen BŞT yoksayılmalıdır. Dönülür.

İkinci sınama bir ALN için yapılır.

Bir bağlantı hala DİNLE durumundayken bir alındı gelirse kötüdür. ALN kılıklı bir veri bölütü gelmişse bir kabul edilebilir BŞT veri bölütü oluşturulur:

    <SIRA=VBL.ALN><DNT=BŞT>
Dönülür.

Üçüncü sınama bir EŞZ için yapılır.

EŞZ biti etkinse, güvenlik sınanır. Eğer gelen veri bölütündeki güvenlik/bölüm ile ADB'deki tam olarak uyuşmuyorsa bir BŞT veri bölütü gönderilir ve dönülür.

    <SIRA=VBL.ALN><DNT=BŞT>
VBL.PRC > ADB.PRC ise, kullanıcı ve sistem tarafından izin verilmişse ADB.PRC<-VBL.PRC atanır; izin verilmemişse, bir BŞT veri bölütü gönderilir ve dönülür.
    <SIRA=VBL.ALN><DNT=BŞT>
VBL.PRC < ADB.PRC ise devam edilir. ALM.SNR değişkenine VBL.SIRA+1 atanır, İAS değişkenine VBL.SIRA atanır ve başka her denetim ve metin daha sonra işlenmek üzere kuyruğa alınır. İGS seçilmeli ve şöyle bir EŞZ veri bölütü gönderilmelidir:
    <SIRA=İGS><ALN=ALM.SNR><DNT=EŞZ,ALN>
GÖN.SNR değişkenine İGS+1 ve GÖN.OLM değişkenine İGS atanır. Bağlantı durumu EŞZ-ALINDI yapılır. Gelen başka her denetim ve veri (EŞZ ile birleşik) EŞZ-ALINDI durumunda işlenecektir, fakat EŞZ ve ALN tekrar işleme sokulmaz. Dinleme tamamen belli değilse (örn, yabancı sotetin tamamen belli olmaması durumu), belirsiz alanlar şimdiden doldurulmalıdır.

Dördüncü sınama başka metin veya denetim için yapılır.

Bir başka denetim veya metin kılıklı veri bölütü (EŞZ içermeyen) bir ALN içermelidir; böylece ALN işlemi tarafından iptal edilir. Bağlantının bu varoluşu tarafından gönderilmiş hiçbir şeyin yanıtı olamayacağından bir gelen BŞT veri bölütü geçerli olamazdı. Bu yüzden burada böyle bir veri bölütü almazsınız ama alırsanız da veri bölütü iptal edilir ve dönülür.

Durum, EŞZ-GÖNDER ise
İlk sınama ALN biti için yapılır.

ALN biti etkinse

ALN biti etkinse

VBL.ALN =< İGS veya VBL.ALN > GÖN.SNR ise, bir BŞT veri bölütü gönderilir (BŞT biti etkin olmadıkça; aksi takdirde, veri bölütü iptal edilip dönülür).

    <SIRA=VBL.ALN><DNT=BŞT>

ve veri bölütü iptal edilir. Dönülür.

GÖN.OLM =< VBL.ALN =< GÖN.SNR ise ALN kabul edilebilirdir.

İkinci sınama BŞT biti için yapılır

BŞT biti etkinse

ALN kabul edilebilir ise kullanıcı "hata: bağlantı baştan başlatılıyor" sinyalini alır, veri bölütü iptal edilir, KAPALI duruma geçilir, ADB silinir ve dönülür. Aksi takdirde (ALN yoksa), veri bölütü iptal edilir ve dönülür.

Üçüncü sınama güvenlik ve öncelik için yapılır.

Eğer veri bölütündeki güvenlik/bölüm ile ADB'deki tam olarak uyuşmuyorsa bir BŞT veri bölütü gönderilir.

Bir ALN varsa

    <SIRA=VBL.ALN><DNT=BŞT>

Aksi takdirde

    <SIRA=0><ALN=VBL.SIRA+VBL.UZN><DNT=BŞT,ALN>
Bir ALN varsa

Eğer veri bölütündeki öncelik ile ADB'deki tam olarak uyuşmuyorsa bir BŞT veri bölütü gönderilir.

    <SIRA=VBL.ALN><DNT=BŞT>
Bir ALN yoksa

Eğer veri bölütündeki öncelik ADB'dekinden daha yüksekse, kullanıcı ve sistem tarafından izin verilmişse, ADB'deki öncelik veri bölütündekine yükseltilir; önceliğin yükseltilmesine izin verilmezse, bir BŞT veri bölütü gönderilir.

    <SIRA=0><ALN=VBL.SIRA+VBL.UZN><DNT=BŞT,ALN>

Eğer veri bölütündeki öncelik ile ADB'dekinden daha düşükse devam edilir.

Eğer bir BŞT veri bölütü gönderilmişse

veri bölütü iptal edilir ve dönülür.

Dördüncü sınama EŞZ biti için yapılır

Bu adıma sadece ALN tamamsa geçilmelidir, değilse bir ALN yoktur ve veri bölütü bir BŞT içermez. EŞZ biti etkinse ve güvenlik/bölüm ve öncelik kabul edilebilir ise, ALM.SNR = VBL.SIRA+1 ve İAS = VBL.SIRA yapılır. GÖN.OLM değeri VBL.ALN'ye eşit olacak şekilde arttırılmalı (bir ALN varsa) ve yeniden aktarım kuyruğundaki veri bölütleri alındılandıklarından silinmelidir. GÖN.OLM > İGS (bizim EŞZ, ALN'lenmişti) ise, bağlantı durumu KURULU yapılır ve bir ALN veri bölütü oluşturulur ve gönderilir:

    <SIRA=GÖN.SNR><ALN=ALM.SNR><DNT=ALN>
Aktarım için kuyruğa alınmış veri ve denetimler de dahil edilebilir. Veri bölütünde başka veri ve denetim yoksa ACL bitinin sınandığı altıncı adımda işleme devam edilir, aksi takdirde dönülür. Aksi takdirde, EŞZ-ALINDI durumuna geçilir, bir EŞZ,ALN veri bölütü oluşturulur ve gönderilir:
    <SIRA=İGS><ALN=ALM.SNR><DNT=EŞZ,ALN>
Veri bölütünde başka veri ve denetim varsa, KURULU duruma geçildikten sonra işlenmek üzere kuyruğa alınır ve dönülür.

Beşinci sınamada, ne EŞZ ne de BŞT biti etkinse, veri bölütü iptal edilip dönülür.

Aksi takdirde,

İlk sınama sıra numarası için yapılır

EŞZ-ALINDI Durumu
KURULU Durumu
SON-BEKLE-1 Durumu
SON-BEKLE-2 Durumu
KAPAT-BEKLE Durumu
KAPANIŞ Durumu
SON-ALN Durumu
ZMN-BEKLE Durumu

Veri bölütleri sırayla işlenir. Ulaşanlar üzerindeki ilk denemeler eski yinelenmişleri iptal etmek içindir, fakat bu işlem VBL.SIRA sırasıyla yapılır. Bir veri bölütünün içeriği eski ve yeniyi birlikte içeriyorsa, sadece yeni parçalar işlenmelidir.

Gelen bir veri bölütünün kabul edilebilirliği için dört durum sözkonusudur:

Veri bölütü    Alım     Sınama
 Uzunluğu   Penceresi
----------  ---------  -------------------------------------------

    0           0      VBL.SIRA = ALM.SNR

    0          >0      ALM.SNR =< VBL.SIRA < ALM.SNR+ALM.PEN

   >0           0      kabul edilebilir değil

   >0          >0      ALM.SNR =< VBL.SIRA < ALM.SNR+ALM.PEN veya
                       ALM.SNR =< VBL.SIRA+VBL.UZN-1 < ALM.SNR+ALM.PEN

ALM.PEN sıfırsa, hiçbir veri bölütü kabul edilmez, fakat geçerli ALN, ACL ve BŞT'leri kabul etmek için özel bir izin verilmelidir.

Gelen bir veri bölütü kabul edilebilir değilse, yanıtta bir alındı gönderilmelidir (BŞT biti etkin olmadıkça; etkinse veri bölütü iptal edilip dönülür).

    <SIRA=GÖN.SNR><ALN=ALM.SNR><DNT=ALN>

Bir alındı gönderildikten sonra kabul edilmeyen veri bölütü iptal edilir ve dönülür.

Onu izleyen veri bölütünün ALM.SNR'de başlayan ve pencereyi aşmayan idealleştirilmiş veri bölütü olduğu varsayılır. Asıl veri bölütleri bu kabule sığması için pencerenin (EŞZ ve SON dahil) dışına düşen kısımları kırpılarak ve sadece ALM.SNR'de başlayan veri bölütü işlenerek yeniden biçimlendirilebilir. Daha yüksek sira numaraları ile başlayan veri bölütleri daha sonra işlenmek üzere tutulabilir.

İkinci sınama BŞT biti için yapılır.

EŞZ-ALINDI Durumu
BŞT biti etkinse

Bağlantı bir edilgen çağrısı ile başlatılmışsa (örn, DİNLE durumundan gelinip), bağlantı DİNLE durumuna geçirilir ve dönülür. Kullanıcıya bilgi verilmesine gerek yoktur. Bağlantı bir etkin çağrısı ile başlatılmışsa (örn, EŞZ-GÖNDER durumundan gelinip), bağlantı reddedilir ve kullanıcıya "bağlantı reddedildi" sinyali yollanır. Her durumda, yeniden aktarım kuyruğundaki tüm veri bölütleri silinir. Ve etkin durumunda, KAPALI duruma geçilip ADB silinir ve dönülür.

KURULU
SON-BEKLE-1
SON-BEKLE-2
KAPAT-BEKLE

BŞT biti etkinse askıdaki AL ve GÖNDER çağrıları "baştan-başlat" yanıtları almalıdır. Tüm veri bölütü kuyrukları boşaltılır. Kullanıcılar ayrıca talep edilmemiş bir genel "bağlantı yeniden başlatılıyor" sinyali almalıdır. KAPALI duruma geçildikten sonra ADB silinir ve dönülür.

KAPANIŞ Durumu
SON-ALN Durumu
ZMN-BEKLE

BŞT biti etkinse KAPALI duruma geçildikten sonra ADB bilinir ve dönülür.

Üçüncü sınama güvenlik ve öncelik için yapılır.

EŞZ-ALINDI Durumu

Eğer veri bölütündeki güvenlik/bölüm ve öncelik ile ADB'dekiler tam olarak uyuşmuyorsa bir BŞT veri bölütü gönderilir ve dönülür.

KURULU Durumu

Eğer veri bölütündeki güvenlik/bölüm ve öncelik ile ADB'dekiler tam olarak uyuşmuyorsa bir BŞT veri bölütü gönderilir ve askıdaki AL ve GÖNDER çağrıları "yeniden-başlat" yanıtları alır. Tüm veri bölütü kuyrukları boşaltılır. Kullanıcılar ayrıca talep edilmemiş bir genel "bağlantı yeniden başlatılıyor" sinyali almalıdır. KAPALI duruma geçildikten sonra ADB silinir ve dönülür.

Bu portlar arasındaki farklı güvenlik veya öncelikli eski bir bağlantıdaki bir veri bölütünün mevcut bağlantının terkedilmesine sebep olmadan engellenmesi için bu sınamanın aşağıdaki sıra numarası sınamasında yeraldığına dikkat ediniz.

Dördüncü sınama EŞZ biti için yapılır.

EŞZ-ALINDI Durumu
KURULU Durumu
SON-BEKLE-1 Durumu
SON-BEKLE-2 Durumu
KAPAT-BEKLE Durumu
KAPANIŞ Durumu
SON-ALN Durumu
ZMN-BEKLE Durumu

EŞZ pencere içindeyse o bir hatadır, bir BŞT veri bölütü gönderilir, askıdaki AL ve GÖNDER çağrıları "baştan-başlat" yanıtları alır, tüm veri bölütü kuyrukları boşaltılır, kullanıcılar ayrıca talep edilmemiş bir genel "bağlantı yeniden başlatılıyor" sinyali alır, KAPALI duruma geçildikten sonra ADB silinir ve dönülür.

EŞZ pencere içinde değilse bu adıma gelinmeden, ilk adımda (sıra numarası sınaması) bir alındı gönderilirdi.

Beşinci sınama ALN alanı için yapılır.

ALN biti etkin değilse veri bölütü iptal edilir ve dönülür

ALN biti etkinse
EŞZ-ALINDI Durumu

GÖN.OLM =< VBL.ALN =< GÖN.SNR ise KURULU duruma geçilip işlem sürdürülür.

Veri bölütü alındısı kabul edilebilir değilse bir BŞT veri bölütü oluşturulur:

    <SIRA=VBL.ALN><DNT=BŞT>

ve gönderilir.

KURULU Durumu

GÖN.OLM < VBL.ALN =< GÖN.SNR ise GÖN.OLM <- VBL.ALN yapılır. Yeniden aktarım kuyruğundaki veri bölütleri alındılandıklarından silinmelidir. Kullanıcılar GÖNDERilmiş ve tamamen alındılanmış tamponlar için olumlu alındılar almalıdır (örn, GÖNDER tamponu "tamam" yanıtı ile dönmelidir). ALN yinelenmişse (VBL.ALN < GÖN.OLM), bu yoksayılır. Birşeylerin henüz gönderilmemiş alındıları varsa (VBL.ALN > GÖN.SNR) bir ALN gönderilir, veri bölütü yokedilir ve dönülür.

GÖN.OLM < VBL.ALN =< GÖN.SNR ise, gönderi penceresi güncellenmemelidir. (GÖN.PS1 < VBL.SIRA veya (GÖN.PS1 = VBL.SIRA ve GÖN.PS2 =< VBL.ALN)) ise, GÖN.PEN <- VBL.PEN, GÖN.PS1 <- VBL.SIRA ve GÖN.PS2 <- VBL.ALN yapılır.

GÖN.PEN'in, GÖN.OLM'den bir mesafe belirttiğine, GÖN.PS1'in GÖN.PEN'i güncellemekte kullanılan son veri bölütünün sıra numarasını kaydettiğine ve GÖN.PS2'nin GÖN.PEN'i güncellemekte kullanılan son veri bölütünün alındı numarasını kaydettiğine dikkat ediniz. Buradaki sınama eski veri bölütleri kullanılarak pencerenin güncellenmesini engeller.

SON-BEKLE-1 Durumu

KURULU durumdaki işlemlere ek olarak, bizim SON alındılandığı anda SON-BEKLE-2 durumuna geçilir ve işleme bu durumda devam edilir.

SON-BEKLE-2 Durumu

KURULU durumdaki işlemlere ek olarak, yeniden aktarım kuyruğu boşsa kullanıcının KAPAT'ı alındılanabilir ("tamam") fakat ADB silinmez.

KAPAT-BEKLE Durumu

KURULU durumdaki işlemlerin aynısı yapılır.

KAPANIŞ Durumu

KURULU durumdaki işlemlere ek olarak, bizim SON'u alındılayan ALN varsa ZMN-BEKLE durumuna geçilir, yoksa veri bölütü yoksayılır.

SON-ALN Durumu

Bu durumda gelebilen tek şey bizim SON'un bir alındısıdır. Bizim SON alındılandığı anda ADB silinir, KAPALI duruma geçilir ve dönülür.

ZMN-BEKLE Durumu

Bu durumda gelebilen tek şey uzak SON'un yeniden aktarımıdır. O tek şey alınır ve 2 AVÖ'lük zaman aşımından sonra yeniden başlanır.

Altıncı sınama ACL biti için yapılır.

KURULU Durumu
SON-BEKLE-1 Durumu
SON-BEKLE-2 Durumu

ACL biti etkinse ALM.ACL <- azm(ALM.ACL,VBL.ACL) yapılır ve kullanıcıya tüketilen verinin önünde aciliyet göstericisi (ALM.ACL) varsa uzak tarafın acil veriye sahip olduğu sinyallenir. Eğer kullanıcı zaten sinyallenmişse (veya hala "acil kip"te ise), devam niteliğindeki bu acil veri için kullanıcı tekrar sinyallenmez.

KAPAT-BEKLE Durumu
KAPANIŞ Durumu
SON-ALN Durumu
ZMN-BEKLE

Uzak taraf tarafından bir SON alınmış olduğundan bu olmamalıdır. ACL yoksayılır.

Yedinci sınama veri bölütü metni için yapılır.

KURULU Durumu
SON-BEKLE-1 Durumu
SON-BEKLE-2 Durumu

KURULU durumdayken, veri bölütü metninin kullanıcının AL tamponlarına teslimi mümkündür. Gerek tampon dolana gerekse veri bölütü boşalana kadar veri bölütlerindeki metin tamponlara taşınabilir. Veri bölütü boş ve bir GİTsin bayrağı taşıyorsa, kullanıcı bilgilendirilir, tampon döndüğünde bir GİTsin alınmış olur.

TCP, verinin kullanıcıya tesliminin sorumluluğunu aldığında, ayrıca, verinin alımını da alındılamalıdır.

TCP, verinin sorumluluğunu aldığı anda, ALM.SNR kabul edilen veri kadar arttırılır ve tamponun kullanılabilirliği bakımından ALM.PEN ayarlanır. ALM.SNR ve ALM.PEN toplamı azalmamalıdır.

Veri İletişimi bölümündeki pencere yönetim önerilerini lütfen dikkate alınız.

Şöyle bir alındı gönderilir:

    <SIRA=GÖN.SNR><ALN=ALM.SNR><DNT=ALN>

Bu alındı, mümkünse yersiz bir gecikmeye uğramasızın, aktarılmakta olan bir veri bölütüne bindirilmiş olmalıdır.

KAPAT-BEKLE Durumu KAPANIŞ Durumu SON-ALN Durumu ZMN-BEKLE Durumu

Uzak tarafta bir SON alınmış olduğundan bu olmamalıdır. Veri bölütü metni yoksayılır.

Sekizinci sınama SON biti için yapılır.

Durum KAPALI, DİNLE veya EŞZ-GÖNDER ise, VBL.SIRA doğrulanamayacağından, SON işleme alınmaz; veri bölütü yokedilir ve dönülür. SON biti etkinse, kullanıcıya "bağlantı kapanıyor" denip askıdaki AL çağrılarına aynı ileti döndürülür, ALM.SNR, SON kadar arttırılır ve SON için bir alındı gönderilir. Kullanıcıya henüz teslim edilmemiş her veri bölütü metni için SON'un GİTsin uygulayacağına dikkat ediniz.

KURULU Durumu
EŞZ-ALINDI Durumu

KAPAT-BEKLE durumuna geçilir.

SON-BEKLE-1 Durumu

Bizim SON ALNlenmişse (belki bu veri bölütünde), ZMN-BEKLE durumuna geçilir, zaman-bekle zamanlayıcısı çalıştırılır, diğer zamanlayıcılar kapatılır; aksi takdirde, KAPANIŞ durumuna geçilir.

SON-BEKLE-2 Durumu

ZMN-BEKLE durumuna geçilir, zaman-bekle zamanlayıcısı çalıştırılır, diğer zamanlayıcılar kapatılır.

KAPAT-BEKLE Durumu

KAPAT-BEKLE durumunda kalınır.

KAPANIŞ Durumu

KAPANIŞ durumunda kalınır.

SON-ALN Durumu

SON-ALN durumunda kalınır.

ZMN-BEKLE Durumu

ZMN-BEKLE durumunda kalınır. 2 AVÖ'lük zaman-bekle zaman aşımı başlatılır.

ve dönülür.

3.9.8. Kullanıcı Zaman aşımı

Herhangi bir durumda, kullanıcı zaman aşımı dolarsa, tüm kuyruklar boşaltılır, kullanıcı genellikle "hata: kullanıcı zaman aşımından dolayı bağlantı terkedildi" ile ve askıdaki çağrılar için sinyallenir, ADB silinir, KAPALI duruma geçilir ve dönülür.

3.9.9. Yeniden Aktarım Zaman aşımı

Herhangi bir durumda, yeniden aktarım kuyruğundaki bir veri bölütünde yeniden aktarım zaman aşımı dolarsa, veri bölütü tekrar yeniden aktarım kuyruğunun başına gönderilir, yeniden aktarım zaman aşımı yeniden başlatılır ve dönülür.

3.9.10. ZMN-BEKLE zaman aşımı

Bir bağlantı üzerinde ZMN-BEKLE zaman aşımı dolarsa ADB silinir, KAPALI duruma geçilir ve dönülür.