← Semua artikel

Apa Itu TCP Handshake? Memahami SYN, SYN-ACK dan ACK

Diperbarui 20 Oct 2026

Sebelum browser mengirim request HTTP melalui koneksi TCP, ada satu proses kecil yang biasanya terjadi lebih dulu: TCP handshake. Proses ini memakai tiga pertukaran utama yang sering ditulis sebagai SYN → SYN-ACK → ACK.

Kelihatannya sederhana, tetapi handshake punya fungsi penting. Client dan server perlu memastikan bahwa keduanya siap berkomunikasi serta menyinkronkan informasi awal yang dibutuhkan TCP sebelum data aplikasi mulai dikirim.

Karena itu ketika sebuah website terasa timeout, proxy tidak bisa connect, firewall memblokir koneksi, atau port server tidak aktif, sering kali masalah sebenarnya terjadi bahkan sebelum HTTP request pertama dikirim.

Kalau belum membaca dasar perbedaan TCP dan UDP, kamu bisa mulai dari artikel TCP vs UDP terlebih dahulu.

Apa Itu TCP Handshake?

TCP handshake adalah proses pembentukan koneksi antara dua TCP endpoint sebelum pertukaran data berlangsung secara normal.

Proses yang paling dikenal adalah three-way handshake:

Client
SYN
→
Server
Client
←
Server
SYN-ACK
Client
ACK
→
Server

Setelah tahap tersebut selesai, koneksi masuk ke state ESTABLISHED dan kedua sisi dapat bertukar data.

RFC 9293 menjelaskan bahwa TCP menggunakan three-way handshake untuk menyinkronkan initial sequence number dari kedua peer sebelum koneksi dianggap terbentuk.

Kenapa TCP Membutuhkan Handshake?

TCP merupakan protocol connection-oriented. Jadi sebelum data dikirim seperti stream biasa, kedua peer perlu membangun state koneksi.

Handshake membantu beberapa hal penting:

  • memastikan peer tujuan dapat dijangkau,
  • memastikan server memang siap menerima koneksi,
  • menyinkronkan initial sequence number,
  • membentuk state TCP di kedua sisi,
  • menegosiasikan beberapa TCP option.

Tanpa proses tersebut, client dan server tidak mempunyai konteks yang cukup untuk mempertahankan reliable byte stream.

Apa Arti SYN?

SYN berasal dari kata Synchronize.

Paket SYN digunakan untuk memulai proses pembentukan koneksi TCP dan membawa initial sequence number milik pengirim.

Misalnya client memilih sequence number awal:

SEQ = 100

Client mengirim:

SYN SEQ=100

Secara konsep client mengatakan:

“Saya ingin membuka koneksi dan sequence number awal saya adalah 100.”

Apa Arti SYN-ACK?

Server menerima SYN lalu merespons menggunakan SYN dan ACK sekaligus.

Misalnya server memilih initial sequence number:

SEQ = 300

Server dapat mengirim:

SYN, ACK SEQ=300 ACK=101

ACK bernilai 101 karena SYN milik client menggunakan satu sequence number dalam ruang sequence TCP.

Secara sederhana server berkata:

“Saya menerima SYN kamu, saya mengharapkan sequence berikutnya 101, dan sequence awal saya adalah 300.”

Apa Arti ACK?

Client menerima SYN-ACK dan mengirim acknowledgement untuk SYN milik server.

ACK SEQ=101 ACK=301

Setelah itu kedua peer sudah saling mengetahui initial sequence number masing-masing dan koneksi dapat masuk ke state ESTABLISHED.

Client
ESTABLISHED
↔
Server
ESTABLISHED

Contoh Three-Way Handshake Lengkap

Kalau dibuat lebih ringkas:

Client Server SYN SEQ=100 ------------------> <------------------ SYN-ACK SEQ=300 ACK=101 ACK SEQ=101 ACK=301 ------------------> TCP CONNECTION ESTABLISHED

Contoh ini mirip dengan ilustrasi dasar pada RFC 9293 mengenai TCP connection synchronization.

Kenapa Sequence Number Penting?

TCP harus bisa mengetahui posisi byte dalam stream supaya data:

  • bisa disusun kembali sesuai urutan,
  • bisa diketahui mana yang sudah diterima,
  • bisa diketahui mana yang perlu dikirim ulang,
  • tidak tertukar dengan data dari koneksi lama.

Sequence number menjadi bagian penting dari mekanisme tersebut.

Apa Itu Initial Sequence Number?

Initial Sequence Number atau ISN adalah sequence number awal yang dipilih oleh masing-masing TCP peer ketika koneksi dibentuk.

Client mempunyai ISN sendiri:

Client ISN = X

server juga mempunyai ISN sendiri:

Server ISN = Y

Three-way handshake membuat kedua peer mengetahui dan mengakui nilai tersebut.

Peer Initial Sequence
Client X
Server Y

Kenapa Tidak Cukup Dua-Way Handshake?

Karena kedua arah komunikasi perlu saling menyinkronkan sequence number.

Client perlu tahu bahwa server menerima sequence awal miliknya, sementara server juga perlu memastikan client menerima sequence awal server.

RFC 9293 menjelaskan bahwa three-way handshake membantu menghindari kebingungan akibat connection initiation lama atau duplicate SYN.

Dengan tiga langkah, kedua peer mendapatkan konfirmasi dua arah yang cukup sebelum koneksi dianggap sinkron.

Apa Itu TCP State?

TCP mempunyai sejumlah state untuk menggambarkan kondisi koneksi.

Saat handshake dasar berlangsung, beberapa state penting antara lain:

State Arti Sederhana
LISTEN Server menunggu koneksi baru.
SYN-SENT Client sudah mengirim SYN.
SYN-RECEIVED Server menerima SYN dan menunggu acknowledgement.
ESTABLISHED Koneksi sudah terbentuk.

State Client Saat Handshake

Client biasanya bergerak dari:

CLOSED ↓ SYN-SENT ↓ ESTABLISHED

Client mulai dari kondisi tidak punya koneksi, mengirim SYN, lalu setelah menerima SYN-ACK dan mengirim ACK masuk ke state ESTABLISHED.

State Server Saat Handshake

Server biasanya:

LISTEN ↓ SYN-RECEIVED ↓ ESTABLISHED

Server menunggu koneksi, menerima SYN, membalas SYN-ACK, lalu menunggu ACK terakhir.

Apakah Data Aplikasi Baru Bisa Dikirim Setelah Handshake?

Dalam penggunaan TCP yang umum, data aplikasi mulai mengalir setelah koneksi terbentuk.

Namun spesifikasi TCP modern mencatat bahwa secara protocol data dapat muncul bersama SYN dalam mekanisme tertentu seperti TCP Fast Open.

Untuk memahami alur biasa web, anggap saja:

DNS
→
TCP Handshake
→
TLS
→
HTTP Request

Pada koneksi HTTPS tradisional melalui TCP, handshake TCP terjadi sebelum TLS negotiation dan request HTTP aplikasi. MDN juga menjelaskan urutan tersebut dalam gambaran cara browser membuat koneksi. :chatgpt-content-reference{index="1"}

Apa Hubungan DNS dengan TCP Handshake?

Sebelum browser bisa mengirim SYN ke sebuah hostname, browser biasanya perlu mengetahui IP tujuan lebih dulu.

Contohnya:

example.com ↓ DNS ↓ 203.0.113.20 ↓ TCP SYN

Jadi pada alur web umum, DNS lookup terjadi terlebih dahulu.

Kalau ingin memahami proses tersebut, baca artikel Cara Kerja DNS.

Apa Hubungan TCP Handshake dengan HTTPS?

HTTPS tradisional yang menggunakan TCP membutuhkan dua tahap koneksi yang berbeda:

  1. TCP handshake.
  2. TLS handshake.

TCP handshake membuat transport connection.

TLS handshake kemudian membentuk koneksi terenkripsi dan melakukan proses keamanan seperti autentikasi server serta negosiasi parameter cryptographic.

TCP
SYN / SYN-ACK / ACK
→
TLS
Secure Session
→
HTTPS
HTTP Data
TCP handshake bukan proses enkripsi. TCP membentuk transport connection. TLS adalah layer yang menyediakan perlindungan cryptographic untuk HTTPS.

TCP Handshake Menambah Latency?

