네트워크/HTTP

HTTP 메시지 구조

필리힐리 2021. 8. 13. 16:53

https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

 

HTTP 메시지 - HTTP | MDN

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다. 요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지

developer.mozilla.org

 

https://gmlwjd9405.github.io/2019/01/28/http-header-types.html

 

[Network] HTTP 헤더의 종류 및 항목 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

구조

HTTP 메시지는 크게 3 부분으로 구성되어있다.

  • start line
  • headers
  • body

 

리퀘스트

리퀘스트 헤더

 

1. Start Line

POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0

GET /petbreedding/ HTTP/1.1

  • HTTP 메서드
    해당 리퀘스트에 들어가는 ACTION이 들어간다 주로 GET or POST
  • 타겟 URI
    주로 URL, 또는 프로토콜, 포트, 도메인의 절대 경로가 나타난다.
  • HTTP 버전
    HTTP 버전이 들어간다.

 

2. Headers

Host: 112.221.156.36:8090
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://112.221.156.36:8090/petbreedding/
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: JSESSIONID=6483986F820A21C3735A9FBC6B4992CF

 

  • Host
    요청이 전송되는 target의 host url: 예를 들어, naver.com
  • Connection
    해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지 할것인지 아니면 끊을것인지에 대한 정보
  • Cache-Control
    캐쉬를 어떻게 사용할지에 대한 정보
  • User-Agent
    클라이언트 소프트웨어(브라우저, OS) 명칭 및 버전 정보
  • Accept
    어떤 타입을 응답(response) 받을 수 있는지에 대한 정보
    위 예시에선 text/html을 응답 받을 수 있다고 명시되어있고 언어는 한국어 영어, 인코딩은 ezip, deflate
  • Referer
    바로 직전에 머물렀던 URL 주소
  • Cookie
    서버에 의해 Set-Cookie로 클라이언트에게 설정된 쿠키 정보

 

3. body

GET 방식은 본문이 없는 경우가 많다.

본문은 두가지로 나눌 수 있는데

  • 단일-리소스 본문(single-resource bodies)
    헤더 두 개(Content-Type와 Content-Length)로 정의된 단일 파일로 구성
  • 다중-리소스 본문(multiple-resource bodies)
    여러개의 파트로 구성되며 파트마다 다른 정보를 지니게 됩니다. 보통 HTML 폼과 관련이 있습니다.

 

리스폰스

리스폰스 헤더

 

1. Start Line

HTTP/1.1 200

  • HTTP 버젼
  • Status code: 응답 상태를 나타내는 코드. 숫자로 되어 있는 코드.
    예를 들어, 200
  • Status text: 응답 상태를 간략하게 설명해주는 부분.
    예를 들어, "Not Found"

2. Headers

  • 리퀘스트와 동일

3. body

Content-Type: text/html;charset=UTF-8
Content-Language: ko-KR
Content-Length: 8040
Date: Fri, 13 Aug 2021 07:07:36 GMT
Keep-Alive: timeout=20
Connection: keep-alive

 

세 부분으로 나눌 수 있다.

  • 단일-리소스 본문 (길이 정보 있음)
    헤더 두개(Content-Type와 Content-Length)
  • 단일-리소스 본문 (길이 정보 없음)
    Transfer-Encoding chunked로 설정되어 있으며, 파일은 청크로 나뉘어 인코딩 되어 있다.
  • 서로 다른 정보를 담고 있는 멀티파트로 이루어진 다중 리소스 본문
    흔하지 않다.

'네트워크 > HTTP' 카테고리의 다른 글

REST API  (0) 2021.08.20
상태코드  (0) 2021.08.18
HTTP의 기본 구조  (0) 2021.08.12
프로토콜  (0) 2021.08.11
OSI 계층 설명  (0) 2021.03.02