→ (쉽게 말해) 웹에서 클라이언트와 서버가 요청(Request)와 응답(Response)를 어떤 형식으로 할지를 약속(protocol)한 것
요청-응답 (Request/ Response) 구조
Request - Method를 통해 요청의 의도를 표현
Response - Status Code를 통해 결과를 표현
Status Code는 응답의 결과를 나타내는 3자리 코드
HTTP는 Stateless하다
참고 : SSL(Secure Sockets Layer)은 1990년대 넷스케이프가 만든 원조 암호화 프로토콜이고, TLS(Transport Layer Security)는 그 후속 버전
→ 현업에서는 SSL 과 TLS를 혼용해서 쓰이기도 하는 듯 하니 참고할 것
HTTP
Client
│
│ TCP 연결
▼
Server
│
│ HTTP Request
▼
Server
│
│ HTTP Response
▼
Client
HTTPS
Client
│
│ TCP 연결
▼
Server
│
│ TLS Handshake
│
│ 서버 인증 / 암호화 키 협상
▼
보안 채널 형성
│
│ 암호화된 HTTP Request
▼
Server
│
│ 암호화된 HTTP Response
▼
Client
개념

TLS Handshake에서는
① 어떤 TLS / 암호 설정을 사용할지 협상
② 이후 통신에 사용할 비밀 키를 수립
③ 서버가 누구인지 인증
④ handshake 자체가 정상적으로 끝났는지 확인
이후 TLS로 암호화된 Response와 Request를 주고받음
| HTTP | HTTPS | |
|---|---|---|
| 포트 | 80 | 443 |
| 통신 | 평문 | TLS 암호화 |
| 보장 | 없음 | 기밀성·무결성·서버 인증 |
실무 관점
로그인 페이지, 개인정보·결제 등 중요 정보가 오가는 구간이 HTTP로 통신하면
"전송 시 주요 정보 노출" 취약점이다.웹 취약점 진단과 인증 감사에서 확인하는 항목이고,
조치는 HTTPS 적용이다.