İçindekiler
TCP protokolü, İnternet üzerinde veri iletimi için kullanılan bir iletişim protokolüdür. TCP, veri paketlerinin güvenli ve düzenli bir şekilde iletilmesini sağlar. Bu protokol, veri iletimi sırasında paket kaybını ve hatalı iletimi önlemek için güvenilir bir bağlantı sağlar. TCP, İnternet üzerindeki birçok uygulamanın temel iletişim protokolü olarak kullanılır.
TCP, ağdaki cihazlar arasında iletişim için kullanılır. Transmission Control Protocol olarak adlandırılır. İstemci ve sunucu arasında bir bağlantı oluşturmak için kullanılır. Veriyi küçük paketlere böler ve bu paketler ağ üzerinden transfer edilir.
TCP’nin bağlantı kontrolü üç el sıkışma ve dört dalga içerir.
Segment, tüm TCP/IP protokolü için bir navigasyon yönlendirme işlevidir. Paket segmenti, TCP/IP protokolü ağ iletimindeki IP veri paketlerine atıfta bulunur, bu paketler rota navigasyonu kullanır, her ağ rota segmentini sorgular, IP adresini değiştirir, protokol alışverişi yapar, vb.
- SYN: Sıra numaralarını senkronize etmek
- ACK: Onaylama alanı önemlidir
- Seq: Sıra numarası
- Onay: Onay numarası
Üç yönlü el sıkışma süreci
Handshake
TCP’nin temel özelliklerinden biri bağlantı odaklıdır. Bu nedenle, veri göndermeden önce her iki tarafın da bağlantıyı başarılı bir şekilde kurabilmeleri için tüm veri iletiminin hatasız olduğundan emin olmak için bir el sıkışma sürecinden geçmeleri gerekir.
İlk el sıkışma
Müşteri, SYN bayrağının bir bağlantı isteği segmenti olduğunu gösterdiği sunucuya segment 1’i gönderir. Ayrıca, Sıra Numarası alanı (şekilde kısaltılmış olarak seq) başlangıç sıra numarası x (Başlangıç Sıra Numarası, ISN) olarak ayarlanmıştır ve TCP bağlantısındaki her iki taraf da başlangıç sıra numarasını rastgele seçebilir.
Segment 1 gönderildikten sonra, istemci SYN-SENT durumuna girer ve sunucudan onay bekler.
İkinci el sıkışma
İstemci tarafından bağlantı isteği alındıktan sonra sunucu, yanıt olarak segment 2’yi istemciye gönderir.
ACK bayrağı 1 olarak ayarlanmıştır, bu istemciye yanıt verdiğini gösterir ve onay numarası alanı (Acknowledgment Number, kısaltması küçük harfle ack) etkili olacaktır.
Bu alanın değeri x + 1’dir, bu da istemciden alınan segmentin sıra numarası artı bir olan ve sunucunun bir sonraki sefer istemciden almayı beklediği veri sıra numarasını temsil eder.
Ayrıca, 2. segmentin SYN bayrağı da 1 olarak ayarlanmıştır, bu da bu segmentin bir bağlantı başlatmak için kullanılan bir segment olduğu anlamına gelir ve sıra numarası seq sunucunun başlangıç sıra numarası y olarak ayarlanmıştır.
Segment 2 gönderildikten sonra sunucu SYN-RECEIVED durumuna girer.
Üçüncü el sıkışma
Segment 2 alındıktan sonra istemci segment 3’ü sunucuya gönderir ve ACK bayrağı 1’dir, bu da sunucuya yanıt verdiği anlamına gelir, dizi numarası alanı ack y + 1’i onaylar ve dizi numarası alanı seq x + 1’dir. Bu segment gönderildikten sonra her iki taraf da KURULDU durumuna girer, bu da bağlantının kurulduğunu gösterir.
Müşteri ve sunucunun görüntü durumuna göre bağlantı durumunu değerlendirme.
- İstemci ve sunucu kapalı durumda, bağlantı ilişkisi olmadığını gösterir.
- Müşteri bir istek gönderir, istemci gönderme (SYN-gönderildi) durumunu açar ve sunucu dinleme (Listen) durumunu açar;
- Sunucu istemcinin isteğini aldığında, sunucu yanıt (SYN-recvd) durumuna geçer;
- Müşteri sunucudan yanıt aldığında, müşteri kararlı bağlantı (Kuruldu) durumuna geçer ve aynı anda ikinci veri paketini gönderir.
- Sunucu, istemciden ikinci veriyi aldığında, sunucu stabil bir bağlantı (Kuruldu) durumuna geçer.
- İki taraf kararlı bir bağlantı kurduktan sonra, düzenli veri iletişimine başlama zamanı geldi.
Nasıl üç el sıkışması çalışır?
Üç yönlü el sıkışma, her iki tarafın da kendi gönderme ve alma yeteneklerini ve diğer tarafın işlemlerini doğrulamasına izin verir.
İlk el sıkışma: istemci istek segmentini gönderir ve hiçbir şey onaylanamaz, ancak sunucu alım yeteneğinin ve diğer tarafın iletim yeteneğinin standart olduğunu sağlayabilir.
İkinci el sıkıştırma: İstemci, gönderme ve alma yeteneklerinin standart olduğunu ve diğer tarafın gönderme ve alma yeteneklerinin de standart olduğunu doğrulayabilir.
Üçüncü el sıkışma: sunucu, gönderme ve alma yeteneklerinin standart olduğunu ve diğer tarafın gönderme ve alma yeteneklerinin de standart olduğunu doğrulayabilir.
Üç yönlü el sıkışma, her iki tarafın da kendi gönderme ve alma yeteneklerinin ve diğer tarafın standartlara uygun olup olmadığını doğrulamalarına izin vererek iletişim kurmalarını sağlayabilir.
Dört dalga nasıl çalışır?
Bir bağlantı kurmak için üç el sıkışma gereklidir ve bir bağlantıyı sonlandırmak için dört dalga gereklidir.
Dört kez sallamanın detaylı süreci
1. İstemci, bağlantıyı kapatma segmenti gönderir, bağlantıyı kapatmayı ve veri göndermeyi durdurmayı talep eder. Ardından, dizi numarası alanı seq = x (daha önce gönderilen tüm verilerin son baytının dizin numarasına eşit) ve istemci FIN-WAIT-1 durumuna girer, sunucudan bir onay mesajı bekler.
2. Sunucu FIN segmentini aldığında, onay mesajı gönderir, ACK = 1, ack = x + 1 ve sıra numarasını seq = y olarak ayarlar, ardından sunucu CLOSE-WAIT durumuna girer.
3. İstemci, sunucudan ACK segmentini aldıktan hemen sonra FIN-WAIT-2 durumuna girer ve FIN segmenti alana kadar sunucudan hala veri seq=z alabilir.
4. Sunucu tüm verileri gönderdikten sonra, istemciye bir FIN segmenti gönderecek ve ardından sunucu LAST-ACK durumuna girecek, istemciden bir onay segmenti bekleyecek.
5. İstemci sunucudan FIN segmentini aldıktan sonra sunucuya bir ACK ileti gönderir ve ardından TIME-WAIT durumuna girer.
6. Sunucu, istemciden ACK iletişimini aldıktan hemen sonra KAPALI durumuna geçecek ve bu sırada bağlantıyı sonlandıracaktır. Genellikle, sunucu, bekleme süresi olmadığı için istemciden daha erken KAPALI durumuna geçer.
Kısacası, 3 yönlü el sıkışma veya 4 yönlü dalga olsun, TCP protokolü bağlantıyı veya bağlantıyı kesmeyi kurmak için her iki tarafın da bilgi onayını alması gerekmektedir.
TCP neden bağlantıyı üç yerine dört kez kapatır?
Müşteriden FIN paket segmentini aldıktan sonra sunucunun hala iletecek verileri olabilir. Bu nedenle, sunucu bağlantıyı hemen kapatamaz. Bunun yerine, ACK paket segmenti ile yanıt verecek ve veri iletmeye devam edebilir.
İstemci, sunucu istemciye tüm verilerin gönderildiğini belirten bir FIN paket segmenti gönderene kadar yanıt vermez. Sunucu bağlantıyı kapatma isteği gönderir. Bu nedenle toplamda dört dalga gereklidir.
TCP bağlantısı sırasında hangi güvenlik sorunları ortaya çıkar?
Üç yönlü el sıkışma sürecinde, sunucu SYN-ACK gönderdikten sonra istemciden ACK almadan önceki TCP bağlantısına yarı açık bağlantı denir. Bu durumda sunucu SYN_RCVD durumundadır. Bir ACK alındığında sunucu ESTABLISHED durumuna geçebilir.
SYN saldırısı, saldıran istemcinin kısa bir süre içinde çok sayıda var olmayan IP adresi oluşturarak sürekli olarak SYN paketleri göndermesi ve sunucunun onay paketi ile yanıt vermesi ve istemcinin onayını beklemesi anlamına gelir.
Kaynak adresi olmadığı için sunucunun zaman aşımına kadar sürekli yeniden iletim yapması gerekir. Sonuç olarak, bu sahte SYN paketleri bağlantısı olmayan kuyruğu uzun süre işgal edecek ve düzenli SYN istekleri atılacaktır.
Ciddi durumlarda ağ sıkışıklığına veya hatta sistem çökmelerine neden olabilir. Bir SYN saldırısı tipik bir DoS/DDoS saldırısıdır. DoS/DDoS saldırıları hakkında daha fazla bilgi edinmek için tıklayın.