WEB - 1에서
HTTP는 HTML 문서를 교환하기 위한 protocol이라는 것을
공부했습니다.

이제 HTTP의 구조와 핵심 요소에 대해 알아보겠습니다.

1. HTTP 통신 방식

  1. request / response 구조
    클라이언트가 request를 보내면
    서버는 response를 보냅니다.

  2. stateless
    HTTP 통신은 상태를 저장하지 않습니다.
    즉, 모든 통신은 독립적입니다.

요청이 오면 그에 응답을 할 뿐입니다.

2. Request

request는 크게 3부분으로 구성됩니다.

  1. start line
  2. headers
  3. body
  • start line
    해당 request가 무엇을 요구하는 요청인지 정의합니다.
    이 start line도 3부분으로 나뉘어져 있습니다.
    • HTTP Method
      GET, POST, OPTION 등
    • Request target
      request가 전송되는 uri
    • HTTP version
      HTTP의 버전, 1.0, 1.1, 2.0등
GET /search HTTP/1.1
  • headers
    request의 추가 정보를 담고 있습니다.
    Key:Value 구조로 되어 있습니다.
    예를 들어 다음과 같은 정보가 담겨 있습니다.

    Accept: */*
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Content-Type: application/json
    Content-Length: 257
    Host: google.com
    User-Agent: HTTPie/0.9.3

    자주 사용되는 header 정보들은 다음과 같습니다.

    • Host
      요청이 전송되는 target의 host url
    • User-Agent
      요청을 보내는 클라이언트의 대한 정보 예를 들어, 웹브라우저에 대한 정보.
    • Accept
      해당 요청이 받을 수 있는 response의 type
    • Connection
      해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지 할것인지 아니면 끊을것인지에 대해 지시하는 부분.
    • Content-Type
      해당 요청이 보내는 메세지 body의 type.
      예를 들어, JSON을 보내면 application/json.
    • Content-Length
      메세지 body의 길이.
  • body
    해당 request의 실제 내용입니다
    body가 없는 request도 많습니다.

3. Response

response도 3부분으로 나뉩니다.

  1. status line
  2. headers
  3. body
  • status line
    response의 상태를 보여줍니다.
    이 또한, 3부분으로 나뉩니다.

    • HTTP version
      HTTP의 버전
    • status code
      응답 상태를 나타내는 코드
    • status text
      응답 상태를 설명해주는 text
      HTTP/1.1 404 Not Found
  • headers
    response에 대한 추가정보를 담고 있습니다.

  • body
    response의 실제 내용입니다.