HyperText Transfer Protocol의 약자로, 데이터를 주고 받는 양식을 정의한 일종의 통신규약이다. 범용적인 양식을 가지고 있어 가장 널리 쓰이는 Protocol로, 모든 브라우저에서 HTTP를 지원한다.
HTTP는 클라이언트와 서버의 역할이 명확하게 구분되어 있다. 클라이언트 혹은 서버 측에서 Request(요청)
을 보내면, 반대편에서 Response(응답)
을 반환하는 구조이다. 서버와 클라이언트는 Response(응답)
을 보내고 나면, 해당 내용을 저장하지 않는다. 이러한 HTTP의 특성을 Stateless라고 부르며, 상태를 유지해야하는 경우 Cookie와 같은 기술을 사용한다.
클라이언트와 서버 사이에서 데이터가 전송되는 과정을 간략하게 정리하면 다음과 같다.
Request(요청)
한다.Request(요청)
를 가공한다.Response(응답)
로 반환하거나, Request(요청)
이 잘못되었을 경우 해당 내용을 Response(응답)
로 반환한다.Response(응답)
을 응용 프로그램(브라우저 등)을 통해 시각화한다.HTTP 통신은 TCP를 통해서 이루어지는데, 클라이언트와 서버는 TCP/IP 연결을 수행한다. TCP는 데이터의 신뢰성을 보장하며, 이를 통해 클라이언트와 서버는 원활한 데이터 통신이 가능한다.
HTTP 메세지는 HTTP 어플리케이션 간에 주고 받은 데이터를 의미한다. HTTP는 앞서 이야기했듯이, Request(요청)
와 Response(응답)
로 구분할 수 있다. HTTP 메세지는 3가지 부분으로 나뉜다.
Method | URL | Version |
---|---|---|
Get | /api/member | 1.1 |
Method
영역은 Request(요청)
의 종류를 나타내며 GET
, HEAD
, POST
, PUT
, TRACE
, OPTIONS
, DELETE
로 나뉜다. URL
영역은 요청한 URL의 값을 의미한다.Version
은 HTTP의 버전을 의미한다.Version | Status Code | Message |
---|---|---|
1.1 | 404 | NOT_FOUND |
Version
은 HTTP의 버전을 의미한다.Status Code
는 Request(요청)
에 대한 처리 결과를 의미한다.Message
는 Status Code
와 1대 1로 매칭되며, 사용자에게 요청에 대해 어떤 결과가 나타났는지 알려주기 위한 텍스트 구문이다.헤더는 HTTP Message Body
에 대한 부가적인 정보를 표현한다. 다양한 헤더가 존재하며, 인자로 생성한 시간을 표시하는 Date
, 종류를 나타내는 Content-Type
, 언어를 명시하는 Content-Language
등이 있다.
실질적으로 클라이언트나 서버에서 사용해야하는 데이터가 저장되는 부분이다.
HTTP 상태 코드에 대해 매우 잘 정리된 글이다.