HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
현대 웹에서 이루어지는 모든 데이터 교환의 기초이자 클라이언트-서버 프로토콜이기도 하다. 클라이언트-서버 프로토콜이란 수신자(서버) 측에 의해 요청이 초기화 되는 프로토콜을 의미한다.
클라이언트에서 서버로 전송하는 메세지를 request(요청) 이라고 부르며, 반대로 서버에서 클라이언트에게 전송하는 메세지를 response(응답)이라고 한다.
흔히 브라우저가 클라이언트 역할을 맡게 된다. 웹 페이지를 표시하기 위해, 브라우저는 페이지의 HTML 문서를 가져오기 위한 요청을 서버에 전송한 뒤, 파일을 분석하여 실행해야 할 스크립트와 페이지 내 포함된 하위 리소스들(이미지, 비디오 등)과 레이아웃 정보(CSS) 같은 것들을 가져온다. 이후 브라우저는 완전한 웹 페이지를 표시하기 위해, 받아온 여러 리소스들을 혼합한다.
클라이언트의 반대편에서 클라이언트 요청에 대한 응답으로 문서를 반환한다.
클라이언트와 서버 사이에는 수 많은 컴퓨터와 머신이 HTTP 메세지를 이어 받고 전달한다. 이런 컴퓨터와 머신들 중 애플리케이션 계층에서 동작하는 것들을 일반적으로 프록시라고 부른다. 프록시는 다음과 같은 다양한 기능들을 수행할 수 있다.
HTTP 메세지에는 요청과 응답이 있다.
요청은 다음과 같은 구조를 가진다.
GET
, POST
, PUT
, PATCH
, DELETE
등이 있다.http://
), 도메인(developer.mozilla.org
), 또는 TCP포트(:80
)를 제외한 리소스의 URL을 의미한다.Content-Type
헤더를 사용하여 text/html, JSON, XML 같은 요청 또는 응답의 유형을 나타낼 수 있다. 또한 User-Agent
라는 헤더는 요청을 하는 클라이언트를 식별한다. 이 외에도 많은 부가 정보들을 나타내는 헤더가 존재하며, 사용자 정의에 따라 필요한 헤더를 추가하여 사용할수도 있다.응답은 다음과 같은 구조를 가진다.
참고