HTTP와 HTTPS는 웹 애플리케이션에서 데이터를 주고받기 위한 애플리케이션 레이어 프로토콜
HTTP는 비보안 프로토콜, HTTPS는 보안을 강화한 버전
HTTP 프로토콜 동작 원리
HTTP?
- HTTP(HyperText Transfer Protocol)는 클라이언트와 서버간에 요청과 응답을 주고받기 위한 프로토콜
- 텍스트, 이미지, 동영상 등의 리소스를 전달하기 위해 주로 사용됨
동작 과정
- TCP 연결: 클라이언트(웹 브라우저)가 서버와 TCP 3-way handshake를 통해 연결을 설정
- HTTP 요청(Request): 클라이언트가 서버에 요청 메세지를 보냄
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
- HTTP 응답(Response): 서버가 요청에 대한 응답 메시지를 클라이언트로 보냄
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 123
<html>...</html>
- TCP 연결 해제
- 클라이언트와 서버 간의 연결을 종료함
- HTTP 1.0에서는 요청당 연결을 새로 열었으나 HTTP 1.1부터는 Keep-Alive를 통해 연결을 재사용할 수 있음
단점
- 데이터가 평문(plain text)으로 전송되므로 보안 취약점 존재
- 중간자 공격(Man-In-The-Middle Attack)에 노출
- 민감한 정보(비밀번호, 신용카드 정보 등)가 쉽게 탈취 가능
HTTPS 프로토콜 동작 원리
HTTPS?
- HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 보안 계층(SSL/TLS)을 추가한 프로토콜
- 443번 포트를 기본적으로 사용하며 데이터 암호화와 인증을 통해 보안을 강화함
동작 과정
- TCP 연결: 클라이언트와 서버가 TCP 3-way handshake를 통해 연결을 설정
- SSL/TLS 핸드 쉐이크
- 클라이언트 헬로: 클라이언트가 서버로 지원 가능한 암호화 알고리즘과 TLS 버전 전송
- 서버 헬로: 서버가 클라이언트에 사용할 암호화 알고리즘, 인증서(SSL/TLS 인증서)를 전송
- 서버 인증서 검증: 클라이언트가 서버 인증서를 검증(신뢰할 수 있는 CA로 서명되었는지 확인)
- 키 교환: 서버와 클라이언트가 대칭키 생성하기 위한 세션 키를 교환. 주로 RSA 또는 ECDHE 알고리즘 사용
- 암호화 연결 설정: 세션 키를 이용해 암호화된 데이터 통신 시작
- HTTP 요청/응답
- 암호화된 채널을 통해 HTTP 요청 및 응답 데이터를 송수신
- 데이터는 평문이 아닌 암호화된 형태로 전송
- TCP 연결 해제: 요청과 응답이 끝나면 TCP 연결 해제
장점
- 데이터 암호화: 전송되는 데이터를 암호화하여 중간에서 도청해도 읽을 수 없게 만듦
- 데이터 무결성: 데이터가 전송 중에 변경되지 않았음을 보장
- 서버 인증: 서버가 신뢰할 수 있는 서버임을 클라이언트에게 인증 (CA 인증서 사용)
HTTP | HTTPS | |
보안성 | 낮음 (평문 전송) | 높음 (암호화 및 인증 제공) |
포트 | 80 | 443 |
암호화 | 없음 | SSL/TLS 기반 암호화 |
속도 | 빠름 | 암호화/복호화 단계로 약간 느림 |
사용 사례 | 비보안 요청(이미지, CSS 등) | 민감 데이터 전송 (로그인, 결제 등) |
728x90
반응형
'네트워크' 카테고리의 다른 글
HTTP 헤더 (0) | 2025.01.22 |
---|---|
TCP 3-way handshake, 4-way handshake (0) | 2025.01.22 |
브라우저 (0) | 2021.01.24 |
HTTP 란? (0) | 2021.01.18 |
인터넷 Internet (0) | 2021.01.18 |