정의
- HTTP(HyperText Transfer Protocol)은 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. (
HTTP는 클라이언트와 서버의 역할을 명확하게 구별하고 있다.
)
- 애플리케이션 레벨(응용 계층)의 프로토콜로 TCP/IP 위에서 동작한다.
- 무상태 프로토콜이며, Method, Path, Version, Headers, Body등으로 구성된다.
HTTP는 상태를 유지하지 않는 프로토콜
- 덕분에 서버의 CPU나 메모리 같은 리소스를 적게 사용할 수 있다.
- 인증이 필요한 애플리케이션에서는 상태관리가 필요하다.
- 이때 쿠키(Cookie)를 사용하여 상태를 유지할 수 있다.
Set-Cookie
헤더 필드에 쿠키를 보존한다.
리퀘스트 URI로 리소스를 식별
- 클라이언트는 리소스를 호출하는 요청을 보낼 때마다 리퀘스트 URI라고 불리는 형식으로 포함한다.
- 모든 URI를 리퀘스트 URI에 포함한다.
- Host 헤더 필드에 네트워크 로케이션을 포함한다.
인코딩으로 전송효율을 높인다.
지속연결로 접속량을 절약한다.
- 한 페이지에서 여러 이미지들을 로드할 때, TCP 통신을 여러번 해야해서 통신량이 늘어나게 된다. 이러한 문제를 해결하기 위해
지속 연결(Persistent Connections)이라는 방법을 고안했다.
- 지속연결은 오버헤드를 줄인만큼 리퀘스트와 리스폰스가 빠르게 완료되기 때문에 속도가 빨라진다.
- 여러 리퀘스트를 파이프라인화하여 리스폰스를 기다리지 않고, 여러 리퀘스트를 보낼 수 있다.