Mekanisme TCP 3-Way Handshake pada Python
TCP 3-way handshake adalah proses fundamental dalam protokol TCP untuk membangun koneksi yang andal antara klien dan server. Dalam Python, modul socket menangani proses ini secara otomatis saat Anda memanggil metode connect() pada sisi klien dan accept() pada sisi server. Pengembang tidak perlu melakukan manipulasi paket secara manual kecuali menggunakan pustaka tingkat rendah seperti Scapy.
Proses ini melibatkan pertukaran tiga paket: SYN (Synchronize), SYN-ACK (Synchronize-Acknowledgment), dan ACK (Acknowledgment). Berikut adalah tabel alur kerja koneksi TCP:
| Langkah | Pengirim | Paket | Tujuan |
|---|---|---|---|
| 1 | Klien | SYN | Memulai koneksi dengan ISN (Initial Sequence Number) |
| 2 | Server | SYN-ACK | Konfirmasi SYN dan mengirim ISN server |
| 3 | Klien | ACK | Konfirmasi penerimaan SYN-ACK |
Implementasi Kode Python
Berikut adalah contoh implementasi standar menggunakan pustaka socket untuk membangun koneksi TCP.
Server (Listener)
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(1)
print("Menunggu koneksi...")
conn, addr = server.accept()
print(f"Koneksi diterima dari {addr}")
conn.close()Client (Initiator)
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 8080))
print("Handshake selesai, koneksi aktif.")
client.close()Analisis Teknis
Saat client.connect() dijalankan, sistem operasi (OS) melakukan 3-way handshake di balik layar. Jika Anda ingin mengamati proses ini secara real-time, gunakan alat bantu seperti Wireshark atau tcpdump pada antarmuka loopback (lo). Anda akan melihat urutan paket berikut:
- SYN: Klien mengirim paket dengan flag SYN aktif.
- SYN-ACK: Server merespons dengan flag SYN dan ACK aktif.
- ACK: Klien mengirim paket dengan flag ACK aktif.
Jika koneksi gagal, biasanya disebabkan oleh Connection Refused (port tidak terbuka) atau Connection Timeout (firewall memblokir paket SYN). Pastikan port yang digunakan tidak sedang digunakan oleh proses lain dengan perintah netstat -ano | findstr :8080 di Windows atau lsof -i :8080 di Linux.