Ya, karena client harus menunggu pertukaran jaringan sebelum koneksi dianggap terbentuk.

Pada kondisi normal:

Client → SYN Server → SYN-ACK Client → ACK

proses ini memerlukan setidaknya perjalanan jaringan antara client dan server.

Semakin besar round-trip time atau RTT, semakin terasa biaya pembentukan koneksi baru.

Apa Itu RTT?

RTT atau Round-Trip Time adalah waktu yang dibutuhkan informasi bergerak dari satu endpoint menuju endpoint lain lalu respons kembali.

Misalnya:

Client → Server → Client

RTT = 100 ms

Maka pembuatan koneksi yang membutuhkan round trip akan memiliki biaya latency yang lebih besar dibanding koneksi ke server dengan RTT 10 ms.

Kenapa Website Jauh Bisa Terasa Lebih Lambat?

Salah satu faktornya adalah latency jaringan.

Bayangkan server berada sangat jauh secara jaringan.

Sebelum HTTP data dikirim, browser bisa melalui:

  • DNS lookup,
  • TCP handshake,
  • TLS handshake,
  • baru HTTP request.

Semakin besar RTT, semakin mahal proses pembentukan koneksi baru.

Connection Reuse Membantu Mengurangi Handshake

Karena membuat koneksi baru mempunyai biaya, aplikasi sering menggunakan koneksi yang sudah ada jika masih valid.

Contohnya HTTP keep-alive memungkinkan beberapa request menggunakan TCP connection yang sama.

TCP Handshake
→
Request 1
→
Request 2
→
Request 3

Jadi tidak setiap resource website harus selalu membuat TCP connection baru.

Ingin Menguji Proxy dan Koneksi TCP?

GudangProxy menyediakan daftar proxy gratis yang dapat difilter berdasarkan negara, protokol, anonimitas, dan status koneksi. Kamu bisa menguji koneksi TCP melalui endpoint proxy dan membandingkan latency maupun keberhasilan koneksi.

Lihat Daftar Proxy Gratis →

Apa Hubungan TCP Handshake dengan Proxy?

Proxy menambahkan satu atau lebih koneksi ke jalur komunikasi.

Tanpa proxy:

Client
→
Website

Dengan proxy:

Client
→
Proxy
→
Website

Client perlu membuat koneksi menuju proxy. Kemudian proxy membuat koneksi lain menuju server tujuan jika koneksi tersebut belum tersedia.

TCP Handshake Client ke Proxy

Misalnya proxy:

203.0.113.20:8080

Client terlebih dahulu membuat TCP connection menuju endpoint tersebut.

Client → SYN → Proxy Client ← SYN-ACK ← Proxy Client → ACK → Proxy

Kalau tahap ini gagal, request bahkan belum sampai ke proses HTTP proxy.

Proxy Kemudian Membuat Koneksi ke Website

Setelah client berhasil terkoneksi ke proxy, proxy mungkin harus membuat TCP connection ke destination.

Proxy → SYN → Website Proxy ← SYN-ACK ← Website Proxy → ACK → Website

Karena itu latency proxy dipengaruhi dua bagian:

Jalur Dampak
Client → Proxy Latency antara pengguna dan proxy.
Proxy → Website Latency antara proxy dan destination.

Kenapa Proxy Jauh Bisa Terasa Lambat?

Misalnya pengguna berada di Asia, tetapi proxy berada sangat jauh secara jaringan.

Setiap connection establishment harus melewati jalur tersebut.

Jika proxy kemudian menghubungi website di lokasi lain lagi, total path bisa menjadi lebih panjang.

Client
→
Proxy Jauh
→
Website

Karena itu memilih proxy hanya berdasarkan negara belum tentu cukup. Routing dan latency juga penting.

Apa Hubungan HTTP CONNECT dengan TCP Handshake?

Pada HTTPS melalui HTTP proxy, ada beberapa tahap.

Pertama client membuat TCP connection ke proxy.

Kemudian client meminta:

CONNECT example.com:443 HTTP/1.1

Proxy lalu membuat koneksi TCP menuju:

example.com:443

Setelah berhasil, proxy memberikan respons seperti:

HTTP/1.1 200 Connection Established

