web HTTP 요청-응답 메시지 구조

1 minute read

HTTP 통신의 특징

HTTP 요청 메시지 구조

  • 요청 메시지는 세 부분으로 구성되어 있다
    • **1) Start Line (요청 내용) **
      • HTTP 메소드 / Request target / HTTP version
    • 2) Header
    • 3) Body
  • 요청 내용과 헤더 필더는 마지막에 빈줄로 끝나야 한다 (<CR> <LF> 외에 다른 whitespace가 있어서는 안됨!)

  • HTTPie 로 터미널에 HTTP 요청을 보냄

http-1

1) Start Line 요청 내용

  • HTTP 메소드 / Request target / HTTP version

    • HTTP 메소드 : 요청의 의도를 담고 있음 ex) GET, POST
    • Request target : HTTP 요청이 전송되는 목표 주소
    • HTTP version : 버전에 따라 요청 메시지 구조나 데이터가 다를 수 있어서, version을 명시

2) Header 헤더

  • HTTP 요청 그 자체에 대한 정보를 담고 있다

  • 파이썬의 딕셔너리 자료형처럼 key : value 로 이루어져 있다

  • 헤더 정보

    • Host : 요청이 전송되는 target의 호스트 URL 주소
    • User-Agent : 요청을 보내는 클라이언트의 정보 ex 웹 브라우저의 정보
    • Accept
      • 해당 요청이 받을 수 있는 응답 body 데이터 타입의 정보
      • 모든 타입을 허용하는 경우 */*로 지정
      • MIME type : Multipurpost Internet Mail Extensions (ex. application/json)
    • Connection
      • 해당 요청이 끝난 후에 클라이언트와 서버간의 연결을 계속 유지할 것인지 끊을 것인지 알려주는 헤더
      • HTTP 요청 때마다 네트워크 연결을 새로 만드는 건 번거롭기 때문에 요청이 계속되는 한 처음 연결을 재사용하는 것이 바람직
      • keep-alive : 네트워크 연결을 유지해라
      • close : 더이상 요청을 보내지 않으니 연결을 닫아라
    • Content-Type
      • HTTP 요청이 보내는 메시지 body 타입을 알려줌
      • MIME type
    • Content-Length : 요청이 보내는 메시지 body의 총 사이즈 정보

3) Body

  • HTTP 요청이 전송하는 데이터를 담고 있는 부분
  • 전송하는 데이터가 없다면 body 부분은 비어있다 (위 사진의 경우, Body가 없음)

HTTP 응답 메시지 구조

  • 응답 메시지 또한 세 부분으로 구성되어 있다
    • **1) Status Line **
      • HTTP version / Status Code / Status Text
    • 2) Header
    • 3) Body

http-2

1) Status Line

  • HTTP version / Status Code / Status Text
    • HTTP version
    • Status Code
      • 응답 상태를 나타내는 코드 (ex.200 요청 정상 처리)
    • Status Text
      • 응답 상태를 간략하게 글로 설명해줌 (ex. OK)

2) Header

  • HTTP 요청 메시지의 헤더와 동일
  • 단 User-Agent 헤더 대신 Server 헤더가 사용됨

3) Body

  • HTTP 요청 메시지의 body와 동일
  • 전송하는 데이터가 없으면 비어 있음

더보기

Categories:

Updated:

Comments