(CS/컴퓨터공학) TCP 3-Way Handshake 완벽 가이드

✨ 개요

TCP 연결은 3단계 핸드셰이크(3-Way Handshake) 로 시작합니다.
클라이언트와 서버가 초기 시퀀스 번호(ISN), 윈도 크기, 옵션을 합의하며 신뢰 가능한 바이트 스트림을 열죠.


1. 한 장 요약


2 시퀀스: ASCII 시퀀스 다이어그램

Client Server
| --- SYN, seq=x, MSS, WS, SACK, TS ---> |
| <--- SYN-ACK, seq=y, ack=x+1 ---------- |
| --- ACK, seq=x+1, ack=y+1 ------------> |
|============= ESTABLISHED ==============>

ISN(Initial Sequence Number) 는 랜덤에 가까운 값(보안·혼잡 회피).
각 바이트는 시퀀스로 계산되며, SYN 자체가 1바이트 소비로 간주되어 +1이 됩니다.


3 핸드셰이크에서 교환되는 핵심 옵션

옵션은 SYN 구간에서만 협상됩니다. 이후 패킷엔 “합의된 설정”이 적용됩니다.


4. 왜 3단계인가? (신뢰·반사 공격 방지)


5. 실패·이상 징후와 원인

증상 의미/원인
SYN 보냄 → 응답 無(타임아웃) 방화벽 드롭, 라우팅/리턴패스 문제, 서버 다운
SYN → RST 즉시 수신 포트 미개방, 서비스 미동작, 패킷 필터 차단
SYN/SYN-ACK 여러 번 재전송 손실, 혼잡, MTU/MSS 불일치(단편화/ICMP 차단)
ESTABLISHED 전 SYN backlog 포화 SYN flood, 동시 접속 과다 → accept 지연/드롭
핸드셰이크 후 초기 데이터에서 지연 급증 혼잡/버퍼블로트, 중간 장비의 DPI/SSL 인스펙션

6. 보안: SYN Flood와 SYN Cookies


7. MTU/MSS와 초기 지연


8. 애플리케이션 관점 팁


9. 현대 대안: QUIC(UDP 위 전송)



Related Posts