Barulah TLS handshake antara client dan destination berjalan melalui tunnel.

Jadi ada perbedaan antara:

  • TCP handshake,
  • HTTP CONNECT,
  • TLS handshake.

TCP Handshake vs HTTP CONNECT

Proses Layer / Tujuan
TCP Handshake Membentuk TCP connection.
HTTP CONNECT Meminta HTTP proxy membuat tunnel.
TLS Handshake Membentuk secure TLS session.

Kenapa Port Closed Menghasilkan Connection Refused?

Misalnya client mengirim SYN ke:

203.0.113.20:8080

tetapi host tidak memiliki service yang mendengarkan pada port tersebut.

Sistem target dapat merespons dengan TCP RST.

Client → SYN Server → RST

Dari sisi aplikasi, kondisi seperti ini sering muncul sebagai:

Connection refused

Apa Itu TCP RST?

RST berarti Reset.

RST digunakan untuk menunjukkan bahwa koneksi harus di-reset atau tidak dapat diteruskan dalam kondisi tertentu.

Contohnya:

  • client menghubungi port yang tidak mempunyai listener,
  • koneksi sudah tidak valid,
  • endpoint ingin membatalkan koneksi secara paksa.

Connection Refused vs Connection Timeout

Dua error ini sering dianggap sama padahal indikasinya berbeda.

Error Gambaran Umum
Connection Refused Host merespons tetapi koneksi ditolak, sering karena tidak ada listener.
Connection Timeout Client tidak mendapatkan response yang dibutuhkan dalam waktu tertentu.

Kenapa TCP Handshake Bisa Timeout?

Misalnya client mengirim:

SYN

tetapi tidak pernah menerima SYN-ACK.

Kemungkinan penyebab:

  • server offline,
  • firewall drop packet,
  • routing bermasalah,
  • network congestion,
  • destination IP salah,
  • provider memblokir port,
  • proxy tidak dapat dijangkau.

TCP dapat melakukan retransmission SYN sesuai algoritma implementasinya sebelum akhirnya koneksi dinyatakan gagal.

Drop dan Reject pada Firewall Bisa Terlihat Berbeda

Firewall dapat memblokir connection attempt dengan cara berbeda.

Rule yang reject dapat memberikan respons langsung sehingga client lebih cepat mengetahui koneksi ditolak.

Rule yang drop bisa membuang packet tanpa response.

Client SYN
→
Firewall DROP
✕
No Response

Akibatnya client menunggu sampai timeout atau melakukan retransmission.

Apa Itu SYN Retransmission?

Kalau SYN tidak mendapatkan response, TCP dapat mengirim SYN kembali setelah interval tertentu.

SYN ↓ tidak ada jawaban ↓ SYN ulang ↓ tidak ada jawaban ↓ retry / timeout

Jumlah retry dan timing bergantung pada implementasi sistem operasi dan konfigurasi networking.

Cara Melihat TCP Handshake dengan tcpdump

Kalau kamu mengelola server sendiri, tcpdump sangat berguna.

Misalnya ingin melihat traffic TCP port 443:

sudo tcpdump -ni any tcp port 443

Kemudian buat koneksi HTTPS ke server tersebut.

Kamu bisa melihat paket dengan flag seperti:

S S. .

Dalam output tcpdump, representasi flag dapat berbeda, tetapi konsepnya menunjuk SYN, SYN-ACK, dan ACK.

Filter Hanya SYN dengan tcpdump

Contoh umum untuk melihat SYN:

sudo tcpdump -ni any \ 'tcp[tcpflags] & tcp-syn != 0'

Gunakan hanya pada jaringan atau sistem yang memang kamu kelola atau punya izin untuk monitor.

Cara Melihat TCP State dengan ss

Di Linux:

ss -tn

Untuk socket yang listening:

ss -ltn

Output dapat menunjukkan state seperti:

LISTEN ESTAB TIME-WAIT SYN-SENT SYN-RECV

Apa Arti SYN-SENT?

SYN-SENT berarti endpoint aktif sudah mengirim SYN dan sedang menunggu response yang sesuai.

Kalau banyak connection tertahan lama di SYN-SENT, kamu bisa mengecek:

  • firewall,
  • routing,
  • destination port,
  • server availability.

