웹 클라이언트가 웹 서버와 통신하는 방법을 정의한 요청-응답(Request-Response) 프로토콜
= OST 7계층 중 Application(L7)에 해당
하이퍼텍스트 링크를 사용해 웹페이지를 로드
웹 클라이언트와 웹 서버간의 통신 외에 다른 목적으로도 사용 가능
클라이언트 (Client)
- 웹 브라우저 등 서버로 요청을 보내는 대상
서버 (Server)
- 요청에 응답하여 데이터를 반환하는 대상
HTTPS 사용 이유
- HTTP 통신 시, 패스워스 등 주요 정보가 암호화 처리 되지 않아 평문 노출의 가능성이 높음
- public 서비스를 제공하는 웹페이지는 HTTPS 프로토콜을 사용하여 주요 정보를 암호화 처리함
비연결성 프로토콜 (Connectionless)
- 클라이언트가 요청하면 서버는 응답후 연결(Connection)을 끊음 (대부분의 요청은 서로 관련없이, 독립적임)
- 서버에선 연결을 유지할 필요가 있을 때만 유지하는 것이 비용적인 측면에서 유리함 (HTTP/1.1 에서 연결을 유지하는 기능 추가)
무상태성 (Stateless)
- 클라이언트와 서버의 통신이 끝나면, 상태 정보는 유지되지 않음
- 서버가 클라이언트에 대한 인증 작업을 계속 요구하게되면, 클라이언트 입장에서 번거로움
쿠키(Cookie)와 세션(Session)
- 비연결성으로 인해 비롯되는 무상태성의 단점을 보완
- Stateful할 필요가 있을 때 사용
쿠키 : 상태 정보를 클라이언트에 저장
세션 : 상태 정보를 서버에 저장
HTTP/0.9 (1991)
- 문서화된 최초의 HTTP
HTTP/1.0 (1996)
- 첫 상용화 버전, HTTP 파일 전송 가능
HTTP/1.1 (1997)
- 연결 유지, 호스트 헤더(하나의 IP로 여러 개의 DNS), 인증 절차 강화
-
HTTP/2.0 (2015)
- 사진, 동영상, JSON 파일 전송 가능
- HyperText, 즉 텍스트 형식을 전송하던 기존 방식에서 바이너리 형식으로 변환 (인코딩)하여 전송
HTTP/3.0 (2022.06.06)
- TCP/IP로 통신하던 이전 버전과 달리, UDP 기반의 QUIC 프로토콜을 사용하여 통신
UDP (User Data Protocol)
- TCP보다 속도가 빠르고, 용량이 가벼움 / But, 데이터 신뢰성을 보장하지 않음
= 유튜브, 넷플릭스 등 미디어 서비스에서 주로 사용