Ana içeriğe geç
Kitap 11 · AğlarSayfa 29 / 37

TCP Handshake

TCP El Sıkışması

Türkçe karşılığı
üçlü el sıkışma
Okunuşu
ti si pi hendşeyk

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/tcp-handshake

Kısaca

TCP el sıkışması, istemci ile sunucunun veri göndermeden önce bağlantı açıp başlangıç sıra numaralarında anlaştığı SYN, SYN-ACK, ACK alışverişidir.

TCP üçlü el sıkışması (three-way handshake) nedir?

TCP güvenilir ve sıralı teslimat vaat eder; bu yüzden iki tarafın önce konuşmaya razı olması ve kayıtlarını hazırlaması gerekir. İstemci, rastgele bir başlangıç sıra numarasıyla bir SYN segmenti gönderir. Sunucu, istemcinin numarasını onaylayıp kendi numarasını gönderen bir SYN-ACK ile yanıt verir. İstemci de ACK ile cevap verir ve bağlantı açılır.

Sıra numaraları TCP'nin düzeni nasıl koruduğudur: gönderilen her bayt numaralandırılır, alıcı aldıklarını onaylar, eksik olan her şey yeniden gönderilir. Rastgele değerlerden başlamak da bir saldırganın başkasının bağlantısına sahte paketler sokmasını zorlaştırır.

El sıkışması, verinin ilk baytından önce tam bir gidiş-dönüş (round trip) süresine mal olur; gecikmenin web performansı için bu kadar önemli olmasının nedeni budur. Yeni bir HTTPS bağlantısı ayrıca bir TLS el sıkışmasına ihtiyaç duyar; TLS 1.3 ile bir gidiş-dönüş daha. Bağlantıyı yeniden kullanmak, keep-alive, HTTP/2 ve taşıma ile şifreleme kurulumunu birleştiren QUIC, bu maliyetlerin hepsini azaltır.

Sık yapılan bir yanlış, bağlantıyı kapatmanın el sıkışmasının tersi olduğunu düşünmektir. Kapatma normalde dört mesaj sürer, her yönde bir FIN ve bir ACK; çünkü her taraf göndermeyi bağımsız olarak bitirir. Ayrıca yarım kalan el sıkışmaları kötüye kullanılabilir: SYN flood, tamamlamadan çok sayıda SYN gönderir; sunucular buna SYN cookie'leriyle karşı koyar.

Önemli noktalar

  • El sıkışması SYN, SYN-ACK, ACK'ten oluşur.
  • İki taraf da rastgele başlangıç sıra numaraları gönderir.
  • Herhangi bir veri akmadan önce bir gidiş-dönüş süresine mal olur.
  • HTTPS üstüne bir TLS el sıkışması ekler; QUIC ikisini birleştirir.
  • Kapatma her yönde FIN ve ACK kullanır; SYN flood el sıkışmasını kötüye kullanır.

Örnek

tcpdump ile bir el sıkışmasını izlemekbash
# Capture the start of a connection to example.com on port 443
sudo tcpdump -n 'tcp port 443 and tcp[tcpflags] & (tcp-syn|tcp-ack) != 0' &
curl -s https://example.com -o /dev/null

# Typical output (simplified):
# client > server: Flags [S],  seq 1000          ← SYN
# server > client: Flags [S.], seq 5000, ack 1001 ← SYN-ACK
# client > server: Flags [.],  ack 5001          ← ACK: connection open

Sık sorulan sorular

TCP neden üçlü el sıkışmasına ihtiyaç duyar?

Her tarafın kendi başlangıç sıra numarasını gönderip onaylatması gerekir. İki yönün de onaylanması için en az üç mesaj gerekir: SYN, sunucunun numarasını ve onayı taşıyan SYN-ACK ve son ACK.

UDP'nin el sıkışması var mı?

Hayır. UDP datagramları bağlantı kurmadan gönderir; bu yüzden daha hızlı başlar ama teslimat ya da sıra garantisi vermez. QUIC gibi UDP üzerine kurulmuş protokoller kendi el sıkışmalarını ekler.

SYN flood nedir?

El sıkışmasını tamamlamadan çok sayıda SYN paketi göndererek sunucunun yarım açık bağlantılar tablosunu dolduran bir hizmet engelleme saldırısıdır. SYN cookie'leri, sunucunun el sıkışması tamamlanana kadar durum tutmadan yanıt vermesini sağlar.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar