본문 바로가기

개발/용어정리

Handshake란?

반응형

📌 1. 핵심 개념 요약

Handshake는 서버 간 또는 클라이언트-서버 간 통신을 시작할 때, 양쪽이 서로를 인식하고 통신 조건을 협의하는 초기 과정을 의미합니다.
이 과정은 보안, 데이터 전송 방식, 인증, 암호화 방식 등을 결정하는 데 사용됩니다.
즉, "우리가 통신해도 괜찮은 상태인지", "어떤 방식으로 통신할지"를 정하는 일종의 통신 약속입니다.


📚 2. 필요 배경 지식

  • 네트워크 통신: 두 개 이상의 장비가 데이터를 주고받는 구조
  • TCP/IP: 인터넷에서 가장 널리 사용되는 통신 프로토콜
  • TLS/SSL: 보안 통신을 위한 프로토콜 (HTTPS에서 사용됨)
  • 클라이언트-서버 모델: 하나가 요청하고, 다른 하나가 응답하는 구조

🚀 3. 구체적인 활용 사례

✅ 예시 1: TCP 3-Way Handshake

TCP 연결 시 3단계의 핸드쉐이크가 발생:

  1. SYN: 클라이언트가 서버에 연결 요청 (SYN 메시지)
  2. SYN-ACK: 서버가 수락 응답 (SYN + ACK)
  3. ACK: 클라이언트가 응답 확인 (ACK)

→ 이로써 안정적인 연결이 성립됨.

✅ 예시 2: TLS Handshake

보안 통신 시 HTTPS에서 TLS 핸드쉐이크 사용:

  1. Client Hello: 클라이언트가 TLS 버전, 암호화 알고리즘 제안
  2. Server Hello: 서버가 선택된 방식과 인증서 제공
  3. 키 교환: 암호화에 사용할 키 생성
  4. Finished: 보안 연결 완료 후 데이터 암호화 시작

🔄 4. 기초 → 심화 흐름

수준설명
기초 TCP 3-Way Handshake: 신뢰성 있는 연결 수립
중간 TLS/SSL Handshake: 암호화, 인증서 기반 보안 연결
심화 Mutual TLS (mTLS): 양방향 인증, Zero Trust 아키텍처에서 활용
 

🔗 5. 관련 개념 연결

  • TCP vs UDP: UDP는 핸드쉐이크 없이 연결됨 (비연결형)
  • TLS vs SSL: TLS는 SSL의 후속 보안 프로토콜
  • OAuth: 인증 절차에서의 핸드쉐이크 방식 존재
  • WebSocket Handshake: HTTP → WebSocket 프로토콜 업그레이드 시 사용
반응형