HTTP

최경락 (K_ROCK_)·2021년 12월 24일
0
post-thumbnail

HTTP 란?

  • HyperText Transfer Protocol 의 줄임말이다.
  • HTML 같은 문서를 전송하기 위한 Application Layer의 프로토콜이다.
    (OSI 7 Layer)
  • 특징으로는 무상태성이 있다.
    HTTP 는 통신을 주고받는 프로토콜 일 뿐이므로, 클라이언트나 서버의 상태를 저장하지 않는다.

HTTP Message

  • 클라이언트 - 서버 모델에서 데이터가 서로간에 교환되는 방식을 이야기한다.
  • HTTP Message 는 두가지 유형이 있으며 각각 요청(Request)응답(Response)으로 나뉜다.

출처 - MDN

  • HTTP Message 는 비슷한 구조를 가지고 있으며, 구조는 아래와 같다.
    1. start line(status line)
      • 요청과 응답의 상태를 나타내며, 응답에서는 status line 이라고 이야기한다.
    2. HTTP headers
      • 요청에 대한 설명이나 본문의 내용에 대한 설명이 작성된다.
    3. empty line
      • 헤더와 본문을 구분하여, 요청에 대한 모든 정보가 전송되었음을 알린다.
    4. body
      • 요청과 관련된 데이터나, 응답과 관련된 데이터나 문서를 포함한다.
  • 여기서, start lineheader 를 묶어 요청 및 응답의 head 라고 이야기하며, bodypayload 라고 이야기한다.
    payload : 전송의 근본적인 목적이 되는 데이터, 즉 나에게 필요한 데이터 만을 뜻한다.

요청(Request)

  • 요청은 클라이언트가 서버에게 전달하는 메시지이다.

start line

  • 상단의 예제에서 가장 위에 쓰여져 있는 한 줄 이다.
    → 위에서 / 는 기본 홈페이지의 주소를 뜻한다.
  • HTTP 메소드요청하는 대상, HTTP 버전을 함께 작성한다.
  • HTTP 메소드를 작성하여 수행할 작업을 전달한다.
  • 요청대상으로는 주로 URL이 사용되지만, 프로토콜이나 포트, 도메인의 절대경로로도 사용될 수 있다.
    • origin 형식 : ? 와 쿼리가 붙는 절대 경로이며, POST, GET, OPTION, HEAD 등의 메소드와 함께 사용한다.
      HEAD /test.html?query=alibaba HTTP/1.1
    • absolute 형식 : 완전한 URL의 형식을 가지며, GET과 주로 사용한다.
      GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
    • autority 형식 : 도메인 이름과 포트 번호로 이루어진 URL을 사용하며, CONNECT 와 함께 사용한다.
      CONNECT developer.mozilla.org:80 HTTP/1.1
    • asterisk 형식 : **OPTIONS 을 사용하며, 서버 전체를 표현**한다.
      → `OPTIONS
      HTTP/1.1`
  • HTTP 버전에 따라 메시지의 구조가 달라지므로 버전을 함께 명시하여야 한다.
    → 현재는 1.1 버전이 가장 많이 사용된다.

HTTP headers

  • start line 밑부터 empty line 까지의 내용을 이야기한다.
  • 헤더 이름과 콜론을 이용하여 값을 입력한다.
    Host : localhost:8000
  • 각각 Request Header, General Header, Representation Header 로 나뉜다.
    • Request Header : 가져올 데이터나 클라이언트 자체의 정보를 포함하는 헤더.
    • General Header : 메시지 전체에 적용되는 헤더.
    • Representation Header : body에 담긴 리소스의 정보를 포함한다.

body

  • 요청의 본문이며, POSTPUT 처럼 데이터를 업데이트 하는 경우body가 포함된다.
  • 리소스를 서버에서 받아오기만 하는 경우에는 필요하지 않다.
    GET, HEAD, DELETE, OPTIONS
  • 단일-리소스 본문(single-resource bodies)다중-리소스 본문(multiple-resource bodies) 로 나뉜다.

응답(Response)

  • 서버가 클라이언트에게 보내는 리소스를 이야기한다.

status line

  • 가장 상단의 한 줄을 이야기하며, 프로토콜의 버전, 상태코드, 상대 텍스트를 포함한다.
  • HTTP/1.1 404 Not Found. 와 같은 형태를 가진다.
    → 상태코드와 텍스트는 https://developer.mozilla.org/ko/docs/Web/HTTP/Status 를 참조
  • 각각 Response Header, General Header, Representation Header 로 나뉜다.
    • Response Header : 위치 혹은 서버에 대한 정보 같은 응답에 대한 부가적인 정보를 갖는다.
    • General Header : 메시지 전체에 적용되는 헤더.
    • Representation Header : body에 담긴 리소스의 정보를 포함한다.

body

  • 응답의 본문이며, 요청과 동일하게 body 가 항상 필요하지는 않다.
    → 왠만하면 넣는다.
  • 상태 코드201, 204 인 경우 body가 필요하지 않다.
    201 Created, 204 No Content (만들거나, 리소스가 없을 때)
  • 단일-리소스 본문(single-resource bodies)다중-리소스 본문(multiple-resource bodies) 로 나뉜다.

0개의 댓글