Apa Arti SYN-RECV?

SYN-RECV atau SYN-RECEIVED menunjukkan server sudah menerima SYN dan mengirim SYN-ACK, tetapi belum menyelesaikan handshake.

Kalau jumlahnya sangat banyak, salah satu kemungkinan adalah banyak client sedang membuka koneksi.

Dalam konteks keamanan, state ini juga sering dikaitkan dengan SYN flood, walaupun tingginya SYN-RECV tidak otomatis berarti serangan.

Apa Itu SYN Flood?

SYN flood adalah pola serangan denial-of-service yang mengirim banyak SYN sehingga server mempertahankan banyak koneksi setengah terbuka atau menggunakan resource untuk handshake yang tidak pernah selesai.

Konsep sederhananya:

Attacker → SYN Server → SYN-ACK Attacker → tidak ACK

Server menunggu penyelesaian koneksi.

Sistem modern mempunyai berbagai mitigasi terhadap pola seperti ini.

Jangan menganggap banyak SYN otomatis serangan. Website dengan trafik tinggi secara normal juga menerima banyak connection attempt.

Apa Itu SYN Cookie?

SYN cookie adalah salah satu teknik yang dapat digunakan untuk membantu server menghadapi kondisi SYN flood dengan mengurangi kebutuhan menyimpan state tertentu sebelum ACK valid diterima.

Implementasi dan konfigurasi berbeda antar operating system.

Apakah TCP Handshake Selalu Sama pada Semua Koneksi?

Three-way handshake merupakan mekanisme dasar TCP, tetapi TCP mempunyai extension dan option yang dapat membuat detail connection establishment lebih kompleks.

Contohnya:

  • TCP options,
  • window scaling,
  • timestamps,
  • Selective Acknowledgment support,
  • TCP Fast Open.

Apa Itu TCP Options?

SYN dan SYN-ACK sering membawa TCP option untuk menegosiasikan kemampuan tertentu.

Contohnya:

  • Maximum Segment Size,
  • Window Scale,
  • SACK Permitted,
  • Timestamps.

Jadi handshake bukan hanya soal “apakah server hidup”, tetapi juga bisa membawa parameter penting untuk koneksi.

Apa Itu MSS?

MSS atau Maximum Segment Size menunjukkan jumlah maksimum data TCP yang ingin diterima peer dalam satu segment, tidak termasuk header IP dan TCP.

MSS biasanya dinegosiasikan melalui TCP option pada SYN.

Apa Itu Window Scaling?

Window scaling membantu TCP menggunakan receive window lebih besar daripada batas window field dasar.

Ini berguna pada jaringan dengan bandwidth dan latency tinggi karena lebih banyak data dapat berada dalam flight.

Apa Itu SACK Permitted?

SACK atau Selective Acknowledgment membantu receiver memberi informasi lebih spesifik tentang blok data yang sudah diterima.

Dengan begitu sender tidak harus selalu mengirim ulang data yang sebenarnya sudah sampai.

Apa Itu TCP Fast Open?

TCP Fast Open adalah extension yang memungkinkan data tertentu dikirim lebih awal pada proses pembentukan koneksi untuk mengurangi latency pada koneksi yang memenuhi kondisi yang diperlukan.

RFC 9293 mencatat bahwa data pada SYN memang diperbolehkan oleh TCP dan fitur seperti T/TCP serta TCP Fast Open memanfaatkan kemampuan tersebut.

Apakah HTTPS HTTP/3 Masih Menggunakan TCP Handshake?

Tidak untuk koneksi HTTP/3 utama.

HTTP/3 menggunakan QUIC di atas UDP, bukan TCP.

HTTP/1.1 / HTTP/2 ↓ TCP ↓ IP HTTP/3 ↓ QUIC ↓ UDP ↓ IP

Jadi connection establishment HTTP/3 menggunakan mekanisme QUIC, bukan SYN → SYN-ACK → ACK TCP.

Ini salah satu alasan penting memahami perbedaan TCP dan UDP.

Kenapa Browser Bisa Fallback dari HTTP/3 ke TCP?

Jika QUIC/UDP tidak tersedia atau diblokir, browser dan server dapat tetap menggunakan HTTP/2 atau HTTP/1.1 melalui TCP tergantung kemampuan dan negosiasi.

