🧱 TCP 연결 (3-way Handshake)
TCP는 신뢰성 있는 통신을 위해 연결 전 사전 핸드셰이크 과정을 거쳐
과정:
- SYN: 클라이언트 → 서버 : "나 연결하고 싶어!"
- SYN-ACK: 서버 → 클라이언트 : "좋아, 나도 준비됐어!"
- ACK: 클라이언트 → 서버 : "좋아, 이제 데이터 주고받자!"
이렇게 세 번 주고받아서 연결이 열림.
➡️ "3-way Handshake" 라고 부름
📌 이 과정을 거친 후에야 HTTP 요청이 전송 가능해
🔐 HTTPS일 경우: TLS(SSL) Handshake 추가
HTTPS는 보안을 위해 암호화된 TCP 통신을 사용해야 해. 이때 필요한 게 바로 TLS 핸드셰이크.
TLS 핸드셰이크 흐름:
- 클라이언트 Hello
- 클라이언트가 지원하는 암호화 알고리즘, 난수, TLS 버전 등을 보냄
- 서버 Hello + 인증서
- 서버는 자신이 선택한 암호화 알고리즘, 난수, SSL 인증서(공개키 포함)를 보냄
- 클라이언트는 인증서 확인
- 인증서가 **신뢰할 수 있는 CA(Certificate Authority)**로부터 발급됐는지 확인
- 유효 기간, 도메인 일치 등 체크
- 세션 키 생성
- 클라이언트는 대칭키를 생성하고, 서버의 공개키로 암호화해서 전송
- 서버는 자신의 비공개키로 복호화해서 세션 키 확보
- "Finished" 메시지 전송
- 이제부터 둘 사이의 모든 통신은 이 세션 키를 이용해서 암호화됨