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.
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
# 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 openSı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
- TCPAğlar, s. 28TCP, bir bağlantı kurup kaybolan verileri yeniden göndererek iki program arasında veriyi güvenilir ve sıralı biçimde ileten temel bir internet protokolüdür.
- UDPAğlar, s. 33UDP, bağlantı kurmadan datagram adı verilen küçük ve bağımsız mesajlar gönderen, garantili teslimat yerine hızı seçen hafif bir internet protokolüdür.
- TLSGüvenlik, s. 44TLS, ağda gönderilen veriyi şifreleyen ve sunucunun kimliğini doğrulayan, HTTPS, e-posta ve birçok başka bağlantıyı güvenceye alan kriptografik protokoldür.
- GecikmeAğlar, s. 9Gecikme, bir istek ile yanıtın başlaması arasında geçen süredir; genellikle milisaniyeyle ölçülür ve bir uygulamanın ne kadar hızlı hissettirdiğini belirler.
- PaketAğlar, s. 20Paket, bir ağ üzerinden gönderilen küçük ve biçimlendirilmiş bir veri birimidir; adresleme bilgisi taşıyan bir başlık ile asıl veriyi taşıyan bir yükten oluşur.
- DDoSGüvenlik, s. 7DDoS saldırısı, bir web sitesini veya çevrimiçi servisi, aynı anda ele geçirilmiş birçok cihazdan gelen trafikle boğarak kullanılamaz hâle getirme girişimidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin