HTTP란?
HTTP(HyperText Transfer Protocol)는 웹 상에서 클라이언트와 서버간에 요청과 응답 정보를 주고 받기 위한 프로토콜입니다.
주요 특징
- 주로 HTML 문서를 주고받는 데 사용
- TCP와 UDP를 사용하며, 80번 포트를 사용
- 비연결성
- 요청에 대한 응답을 전송한 뒤 연결 종료
- 단, HTTP/1.1부터는 Keep-Alive로 지속 연결 가능
- 무상태성
- 각 요청은 독립적이고 이전 요청과 연결되지 않음
Request / Response
HTTP 통신을 위한 Request, Response는 다음과 같은 구성 요소를 가지고 있습니다.
Request

Response

통신 과정
사용자가 URL에 www.google.com을 입력한 경우 다음과 같은 동작이 수행됩니다.

통신 방식과 특징
- 단방향 통신
- Keep-Alive
- 다수의 요청에 대해 연결을 유지하여 속도를 높임
- Long Polling
- 클라이언트가 요청을 보내면, 서버는 즉시 응답하지 않고 대기
- 새로운 데이터가 생기면 응답을 반환
- 실시간 채팅, 알림 시스템에 사용
- SSE
- 서버가 클라이언트에게 연속적으로 데이터 전송
- 클라이언트는 자동으로 데이터를 수신하고 화면에 반영
- 실시간 주식 시세, 뉴스 피드 업데이트
- WebSocket
- HTTP 통신이 아닌 TCP 소켓 통신 사용
- 클라이언트와 서버 간 양방향 통신 가능
- 실시간 데이터 송수신이 빠름
- 실시간 채팅, 온라인 게임
HTTPS란?
HTTPS((HyperText Transfer Protocol over Secure Socket Layer)는 HTTP 프로토콜의 보안적 한계를 보완한 프로토콜입니다.
특징
- TCP/IP 443번 포트 사용
- 소켓 통신은 일반 텍스트를 사용하지만, 웹 상에서 SSL/TLS 프로토콜을 통해 세션 데이터 암호화
- TLS는 SSL 프토토콜 발전한 것, 현재는 TLS 프토토콜을 기본으로 사용
암호화 방식
HTTPS는 TLS(또는 이전의 SSL) 프로토콜을 기반으로 공개키(비대칭키)와 대칭키를 조합한 하이브리드 암호화 방식을 사용하여 통신을 보호합니다.
공개키 방식
- 클라이언트는 서버의 공개키를 받아 대칭키를 암호화하여 서버로 전달
- 서버는 자신의 개인키로 데이터를 복호화하여, 공통 대칭키 확보
대칭키 방식
- 대칭키 공유 완료 이후, 클라이언트 서버 간의 실제 데이터 전송은 대칭키로 암호화
메시지 무결성 검증
- 암호화된 데이터가 변조되지 않았는지 검증하기 위해 HMAC이나 AEAD를 함께 사용
정리
위 내용을 토대로 HTTPS를 사용한 경우, 다음과 같은 과정을 거쳐 데이터를 송수신합니다.
- 클라이언트는 서버로부터 공개키를 전달받고, 자신이 생성한 대칭키를 공개키로 암호화해 서버에 전송
- 서버는 자신의 개인키로 암호화된 대칭키를 복호화하여, 클라이언트와 동일한 대칭키 확보
- 이후 클라이언트와 서버는 공유된 대칭키를 사용하여 데이터를 암호화하여 송수신
- 전송된 데이터가 변조되지 않았는지 검증하기 위해, HMAC 또는 AEAD 기반의 무결성 검증 알고리즘을 함께 수행
예상 질문
HTTP란 무엇인가요?
서버-클라이언트 간의 응답과 요청을 주고받기 위해 사용하는 프토토콜
- HTML 문서 송수신에 사용
- TCP/UDP 모두 사용 가능하며, 80번 포트 사용
- 비연결성과 무상태성을 가짐
- 비연결성은 요청에 대한 응답 후 연결을 종료하는 것
- 무상태성은 클라이언트의 상태를 유지하지 않는 것
HTTP 통신 방식은?
URL 입력 -> DNS 조회 -> TCP 연결 수립(3-Way-HandShaking) -> HTTP Request -> 서버 처리 -> HTTP Response -> 브라우저 렌더링 -> TCP 연결 종료(4-Way-HandShaking)
HTTP의 Request와 Response 구조는?
Response
- HTTP Method, URL, Protocol, Headers, Body
Request
- Status Code/Message, Protocol, Headers, Body
헤더 구조는?
General
생성된 날짜, 시간, Connection, 캐싱 정책 등
Request/Response
- Request : 호스트 명, 클라이언트 정보, 언어, 이전 페이지 URL
- Response : 서버 정보, 쿠키, 응답 본문의 인코딩 방식, CORS 정책 등
Entity
본문에 대한 타입, 길이, 언어, 인코딩 방식
HTTPS란 무엇인가요?
HTTP 프토토콜의 보완적 한계를 보완한 프로토콜
- TCP/IP의 443번 포트 사용
- SSL/TLS 프로토콜로 데이터 암호화 수행
- 암호화는 대칭키, 비대칭키 방식을 모두 사용
- 서버와 클라이언트의 대칭키를 비대칭키 방식으로 암호화해서 공유
- 이후, 대칭키를 사용해 데이터 송수신
- 데이터 무결성 검증 수행
- HMAC(TLS 1.2), AEAD(TLS 1.3) 등의 알고리즘 활용