Ağ Paket Broker TCP Bağlantılarının Temel Sırları: Üçlü El Sıkışmanın gerekliliğinin gizemi çözüldü

TCP Bağlantı Kurulumu
Web'de gezinirken, e-posta gönderirken veya çevrimiçi bir oyun oynarken, genellikle bunun arkasındaki karmaşık ağ bağlantısını düşünmeyiz. Ancak, aramızda ve sunucu arasında istikrarlı iletişimi sağlayan bu görünüşte küçük adımlardır. En önemli adımlardan biri TCP bağlantı kurulumudur ve bunun özü üç yönlü el sıkışmadır.

Bu makale, üç yönlü el sıkışmanın ilkesini, sürecini ve önemini ayrıntılı olarak ele alacaktır. Adım adım, üç yönlü el sıkışmanın neden gerekli olduğunu, bağlantı istikrarını ve güvenilirliğini nasıl sağladığını ve veri aktarımı için ne kadar önemli olduğunu açıklayacağız. Üç yönlü el sıkışmayı daha derinlemesine anlayarak, ağ iletişiminin altında yatan mekanizmaları daha iyi anlayacak ve TCP bağlantılarının güvenilirliğine dair daha net bir görüş elde edeceğiz.

TCP Üçlü El Sıkışma Süreci ve Durum Geçişleri
TCP, veri iletiminden önce bağlantı kurulmasını gerektiren bağlantı odaklı bir taşıma protokolüdür. Bu bağlantı kurma süreci üç yönlü bir el sıkışma ile yapılır.

 TCP üç yönlü el sıkışma

Her bağlantıda gönderilen TCP paketlerine daha yakından bakalım.

Başlangıçta, hem istemci hem de sunucu KAPALI'dır. İlk olarak, sunucu bir portu aktif olarak dinler ve DİNLE durumundadır, bu da sunucunun başlatılması gerektiği anlamına gelir. Sonra, istemci web sayfasına erişmeye hazırdır. Sunucuyla bir bağlantı kurması gerekir. İlk bağlantı paketinin biçimi aşağıdaki gibidir:

 SYN Paketi

Bir istemci bir bağlantı başlattığında, rastgele bir başlangıç ​​sıra numarası (client_isn) üretir ve bunu TCP başlığının "Sıra numarası" alanına yerleştirir. Aynı zamanda, istemci giden paketin bir SYN paketi olduğunu belirtmek için SYN bayrağı konumunu 1 olarak ayarlar. İstemci, sunucuya ilk SYN paketini göndererek sunucuyla bir bağlantı kurmak istediğini belirtir. Bu paket uygulama katmanı verileri (yani gönderilen veriler) içermez. Bu noktada, istemcinin durumu SYN-SENT olarak işaretlenir.

SYN+ACK Paketi

Bir sunucu bir istemciden bir SYN paketi aldığında, kendi seri numarasını (server_isn) rastgele başlatır ve sonra bu numarayı TCP başlığının "Seri numarası" alanına koyar. Daha sonra, sunucu "Onay numarası" alanına client_isn + 1 girer ve hem SYN hem de ACK bitlerini 1 olarak ayarlar. Son olarak, sunucu paketi istemciye gönderir ve bu paket uygulama katmanı verisi içermez (ve sunucunun göndereceği veri yoktur). Bu sırada, sunucu SYN-RCVD durumundadır.

ACK Paketi

İstemci sunucudan paketi aldıktan sonra, son yanıt paketine yanıt vermek için aşağıdaki optimizasyonları gerçekleştirmesi gerekir: İlk olarak, istemci yanıt paketinin TCP başlığının ACK bitini 1 olarak ayarlar; İkinci olarak, istemci "Yanıt numarasını onayla" alanına server_isn + 1 değerini girer; Son olarak, istemci paketi sunucuya gönderir. Bu paket, istemciden sunucuya veri taşıyabilir. Bu işlemler tamamlandıktan sonra, istemci ESTABLISHED durumuna girecektir.

Sunucu, istemciden yanıt paketini aldıktan sonra ESTABLISHED durumuna geçer.

