← 홈
네트워크

TCP 3-way Handshake

클라이언트와 서버가 SYN / SYN-ACK / ACK 세 번의 패킷 교환으로 연결을 수립하는 과정.

클라이언트CLOSED
(대기 중)
서버LISTEN

서버는 LISTEN 상태로 연결 요청을 기다리고, 클라이언트는 아직 어떤 연결도 시도하지 않은 CLOSED 상태입니다.

핵심 개념

3-way handshake

양쪽이 서로의 초기 시퀀스 번호를 확인하고 연결을 수립하는 세 번의 패킷 교환 과정.

시퀀스 번호 (seq)

전송 데이터의 순서를 보장하기 위한 번호. 연결 시작 시 양쪽이 임의 값으로 시작.

ACK 번호

다음에 받을 것으로 예상하는 시퀀스 번호. 누적 확인 응답에 사용.

TCP 상태

CLOSED → SYN_SENT → ESTABLISHED (클라이언트), LISTEN → SYN_RCVD → ESTABLISHED (서버).

면접 단골 질문

  1. Q1.왜 2-way가 아니라 3-way handshake가 필요한가요?
  2. Q2.SYN flood 공격은 어떻게 동작하고, 어떻게 방어할 수 있나요?
  3. Q3.TCP 연결 종료는 왜 4-way handshake인가요?
  4. Q4.TIME_WAIT 상태는 왜 존재하나요? 너무 많아지면 어떤 문제가 생기나요?
  5. Q5.초기 시퀀스 번호(ISN)를 랜덤하게 시작하는 이유는?