질문 139 · 실전 면접 답변
TCP 연결 수립(3-way)과 연결 종료(4-way)는 왜 서로 다른 단계로 진행되나요?
이렇게 답해 보세요 (핵심 답변)
일반적인 TCP 연결 수립은 SYN, SYN+ACK, ACK의 3단계로 양쪽의 초기 순서 번호와 송수신 준비 상태를 한 번에 확인합니다. 반면 TCP는 양방향 독립 스트림이므로 연결을 닫을 때는 한쪽이 먼저 FIN을 보내도 반대쪽은 아직 보낼 데이터가 남아 있을 수 있어 각 방향이 FIN과 ACK를 독립적으로 주고받는 4단계 흐름을 갖습니다. 마지막에 남는 TIME_WAIT 상태는 네트워크에 지연된 이전 세그먼트가 새 연결에 섞이지 않도록 막고 마지막 ACK 재전송을 돕습니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 만약 상대방도 더 보낼 데이터가 없다면 ACK와 FIN이 한 패킷으로 합쳐지거나 동시 종료·RST가 발생할 수 있어 패킷 수가 언제나 4개로 고정되지는 않습니다.
- FIN을 통한 정상 종료(Graceful Close)와 RST 패킷으로 즉시 연결을 끊는 비정상 재설정(Reset)은 동작과 의미가 다릅니다.
면접에서 자주 하는 실수
모든 TCP 연결 종료가 어떤 상황에서나 예외 없이 정확히 패킷 4개로만 이루어진다고 기계적으로 외우면 안 됩니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 139번을 바탕으로 질문과 답변을 새로 정리했습니다.