Yukarıdaki işlemden de görebileceğiniz gibi, üçlü el sıkışma gerçekleştirirken üçüncü el sıkışmanın veri taşımasına izin verilir, ancak ilk iki el sıkışmaya izin verilmez. Bu, mülakatlarda sıkça sorulan bir sorudur. Üçlü el sıkışma tamamlandığında, her iki taraf da ESTABLISHED durumuna girer, bu da bağlantının başarıyla kurulduğunu gösterir, bu noktada istemci ve sunucu birbirlerine veri göndermeye başlayabilir.

Neden üç el sıkışma? İki değil, dört kez?
Yaygın cevap, "Üçlü el sıkışma alma ve gönderme yeteneğini garantilediği için." Bu cevap doğrudur, ancak yalnızca yüzeysel bir nedendir, ana nedeni ortaya koymaz. Aşağıda, bu konuyu daha iyi anlamak için üçlü el sıkışmanın nedenlerini üç açıdan analiz edeceğim.

Üçlü el sıkışma, tarihsel olarak tekrarlanan bağlantıların başlatılmasını etkili bir şekilde önleyebilir (ana sebep)
Üçlü el sıkışma, her iki tarafın da güvenilir bir başlangıç ​​sıra numarası aldığının garantisini verir.
Üçlü el sıkışma kaynak israfını önler.

Neden 1: Tarihsel Yinelenen Birleştirmelerden Kaçının
Özetle, üç yönlü el sıkışmanın temel nedeni eski kopya bağlantı başlatma işleminin neden olduğu karışıklığı önlemektir. Karmaşık bir ağ ortamında, veri paketlerinin iletimi her zaman belirtilen zamana uygun olarak hedef ana bilgisayara gönderilmez ve eski veri paketleri ağ tıkanıklığı ve diğer nedenlerden dolayı hedef ana bilgisayara önce ulaşabilir. Bunu önlemek için TCP, bağlantıyı kurmak için üç yönlü bir el sıkışma kullanır.

üçlü el sıkışma, geçmişteki yinelenen bağlantıları önler

Bir istemci, ağ tıkanıklığı gibi durumlarda, art arda birden fazla SYN bağlantı kurma paketi gönderdiğinde, aşağıdakiler meydana gelebilir:

1- Eski SYN paketleri sunucuya son SYN paketlerinden önce ulaşır.
2- Sunucu eski SYN paketini aldıktan sonra istemciye bir SYN + ACK paketi ile cevap verecektir.
3- İstemci SYN+ACK paketini aldığında kendi bağlamına göre bağlantının geçmiş bir bağlantı olduğunu (sıra numarası dolmuş veya zaman aşımına uğramış) belirler ve ardından bağlantıyı sonlandırmak için sunucuya RST paketi gönderir.

İki el sıkışma bağlantısıyla, geçerli bağlantının geçmiş bir bağlantı olup olmadığını belirlemenin bir yolu yoktur. Üç yönlü el sıkışma, istemcinin geçerli bağlantının geçmiş bir bağlantı olup olmadığını, üçüncü paketi göndermeye hazır olduğunda bağlama göre belirlemesine olanak tanır:

1- Tarihsel bir bağlantı ise (sıra numarası geçmiş veya zaman aşımına uğramış), üçüncü el sıkışma ile gönderilen paket tarihsel bağlantıyı sonlandırmak için bir RST paketidir.
2- Eğer tarihsel bir bağlantı değilse, üçüncü kez gönderilen paket bir ACK paketidir ve haberleşen iki taraf arasında bağlantı başarılı bir şekilde kurulmuştur.

Dolayısıyla TCP'nin üçlü el sıkışmayı kullanmasının temel nedeni, geçmişteki bağlantıları engellemek için bağlantıyı başlatmasıdır.

Neden 2: Her iki tarafın başlangıç ​​sıra numaralarını senkronize etmek
TCP protokolünün her iki tarafı da güvenilir iletimi sağlamak için önemli bir faktör olan bir sıra numarasına sahip olmalıdır. Sıra numaraları TCP bağlantılarında önemli bir rol oynar. Aşağıdakileri yaparlar:

Alıcı, tekrarlanan verileri ortadan kaldırabilir ve verilerin doğruluğunu garantileyebilir.

Alıcı, verilerin bütünlüğünü garanti altına almak için paketleri sıra numarasına göre alabilir.

● Sıra numarası, diğer tarafa ulaşan veri paketini tanımlayarak güvenilir veri iletimi sağlar.

