3-way Handshake란? (3단계 핸드셰이크)

강연주·2024년 10월 17일

📚 TIL

목록 보기
64/186

🪸 3-way Handshake (3단계 핸드셰이크)

3-way 핸드셰이크는 TCP 연결을 설정하는 과정. 두 장치(클라이언트와 서버)가 서로 신뢰할 수 있는 연결을 시작하기 위해, 세 번의 메시지를 주고받는다.
이 과정이 완료되어야 데이터 전송이 가능해진다.


🥉 3-way Handshake의 간단한 과정

1. SYN (Synchronization)
클라이언트가 서버에게 "연결을 시작하고 싶다"는 메시지(SYN)를 보냅니다.

2. SYN-ACK (Acknowledgment)
서버는 요청을 받고, "나도 준비됐어"라는 의미로 SYN-ACK 메시지를 응답합니다.

3. ACK (Acknowledgment)

  • 클라이언트가 서버로부터 응답을 받으면, "이제 데이터 전송을 시작하자"는 마지막 응답(ACK)을 보냅니다.
  • 이로써 연결이 완료되고 양쪽이 데이터를 주고받을 수 있게 됩니다.

🥉 간단한 예시

  1. 클라이언트: "서버야, 나랑 연결할래?" (SYN)
  2. 서버 : "그래, 준비됐어. 너도 괜찮니?" (SYN-ACK)
  3. 클라이언트 : "좋아, 이제 데이터 보내자!" (ACK)

🥉 왜 중요한가? (프론트엔드 개발자 관점)

  • 지연 시간 : HTTP 요청을 보낼 때 TCP의 3-way 핸드셰이크가 연결 시간에 영향을 미친다. 이 과정 때문에 첫 연결에 약간의 지연이 생긴다.
  • HTTPS와 추가 핸드셰이크 : HTTPS는 TLS 핸드셰이크까지 추가되므로 더 느릴 수 있다. 이 때문에 HTTP/2나 HTTP/3 같은 개선된 프로토콜이 사용된다.
  • 실시간 통신 최적화 : 웹소켓 같은 실시간 통신에서는 3-way 핸드셰이크 이후에 한 번 연결을 유지해 여러 데이터를 주고받는 방식으로 효율을 제고.

➡️ 프론트엔드 개발자는 3-way 핸드셰이크가 TCP 연결을 설정하는 데 필요하며, 첫 요청 시 지연의 원인이 될 수 있음을 이해하면 충분하다. 이를 통해 성능 최적화, HTTPS 적용, 그리고 웹소켓 연결 유지의 중요성 등을 알 수 있다.

profile
아무튼, 개발자

0개의 댓글