TCP Three-Way Handshake, TCP bağlantısı kurulurken gerçekleşen üç adımlı el sıkışma işlemidir.
İstemci → Sunucu: SYN (Sequence Number = x)
1. İstemci sunucuya SYN paketi gönderir
2. Sequence Number (ISN) belirlenir
3. Bağlantı isteği başlatılır
Sunucu → İstemci: SYN-ACK (Sequence Number = y, Acknowledgment = x+1)
1. Sunucu SYN paketini alır
2. Sunucu kendi ISN'sini oluşturur
3. Sunucu ACK gönderir
4. Bağlantı isteği kabul edilir
İstemci → Sunucu: ACK (Sequence Number = x+1, Acknowledgment = y+1)
1. İstemci SYN-ACK paketini alır
2. İstemci ACK gönderir
3. Bağlantı kurulur
4. Veri iletimi başlar
1. İstemci → Sunucu: FIN
2. Sunucu → İstemci: ACK
3. Sunucu → İstemci: FIN
4. İstemci → Sunucu: ACK
# SYN
tcp.flags.syn == 1 && tcp.flags.ack == 0
# SYN-ACK
tcp.flags.syn == 1 && tcp.flags.ack == 1
# ACK
tcp.flags.ack == 1 && tcp.flags.syn == 0
# FIN
tcp.flags.fin == 1
# RST
tcp.flags.reset == 1
# Netstat ile durumlar
netstat -an | find "ESTABLISHED"
netstat -an | find "SYN_SENT"
netstat -an | find "LISTENING"
# Wireshark ile takip
# TCP Stream Graph
Statistics → Flow Graph → TCP Flow
# TCP Sequence Numbers
Statistics → TCP Stream Graph → Sequence Numbers
# Wireshark Expert Info
Analyze → Expert Info
Adım 1: SYN (Synchronize)
textİstemci → Sunucu: SYN (Sequence Number = x)
1. İstemci sunucuya SYN paketi gönderir
2. Sequence Number (ISN) belirlenir
3. Bağlantı isteği başlatılır
Adım 2: SYN-ACK (Synchronize-Acknowledge)
textSunucu → İstemci: SYN-ACK (Sequence Number = y, Acknowledgment = x+1)
1. Sunucu SYN paketini alır
2. Sunucu kendi ISN'sini oluşturur
3. Sunucu ACK gönderir
4. Bağlantı isteği kabul edilir
Adım 3: ACK (Acknowledge)
textİstemci → Sunucu: ACK (Sequence Number = x+1, Acknowledgment = y+1)
1. İstemci SYN-ACK paketini alır
2. İstemci ACK gönderir
3. Bağlantı kurulur
4. Veri iletimi başlar
TCP Flags
| Flag | Açıklama |
|---|---|
| SYN | Synchronize - Bağlantı kurulumu |
| ACK | Acknowledge - Onay |
| FIN | Finish - Bağlantı sonlandırma |
| RST | Reset - Bağlantı sıfırlama |
| PSH | Push - Veriyi hemen gönder |
| URG | Urgent - Acil veri |
TCP Bağlantı Sonlandırma (4-Way Handshake)
text1. İstemci → Sunucu: FIN
2. Sunucu → İstemci: ACK
3. Sunucu → İstemci: FIN
4. İstemci → Sunucu: ACK
Wireshark ile TCP Handshake İzleme
bash# SYN
tcp.flags.syn == 1 && tcp.flags.ack == 0
# SYN-ACK
tcp.flags.syn == 1 && tcp.flags.ack == 1
# ACK
tcp.flags.ack == 1 && tcp.flags.syn == 0
# FIN
tcp.flags.fin == 1
# RST
tcp.flags.reset == 1
TCP Durumları
| Durum | Açıklama |
|---|---|
| LISTEN | Port dinliyor |
| SYN_SENT | SYN gönderildi |
| SYN_RECV | SYN alındı |
| ESTABLISHED | Bağlantı kuruldu |
| FIN_WAIT_1 | FIN gönderildi |
| FIN_WAIT_2 | FIN gönderildi, ACK bekle |
| TIME_WAIT | Bağlantı sonlandırıldı |
| CLOSE_WAIT | FIN alındı |
| LAST_ACK | FIN gönderildi |
| CLOSED | Bağlantı kapalı |
TCP Handshake Test Komutları
bash# Netstat ile durumlar
netstat -an | find "ESTABLISHED"
netstat -an | find "SYN_SENT"
netstat -an | find "LISTENING"
# Wireshark ile takip
# TCP Stream Graph
Statistics → Flow Graph → TCP Flow
# TCP Sequence Numbers
Statistics → TCP Stream Graph → Sequence Numbers
# Wireshark Expert Info
Analyze → Expert Info
🔒 Bu içeriği görmek için giriş yapın