Bu nedenle, bir TCP bağlantısı kurulduğunda, istemci başlangıç ​​sıra numarasına sahip SYN paketleri gönderir ve sunucunun istemcinin SYN paketinin başarılı bir şekilde alındığını belirten bir ACK paketiyle yanıt vermesini gerektirir. Daha sonra, sunucu başlangıç ​​sıra numarasına sahip SYN paketini istemciye gönderir ve başlangıç ​​sıra numaralarının güvenilir bir şekilde senkronize edildiğinden emin olmak için istemcinin bir kez ve herkes için yanıt vermesini bekler.

Her iki tarafın başlangıç ​​seri numaralarını senkronize edin

Her iki tarafın başlangıç ​​sıra numaralarını güvenilir bir şekilde senkronize etmek için dört yönlü bir el sıkışma da mümkün olsa da, ikinci ve üçüncü adımlar tek bir adımda birleştirilebilir ve bu da üç yönlü bir el sıkışma ile sonuçlanır. Ancak, iki el sıkışma yalnızca bir tarafın başlangıç ​​sıra numarasının diğer tarafça başarıyla alınmasını garanti edebilir, ancak her iki tarafın başlangıç ​​sıra numarasının doğrulanabileceğine dair bir garanti yoktur. Bu nedenle, TCP bağlantılarının istikrarını ve güvenilirliğini sağlamak için üç yönlü el sıkışma en iyi seçimdir.

Neden 3: Kaynakların İsrafından Kaçının
Yalnızca "iki el sıkışma" varsa, istemci SYN isteği ağda engellendiğinde, istemci sunucu tarafından gönderilen ACK paketini alamaz, bu nedenle SYN yeniden gönderilir. Ancak, üçüncü bir el sıkışma olmadığından, sunucu istemcinin bağlantıyı kurmak için bir ACK onayı alıp almadığını belirleyemez. Bu nedenle, sunucu yalnızca her SYN isteğini aldıktan sonra proaktif olarak bir bağlantı kurabilir. Bu, aşağıdakilere yol açar:

Kaynak israfı: İstemcinin SYN isteği engellenirse ve birden fazla SYN paketinin tekrar tekrar iletilmesiyle sonuçlanırsa, sunucu isteği aldıktan sonra birden fazla yedekli geçersiz bağlantı kuracaktır. Bu, sunucu kaynaklarının gereksiz yere israfına yol açar.

Mesaj tutma: Üçüncü bir el sıkışmanın olmaması nedeniyle, sunucunun istemcinin bağlantıyı kurmak için ACK onayını doğru bir şekilde alıp almadığını bilmesinin bir yolu yoktur. Sonuç olarak, mesajlar ağda takılırsa, istemci SYN isteklerini tekrar tekrar göndermeye devam edecek ve sunucunun sürekli olarak yeni bağlantılar kurmasına neden olacaktır. Bu, ağ tıkanıklığını ve gecikmeyi artıracak ve genel ağ performansını olumsuz etkileyecektir.

Kaynak israfından kaçının

Bu nedenle, ağ bağlantısının istikrarını ve güvenilirliğini sağlamak amacıyla TCP, bu sorunların oluşmasını önlemek için bağlantıyı kurarken üçlü el sıkışmayı kullanır.

Özet
TheAğ Paket BrokeriTCP bağlantı kurulumu üç yönlü el sıkışma ile yapılır. Üç yönlü el sıkışma sırasında, istemci önce sunucuya SYN bayrağıyla bir paket göndererek bağlantı kurmak istediğini belirtir. İstemciden isteği aldıktan sonra, sunucu istemciye SYN ve ACK bayraklarıyla bir paket göndererek bağlantı isteğinin kabul edildiğini belirtir ve kendi başlangıç ​​sıra numarasını gönderir. Son olarak, istemci sunucuya bağlantının başarıyla kurulduğunu belirtmek için bir ACK bayrağıyla yanıt verir. Böylece, iki taraf ESTABLISHED durumunda olur ve birbirlerine veri göndermeye başlayabilir.

Genel olarak, TCP bağlantı kurulumu için üç yönlü el sıkışma süreci, bağlantının istikrarını ve güvenilirliğini sağlamak, geçmiş bağlantılar nedeniyle karışıklığı ve kaynak israfını önlemek ve her iki tarafın da veri alıp gönderebilmesini sağlamak için tasarlanmıştır.


Gönderi zamanı: 08-Oca-2025