
웹 상에서 클라이언트 (웹 브라우저)와 서버 간의 데이터를 전송하기 위한 프로토콜
애플리케이션 계층 (Application Layer) 프로토콜
비연결성 (Connectionless): 각 요청은 독립적으로 처리
비상태성 (Stateless): 서버는 클라이언트의 이전 요청 상태를 기억하지 않음
주로 사용: 웹 페이지 요청 (HTML, CSS, JavaScript), 이미지, 파일, API 통신 등.
HTTP 요청: 클라이언트 → 서버
웹 브라우저에서 사용자가 www.example.com에 접속
클라이언트는 서버로 HTTP GET 요청 전송
HTTP 응답: 서버 → 클라이언트
서버는 요청된 페이지 (index.html)를 HTTP 응답으로 전송
클라이언트 (웹 브라우저)와 서버 간의 보안 연결을 설정하기 위해 사용하는 프로세스
안전한 통신을 위한 암호화된 연결 (HTTPS) 설정
TCP/IP 4계층 중 전송 계층 (Transport Layer) 프로토콜
웹 통신 (HTTPS), 이메일 (IMAP/SMTP), 파일 전송 (FTPS) 등에 사용
SSL (Secure Sockets Layer): 초기 버전의 보안 프로토콜
TLS (Transport Layer Security): SSL의 개선된 버전으로 현재 주로 사용
Client Hello (클라이언트 인사)
클라이언트 → 서버: 보안 연결 요청
Client Hello
- TLS Version: TLS 1.2
- Cipher Suites: AES, RSA, ECC 등
- Client Random: (임의의 랜덤 값)
Server Hello (서버 응답) + Server Certificate (서버 인증서)
서버: 클라이언트 요청 수락, 보안 설정 정보 전송
Server Hello
- TLS Version: TLS 1.2
- Cipher Suite: AES-256-GCM (서버가 선택)
- Server Random: (임의의 랜덤 값)
- Certificate: (서버 인증서 + 공개 키)
Client Key Exchange (클라이언트 키 교환)
클라이언트: 세션 키를 생성하고, 서버의 공개 키로 암호화하여 서버에 전달
Client Key Exchange
- Encrypted Pre-Master Secret (서버 공개 키로 암호화)
- Finished (대칭키로 암호화된 메시지)
Server Finished (서버 확인)
서버: 클라이언트가 보낸 Pre-Master Secret을 자신의 개인 키로 복호화
Server Finished
- Finished (대칭키로 암호화된 메시지)
→ 이 시점부터 대칭키 (대칭 암호화)로 안전하게 통신