TCP Bağlantı Kurulumu
Web'e göz attığımızda, bir e -posta gönderdiğimizde veya çevrimiçi bir oyun oynadığımızda, genellikle arkasındaki karmaşık ağ bağlantısını düşünmüyoruz. Bununla birlikte, biz ve sunucu arasında istikrarlı iletişim sağlayan bu küçük adımlardır. En önemli adımlardan biri TCP bağlantı kurulumu ve bunun çekirdeği üç yönlü el sıkışma.
Bu makale, üç yönlü el sıkışmasının ilkesini, sürecini ve önemini ayrıntılı olarak tartışacaktır. Adım adım, üç yönlü el sıkışmasına neden ihtiyaç duyulduğ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. Üç yollu el sıkışmasını daha derin bir şekilde anlayarak, ağ iletişiminin altında yatan mekanizmalar ve TCP bağlantılarının güvenilirliği hakkında daha net bir bakış açısı elde edeceğiz.
TCP üç yönlü el sıkışma süreci ve devlet geçişleri
TCP, veri iletiminden önce bağlantı kurulması 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.
Her bağlantıda gönderilen TCP paketlerine daha yakından bakalım.
Başlangıçta, hem istemci hem de sunucu kapalıdır. İlk olarak, sunucu aktif olarak bir bağlantı noktasını dinler ve dinleme durumundadır, bu da sunucunun başlatılması gerektiği anlamına gelir. Ardından, istemci web sayfasına erişmeye hazırdır. Sunucu ile bir bağlantı kurmanız gerekir. İlk bağlantı paketinin biçimi aşağıdaki gibidir:
Bir istemci bir bağlantı başlattığında, rastgele bir başlangıç sırası numarası (client_isn) oluşturur ve onu TCP başlığının "Dizi 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, ilk SYN paketini sunucuya göndererek sunucu ile bağlantı kurmak istediğini belirtir. Bu paket uygulama katmanı verileri içermez (yani veriler gönderilir). Bu noktada, istemcinin durumu SYN-SENT olarak işaretlenir.
Bir sunucu bir istemciden bir SYN paketi aldığında, kendi seri numarasını (Server_Isn) rastgele başlatır ve ardından bu numarayı TCP başlığının "Seri Numarası" alanına koyar. Ardından, sunucu "onay numarası" alanında Client_Isn + 1'i girer ve hem SYN hem de ACK bitlerini 1 olarak ayarlar. Son olarak, sunucu paketi istemciye gönderir (ve sunucunun göndermesi için veri yoktur). Şu anda, sunucu SYN-RCVD durumundadır.
İstemci paketi sunucudan 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; İkincisi, istemci "Cevap Numarasını Onayla" alanında Server_isn + 1 değerini girer; Son olarak, istemci paketi sunucuya gönderir. Bu paket istemciden sunucuya veri taşıyabilir. Bu işlemleri tamamladıktan sonra, müşteri yerleşik duruma girecektir.
Sunucu istemciden yanıt paketini aldıktan sonra, yerleşik duruma da geçer.
Yukarıdaki işlemden de görebileceğiniz gibi, üç yönlü bir el sıkışma yaparken, üçüncü el sıkışmasının veri taşımasına izin verilir, ancak ilk iki el sıkışma değildir. Bu, röportajlarda sıklıkla sorulan bir sorudur. Üç yollu el sıkışma tamamlandıktan sonra, her iki taraf da yerleşik duruma girer, bu da bağlantının başarıyla kurulduğunu gösterir, bu noktada müşteri ve sunucu birbirine veri göndermeye başlayabilir.
Neden üç el sıkışma? İki kez değil, dört kez mi?
Ortak cevap, "çünkü üç yönlü el sıkışma alma ve gönderme yeteneğini garanti ediyor." Bu cevap doğrudur, ancak sadece yüzey nedeni, ana nedeni ortaya koymaz. Aşağıda, bu konuyla ilgili anlayışımızı derinleştirmek için üç yönden üçlü el sıkışmasının nedenlerini analiz edeceğim.
Üç yollu el sıkışma, tarihsel olarak tekrarlanan bağlantıların başlatılmasını etkili bir şekilde önleyebilir (ana sebep)
Üç yollu el sıkışma, her iki tarafın da güvenilir bir başlangıç sırası numarası aldığını garanti eder.
Üç yollu el sıkışma, kaynakları boşa harcamaktan kaçınır.
Sebep 1: Tarihi yinelenen birleşimlerden kaçının
Özetle, üç yönlü el sıkışmasının ana nedeni, eski yinelenen bağlantı başlatmanın neden olduğu karışıklığı önlemektir. Karmaşık bir ağ ortamında, veri paketlerinin iletimi her zaman belirtilen süreye uygun olarak hedef ana bilgisayara gönderilmez ve eski veri paketleri, ağ tıkanıklığı ve diğer nedenler nedeniyle önce hedef ana bilgisayara gelebilir. Bundan kaçınmak için TCP, bağlantıyı kurmak için üç yönlü bir el sıkışma kullanır.
Bir müşteri, ağ tıkanıklığı gibi durumlarda ardışık olarak birden fazla SYN bağlantı kurma paketi gönderdiğinde, aşağıdakiler meydana gelebilir:
1- Eski SYN paketleri, en son SYN paketlerinden önce sunucuya gelir.
2- Sunucu, eski SYN paketini aldıktan sonra istemciye bir SYN + ACK paketini yanıtlayacaktır.
3- İstemci SYN + ACK paketini aldığında, bağlantının kendi bağlamına göre geçmiş bir bağlantı (sıra numarası süresi dolmuş veya zaman aşımı) olduğunu belirler ve ardından ilk paketini bağlantıyı iptal etmek için sunucuya gönderir.
İki handli bir bağlantı ile, mevcut bağlantının geçmiş bir bağlantı olup olmadığını belirlemenin bir yolu yoktur. Üç yollu el sıkışma, müşterinin mevcut bağlantının üçüncü paketi göndermeye hazır olduğunda bağlama dayalı geçmiş bir bağlantı olup olmadığını belirlemesini sağlar:
1- Tarihsel bir bağlantı ise (sıra numarası süresi dolmuş veya zaman aşımı), üçüncü el sıkışma tarafından gönderilen paket, geçmiş bağlantıyı iptal etmek için bir ilk pakettir.
2- Tarihsel bir bağlantı değilse, üçüncü kez gönderilen paket bir ACK paketidir ve iki iletişim tarafı bağlantıyı başarıyla belirler.
Bu nedenle, TCP'nin üç yönlü el sıkışmasını kullanmasının ana nedeni, geçmiş bağlantıları önlemek için bağlantıyı başlatmasıdır.
Sebep 2: Her iki tarafın ilk sekans numaralarını senkronize etmek
TCP protokolünün her iki tarafı da güvenilir iletim sağlamak için anahtar bir faktör olan bir dizi numarası tutmalıdır. Sekans numaraları TCP bağlantılarında önemli bir rol oynar. Aşağıdakileri yapın:
Alıcı yinelenen verileri ortadan kaldırabilir ve verilerin doğruluğunu sağlayabilir.
Alıcı, verilerin bütünlüğünü sağlamak için sıra numarasının sırasına göre paket alabilir.
● Sıra numarası, diğer taraf tarafından alınan veri paketini tanımlayarak güvenilir veri iletimini sağlayabilir.
Bu nedenle, bir TCP bağlantısı oluşturulduktan sonra, istemci SYN paketleri ilk sıra numarasıyla gönderir ve sunucunun istemcinin SYN paketinin başarılı bir şekilde kabul edilmesini gösteren bir ACK paketiyle yanıt vermesini gerektirir. Ardından, sunucu ilk sıralı sırayla SYN paketini istemciye gönderir ve ilk sıra numaralarının güvenilir bir şekilde senkronize olmasını sağlamak için istemcinin bir kez ve herkes için yanıt vermesini bekler.
Her iki tarafın ilk sekans 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ıma birleştirilebilir ve bu da üç yönlü bir el sıkışmasıyla sonuçlanabilir. Bununla birlikte, iki el sıkışma yalnızca bir tarafın ilk sekans numarasının diğer taraf tarafından başarıyla alındığını garanti edebilir, ancak her iki tarafın ilk dizi numarasının onaylanabileceğini garanti etmemektedir. Bu nedenle, üç yönlü el sıkışma, TCP bağlantılarının istikrarını ve güvenilirliğini sağlamak için en iyi seçimdir.
Sebep 3: Kaynakları boşa harcamaktan kaçının
Yalnızca bir "iki handshake" varsa, ağda istemci SYN isteği engellendiğinde, istemci sunucu tarafından gönderilen ACK paketini alamaz, böylece SYN yeniden olur. Ancak, üçüncü 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 her SYN isteğini aldıktan sonra yalnızca proaktif olarak bir bağlantı kurabilir. Bu aşağıdakilere yol açar:
Kaynak israfı: Müşterinin SYN isteği engellenirse, birden fazla SYN paketinin tekrar tekrar iletilmesine neden olursa, sunucu isteği aldıktan sonra birden fazla gereksiz geçersiz bağlantı kurar. Bu, sunucu kaynaklarının gereksiz bir israfına yol açar.
Mesaj tutma: Üçüncü bir el sıkışma eksikliği nedeniyle, sunucunun bağlantıyı kurmak için ACK onayını doğru bir şekilde alıp almadığını bilmenin bir yolu yoktur. Sonuç olarak, mesajlar ağda sıkışırsa, istemci SYN isteklerini tekrar tekrar göndermeye devam ederek sunucunun sürekli olarak yeni bağlantılar kurmasına neden olur. Bu, ağ tıkanıklığını ve gecikmeyi artıracak ve genel ağ performansını olumsuz etkileyecektir.
Bu nedenle, ağ bağlantısının istikrarını ve güvenilirliğini sağlamak için TCP, bu sorunların oluşmasını önlemek için bağlantıyı kurmak için üç yönlü el sıkışmasını kullanır.
Özet
.Ağ Paketi KomisyoncusuTCP bağlantı kuruluşu üç yönlü bir el sıkışma ile yapılır. Üç yollu el sıkışma sırasında, istemci önce SYN bayrağıyla bir paket gönderir ve bu da bir bağlantı kurmak istediğini gösterir. İstemciden isteği aldıktan sonra, sunucu istemciye SYN ve ACK bayrakları olan bir paketi yanıtlar, bu da bağlantı isteğinin kabul edildiğini gösterir ve kendi başlangıç sırasını gönderir. Son olarak, istemci bağlantının başarıyla belirlendiğini belirtmek için sunucuya bir ACK bayrağı ile cevap verir. Böylece, iki taraf yerleşik durumdadır ve birbirlerine veri göndermeye başlayabilir.
Genel olarak, TCP bağlantı kuruluşu için üç yönlü el sıkışma süreci, bağlantı istikrarı ve güvenilirliğini sağlamak, tarihsel bağlantılar üzerinde karışıklık ve kaynakların israfını önlemek ve her iki tarafın da veri alabilmesini ve gönderebilmesini sağlamak için tasarlanmıştır.
Gönderme Zamanı: Ocak-08-2025