Contohnya firewall:

TCP 443 : Allowed UDP 443 : Blocked

koneksi web masih bisa berjalan melalui HTTPS berbasis TCP, meskipun HTTP/3 tidak digunakan.

TCP Handshake dan Port

SYN dikirim menuju kombinasi alamat dan port tertentu.

Contohnya:

203.0.113.20:443

Berbeda dengan:

203.0.113.20:8080

Walaupun IP sama, kedua endpoint tersebut bisa menjalankan service berbeda.

Untuk pembahasan lengkap, baca artikel Port 80, 443, 8080, 3128 & 1080.

Kenapa Ping Berhasil tapi TCP Connection Gagal?

Ping umumnya menggunakan ICMP, bukan TCP.

Jadi kondisi seperti:

ping server → berhasil curl https://server:443 → gagal

bisa terjadi kalau:

  • host aktif tetapi port 443 tertutup,
  • firewall mengizinkan ICMP tapi memblokir TCP 443,
  • service HTTPS tidak berjalan,
  • routing policy berbeda.

Ping Gagal tapi Website Bisa Dibuka?

Bisa juga.

Server atau firewall bisa memblokir ICMP echo tetapi tetap mengizinkan TCP 443.

Jadi ping bukan satu-satunya indikator apakah service TCP dapat diakses.

Kenapa nc atau telnet Sering Dipakai untuk Tes Port?

Tool seperti Netcat dapat mencoba membuka TCP connection sederhana.

Contoh:

nc -vz example.com 443

Kalau handshake berhasil, kamu mengetahui bahwa TCP endpoint setidaknya dapat dijangkau.

Tetapi ini belum menjamin aplikasi di atas TCP berfungsi normal.

TCP Connect Berhasil tapi Website Tetap Error

Handshake hanya membuktikan transport connection berhasil.

Masih ada tahap lain:

TCP ✓
→
TLS ?
→
HTTP ?
→
Application ?

Contohnya TCP 443 terbuka tetapi certificate TLS invalid. TCP connection tetap berhasil, namun browser menampilkan error TLS.

TCP Handshake vs TLS Handshake

Aspek TCP Handshake TLS Handshake
Tujuan Membentuk transport connection. Membangun secure session.
Protocol TCP. TLS.
Contoh pesan SYN, SYN-ACK, ACK. ClientHello, ServerHello, certificate, key negotiation.
Enkripsi Tidak. Ya, setelah parameter secure terbentuk.

TCP Handshake dan Connection Pooling

Application server, HTTP client, database driver, dan proxy sering menggunakan connection pooling.

Alih-alih membuat koneksi baru untuk setiap request:

Handshake Request Close Handshake Request Close

aplikasi dapat menjaga beberapa koneksi tetap terbuka:

Handshake ↓ Request Request Request Request ↓ Close

Hal ini mengurangi overhead handshake.

Proxy Juga Bisa Menggunakan Connection Pooling

Proxy tidak selalu membuat koneksi upstream baru untuk setiap request.

Tergantung implementasinya, proxy bisa melakukan connection reuse atau pooling ke destination.

Ini dapat membantu performa terutama jika banyak request menuju origin yang sama.

TCP Handshake dan Load Balancer

Dalam arsitektur modern, client mungkin tidak langsung berbicara ke application server.

Contohnya:

Client
→
Load Balancer
→
App Server

TCP connection client dapat terminate pada load balancer, sementara load balancer membuat koneksi lain ke backend.

Konsep ini mirip dengan banyak reverse proxy.

TCP Handshake dan Reverse Proxy

Reverse proxy seperti Nginx atau HAProxy dapat menerima koneksi dari client kemudian membuat atau menggunakan koneksi ke upstream server.

Browser
↔
Reverse Proxy
↔
Backend

Artinya dari perspektif TCP bisa ada lebih dari satu connection berbeda dalam satu perjalanan request.

Forward Proxy vs Reverse Proxy dari Sisi TCP

Jenis Koneksi Pertama Koneksi Berikutnya
Forward Proxy Client → Proxy Proxy → Destination
Reverse Proxy Client → Reverse Proxy Reverse Proxy → Backend

Untuk konsep arsitekturnya, baca artikel Forward Proxy vs Reverse Proxy.

Bagaimana Cara Troubleshooting TCP Handshake?

1. Pastikan DNS Benar

Hostname harus resolve ke IP yang sesuai.

2. Pastikan Routing Ada

Client harus mempunyai jalur menuju server.

3. Cek Port

Pastikan service listen pada port yang benar.

ss -ltn

4. Cek Firewall

Pastikan SYN tidak diblokir.

5. Tes dengan Netcat

nc -vz example.com 443

6. Gunakan tcpdump

Lihat apakah:

SYN keluar SYN-ACK masuk ACK keluar

7. Jika Menggunakan Proxy, Tes Proxy Terlebih Dahulu

Pastikan client dapat membangun koneksi TCP ke IP dan port proxy.

Membaca Gejala dari Handshake

Yang Terlihat Kemungkinan
SYN → SYN-ACK → ACK Handshake berhasil.
SYN → RST Connection refused / port tidak menerima.
SYN → tidak ada jawaban Drop, routing problem, host down, atau filter.
SYN → SYN-ACK → tidak ada ACK Masalah pada jalur balik/client atau handshake tidak diselesaikan.
Banyak SYN-RECV Banyak koneksi setengah terbuka; perlu investigasi lebih lanjut.

Kesalahan Umum tentang TCP Handshake

  • Menganggap handshake sama dengan TLS.
  • Menganggap SYN adalah HTTP request.
  • Menganggap port terbuka berarti aplikasi pasti sehat.
  • Menganggap ping sukses berarti TCP pasti sukses.
  • Menganggap connection refused sama dengan timeout.
  • Mengira ACK selalu membawa data aplikasi.
  • Menganggap TCP handshake mengenkripsi traffic.
  • Mengira HTTP/3 memakai TCP handshake.
  • Menganggap satu request melalui proxy hanya mempunyai satu koneksi TCP.

Ringkasan TCP Three-Way Handshake

Tahap Pesan Tujuan
1 SYN Client memulai koneksi dan mengirim initial sequence number.
2 SYN-ACK Server mengakui SYN client sekaligus mengirim initial sequence number server.
3 ACK Client mengakui SYN server dan koneksi menjadi established.

FAQ TCP Handshake

Apa itu TCP handshake?

TCP handshake adalah proses pembentukan koneksi TCP antara dua endpoint sebelum data normal dipertukarkan. Mekanisme dasarnya menggunakan SYN, SYN-ACK, dan ACK.

Apa arti SYN?

SYN berarti synchronize dan digunakan untuk memulai connection establishment serta membawa initial sequence number.

Apa arti SYN-ACK?

SYN-ACK merupakan response server yang mengakui SYN client sekaligus mengirim SYN dan initial sequence number milik server.

Apa fungsi ACK terakhir?

ACK terakhir mengonfirmasi SYN milik server sehingga kedua peer telah menyinkronkan sequence number dan koneksi dapat masuk ke state ESTABLISHED.

Kenapa TCP memakai three-way handshake?

Karena kedua peer perlu menyinkronkan initial sequence number masing-masing dan memastikan connection initiation valid sebelum koneksi dianggap terbentuk.

Apakah TCP handshake terenkripsi?

Tidak. TCP handshake bukan encryption protocol. Untuk HTTPS, TLS handshake berjalan setelah koneksi TCP terbentuk.

Apa beda TCP handshake dan TLS handshake?

TCP handshake membentuk transport connection, sedangkan TLS handshake membangun secure cryptographic session di atas koneksi tersebut.

Kenapa TCP handshake timeout?

Penyebabnya bisa berupa firewall drop, server offline, routing bermasalah, port diblokir, packet loss, atau destination yang tidak dapat dijangkau.

Apa arti SYN-SENT?

SYN-SENT berarti client sudah mengirim SYN dan sedang menunggu response untuk melanjutkan pembentukan koneksi.

Apa hubungan TCP handshake dengan proxy?

Client harus membentuk koneksi TCP menuju proxy, dan proxy biasanya membentuk atau menggunakan koneksi lain menuju destination. Jadi penggunaan proxy dapat melibatkan beberapa TCP connection terpisah.