İnternetin ilk yıllarında, İnternet Protokolü (IP), insanların internete bağlanmak için kullandığı tek protokoldü. IP ile ilgili sorun, bir mesaj gönderebilmeniz ve alıcının alıp almayacağından emin olamamanızdı. Bu nedenle TCP/IP kurulmuştur.

TCP/IP, gönderdiğiniz tüm verilerin alıcısına ulaşmasını sağlar. Bunu, veri göndermeden önce istemciye ve sunucuya güvenli bir bağlantı sağlayarak yapar. Bu güvenli bağlantı, TCP/IP anlaşması olarak da bilinen üç yönlü anlaşma olarak bilinen bir işlemle kurulur.

Üç Yönlü El Sıkışma Nedir?

İmaj Kredisi: Et kıyma makinesi/Wikimedia

Üç yönlü bir anlaşma (TCP/IP anlaşması), bir istemci ile bir TCP bağlantısı kurmaya çalışan bir sunucu arasındaki ilk üç etkileşimdir. Bu ilk etkileşimler, güvenli bir bağlantı kurmak için gereklidir. Bu aşamada, hem istemci hem de sunucu, gelen ve giden veri paketlerini kontrol etmek ve doğrulamak için kullanacakları parametreler üzerinde anlaşacaktır. Bu parametreler TCP segmentleri şeklinde olacaktır.

TCP Segmenti Nedir?

instagram viewer

Bir TCP/IP bağlantısında, gönderilen tüm veriler kesilmeli ve TCP segmentleri olarak bilinen şey üzerinde yapılandırılmalıdır. Bu segmentler, IP adresleri, bağlantı noktaları, bayrak bitleri, sıra numaraları, alındı ​​numaraları ve isteğe bağlı veri veya yük gibi bilgileri içerir.

İlk üç etkileşim (üç yönlü el sıkışma) yalnızca yük veya ekli veri içermeyen TCP segment başlıklarını içerecektir. İşte bir TCP segmentinin bir örneği

Resim Kredisi: Ere/Wikimedia

Yukarıdaki çizimin yalnızca TCP için olduğunu unutmayın. Tam bir TCP/IP segmenti her ikisini de gerektirir IP adresleri Yukarıdaki TCP segmentinin üstündeki gönderici ve alıcıdan.

Bir kişiye bir paket gönderdiğinizde, teslimat hizmeti tarafından bir bilgi formu doldurmanız ve ardından nakliyeden önce pakete eklemeniz gerekir. Benzer şekilde, TCP, göndericinin, segmenti (parsel) alıcıya göndermeye başlamadan önce verilere (paket) bir segment başlığı (bilgi formu) eklemesini gerektirir.

Bir istemci bir sunucuyla iletişim kurduğunda, her iki tarafın da etkileşimlerini bir TCP segmenti biçiminde biçimlendirmesi gerekir. Bir TCP segmenti, göndermeye çalıştığınız verilere eklenmiş bir TCP segment başlığından oluşur. Gönderenin, bölüm başkanının gerektirdiği bilgileri doldurması gerekecektir.

Üçlü el sıkışma için gönderenin aşağıdakileri doldurması gerekir:

  • Kaynak portu: Gönderenin bağlantı noktasını tanımlar
  • Hedef Bağlantı Noktası: Alıcının bağlantı noktasını tanımlar
  • Sıra numarası: Segment sırasını gösterir
  • Onay Numarası: Verilen sıra numarasına bir segment eklenerek bir segmentin onaylandığını belirtir

Segment başlığı alanlarını doldurmanın yanı sıra, gönderici ayrıca bir bayrak biti seçmelidir. Toplamda altı bayrak biti vardır, ancak üç yönlü bir el sıkışma için yalnızca aşağıdaki ikisine ihtiyacınız olacaktır:

  1. SEN: Sıra numarası verir. Bu sıra numarası, etkileşimin geri kalanı için gelen tüm segmentlerin sırasını saymak için kullanılacaktır.
  2. ACK: SYN numarasının alıcısının, verilen SYN numarasına bir (1) ekleyerek bağlantı talebini kabul ettiğini gösterir.

Artık bir TCP segmentinin ne olduğunu bildiğinize göre, üç yönlü bir el sıkışmada nasıl kullanıldığını görelim.

Üç Yönlü El Sıkışma Nasıl Çalışır?

Hem istemci hem de ana bilgisayar bilgi alışverişinde bulunduğunda ve birbirlerinin sıra numaralarını kabul ettiğinde, üç yönlü bir el sıkışma kurulur. Adından da anlaşılacağı gibi, üç adımda üç yönlü bir el sıkışma yapılır.

İlk olarak, istemci bir bağlantı istediğini belirten saf bir SYN segmenti gönderir. İkinci olarak, sunucu bir SYN-ACK segmenti ile yanıt verir; bu, talebi kabul ettiği ve istemcinin onaylaması için kendi SYN numarasını gönderdiği anlamına gelir. Üçüncüsü, istemci, sunucunun SYN numarasının kabul edildiğini ve daha fazla bağlantı için kullanılacağını bildirmek için sunucuya bir ACK segmenti gönderir.

Üç yönlü bir el sıkışma şuna benzer:

Varlık Kredisi: Fleshgrinder/Wikimedia

Bunu parçalayalım ve segmentlere bakalım, böylece istemci ve sunucu sıra numaralarını değiş tokuş edip kabul ettiğinde tam olarak ne olduğunu bilirsiniz.

Adım 1: İstemci bir SYN Segmenti Gönderir

Varlık Kredisi: Fleshgrinder/Wikimedia

İstemci, sunucuya bir SYN segmenti göndererek bir istek bağlantısı gönderir. İstemci, sunucuyu bulmak ve TCP segmentini göndermek için istemcinin IP adresini kullanır.

Segmentin karmaşıklığını azaltmak için, birkaç segment alanını görmezden gelelim ve üç yönlü bir el sıkışma bağlantısı için çıplak gerekliliklere odaklanalım. Bu, kaynak bağlantı noktası, hedef bağlantı noktası, sıra numarası, alındı ​​numarası ve ne tür bayrak bitinin kullanıldığını içerir.

Ve bununla birlikte, bir SYN/istek segmenti şöyle görünmelidir:

Yazarın yaptığı resim 

İstemci bağlantı noktası, 49152 ile 65536 arasında rastgele bir sayıdır. Bu bağlantı noktası aralığı, genel cihazların internete bağlanmak için dinamik olarak kullanabileceği, üzerinde anlaşmaya varılan aralıktır. 1024 - 49151 port aralığı özeldir. Belirtilen aralıktaki bir bağlantı noktasını kullanmak için bir kuruluş tarafından kaydedilmeleri gerekir. 1024'ün altındaki bağlantı noktası numaraları, FTP (port 20), SMTP (port 25), DNS (port 53) ve HTTP (port 80) gibi çeşitli işlevler ve internet protokolleri için ayrılmış bağlantı noktalarıdır.

Gerçek hayatta, sıra numarası rastgele bir sayıdır. Örnek olarak, görselleştirmeyi kolaylaştırmak için 00000000000 kullandık.

Adımlarda ilerlerken sıra numarasını not alın. Şu anda, 00000000. Onaylanacak bir şey olmadığı için şu anda bir onay numarası yok.

Adım 2: Sunucu, SYN-ACK Segmenti ile Yanıtlıyor

Varlık Kredisi: Fleshgrinder/Wikimedia

Sunucu bir SYN segmenti aldığında, alındı ​​numarasını içeren bir ACK segmenti göndererek yanıt verecektir. Onay numarası, müşterinin sıra numarası artı bir (1) olacaktır.

Yazarın yaptığı resim

Kaynak bağlantı noktasına bakın. Segmentin 20 numaralı bağlantı noktasından olduğunu ve sunucudan yanıt olarak geldiğini gösterir.

Şimdi, onay numarasına bakın. Müşterinin sıra numarası (00000000000) artı bir (1) olan 0000000001'dir. Bir segment bu şekilde izlenir. İstemcinin, alındı ​​numarasının 0000000002 olduğu bir ACK segment yanıtı aldığını varsayalım. Bu, müşteriye 0000000001 segmentinin eksik olduğunu ve müşterinin gelene kadar beklemesi gerektiğini gösterir. paket kaybı yaşamamanız için.

Gördüğünüz gibi, iki bayrak biti etkinleştirildi – SYN ve ACK.

İstemcinin sıra numarasını onaylamanın yanı sıra, sunucu, istemcinin sunucunun sıra numarasını artı bir (1) kabul etmesi için kendi sıra numarasını da gönderir. Örneğimizde sunucunun sıra numarası olarak 1111111111 kullandık. Yine, gerçek dünyada bu sayı rastgeledir.

İstemcinin ve sunucunun sıra numaralarının eşleşmesi gerekmediğini unutmayın. Her iki taraf da birbirinin benzersiz sıra numarasını kabul ettiği sürece bağlantı güvenilir olacaktır.

3. Adım: Müşteri Bir ACK Segmenti ile Yanıt Verir

Varlık Kredisi: Fleshgrinder/Wikimedia

Son olarak, istemci sunucunun sıra numarasını kabul eder.

Yazarın yaptığı resim

Son segment, istemciden gelen bir ACK segmentidir.

Yapabildiğiniz gibi, istemci sunucunun sıra numarasını (1111111111) artı bir (1) olan 11111111112 ile yanıt vererek sunucunun sıra numarasını kabul edecektir.

İstemci ve sunucu, dizinin başlangıcı zaten onaylandığından artık bir sıra numarası göndermeyecek. Bununla birlikte, her iki taraf da, etkileşim boyunca sıra numaraları artı bir (1) ve sayı baytlarına devam eden alındı ​​segmentleri bekleyecektir. Bu durumda, istemci bir sonraki sunucu yanıtının 0000000002'lik bir ACK'ye sahip olmasını bekler (eklenmiş veri yoksa).

Bundan sonra, üçlü el sıkışma kurulur!

Ağ Bağlantılarının Nasıl Çalıştığını Anlama

Artık üç yönlü bir el sıkışmanın nasıl çalıştığını öğrendiğinize göre, el sıkışmadan sonra TCP'nin nasıl çalıştığını anlamak için daha kolay bir zamanınız olacak. El sıkışma kurulduğunda istemci ve sunucu veri göndermeye başlayacaktır. Bu sefer tam segment formatı ve ayrıca isteğe bağlı veri veya yük kullanılacaktır.

Veriler genellikle daha kolay aktarım için bölümlere ayrılır/daha küçük parçalara bölünür. Her veri segmenti, bir sıra numarası ve alındı ​​numarası içeren kendi segment başlığına sahiptir. Sıra numarasının nedeni, sonunda yeniden birleştirilecekleri parçaların sırasını bilmektir. Onay numaraları, gönderici ile segmentlerinin alındığını ve gelen segmentlerin dizisiyle eşleştiğini doğrulamak için oradadır.

Bir sıra numarasının sayımını almak ve bunları bir onayla doğrulamak, TCP'nin herhangi bir kayıp veri paketi olmadan büyük miktarda veriyi nasıl güvenilir bir şekilde aktarabileceğidir.

Ve bununla birlikte, TCP'nin nasıl çalıştığına dair oldukça iyi bir fikre sahip olmalısınız.