TCP 3-way handshake 과정

규갓 God Gyu·2025년 4월 25일

면접질문

목록 보기
124/142

3-way handshake는 TCP 연결을 수립하는 과정, 클라이언트와 서버 간에 신뢰성 있는 연결을 보장하기 위해 존재

  1. 클라이언트가 서버에 SYN 패킷을 보내면서 연결 요청 시작

SYN 패킷
쉽게 말하면 인터넷에서 컴퓨터 두 대가 서로 대화를 시작하려면, 서로 연결을 맺는 과정이 필요한데, 이때 SYN 패킷이 먼저 보내짐
ex)
1. 클라이언트 -> 서버 (SYN)
2. 서버 -> 클라이언트 (SYN-ACK)
3. 클라이언트 -> 서버 (ACK)
이 과정인데 맨 처음 나오는 패킷이 바로 SYN 패킷

이 패킷엔 클라이언트의 초기 시퀀스 번호(Initial Sequence Number)가 포함됨

  1. 서버는 클라이언트의 SYN을 받고 SYN-ACK 패킷으로 응답
    서버가 클라이언트로부터 요청을 잘 받았다고 확인하고, 데이터를 주고받을 준비가 되었음을 알리는 과정
    이 패킷에는 클라이언트의 시퀀스 번호에 1을 더한 값(ACK)과 서버 자신의 초기 시퀀스 번호(SYN)가 포함됨

  2. 클라이언트는 서버의 SYN-ACK를 받고 ACK 패킷을 보냄
    이 패킷에는 서버의 시퀀스 번호에 1을 더한 값이 포함됨

이 세 단계가 완료되면 TCP 연결이 수립되어 신뢰성 있는 데이터 전송이 가능해짐

3-way handshake 과정 필요한 이유

TCP는 신뢰성 있는 데이터 전송을 보장해야 하기 때문에, 송신자와 수신자가 서로를 확인하고 준비 상태를 점검하는 3-way handshake 과정을 거치는 것임
단순히 패킷을 한 번 보내는 것이 아니라, 세 번의 패킷 교환을 통해 실제 연결이 정상적으로 설정되었는지 확인할 수 있음. 만약 이 과정이 없다면, 네트워크 지연이나 패킷 손실로 인해 잘못된 연결이 설정될 가능성이 있음

3-way handshake 없이 데이터 전송 프로토콜?

UDP가 있음 TCP와 달리 연결을 설정하는 과정 없이 데이터 바로 전송
따라서 속도는 빠르지만 신뢰성이 보장되지 않음
ex-영상 스트리밍, 온라인 게임 (실시간성 필요한 경우)

profile
웹 개발자 되고 시포용

0개의 댓글