네트워크 - HTTP 메시지 구조

HTTP 메시지 구조

HyperText Transfer Protocol 의 약자로 HTML 문서를 전송하기 위해 만들어진 규약조건이다.
HTTP는 TCP/IP 기반으로 되어있다.

HTTP 통신 방식

HTTP는 기본적으로 요청/응답 구조

Client 요청 Message

Json 데이터

curl –http1.1 http://localhost:8888/greeting -v -H “Content-Type: application/json” -d ‘{“hello”:”json”}’

POST /greeting HTTP/1.1
Host: localhost:8888
Accept: */*
Content-Length: 16
Content-Type: application/json
User-Agent: curl/7.71.1

{"hello":"json"}

Multipart Form 데이터

curl –http1.1 http://localhost:8888/greeting -v -F ‘file=/Users/dongwoo-yang/Desktop/alliance-point.png’

POST /greeting HTTP/1.1
Host: localhost:8888
Accept: */*
Content-Length: 185
Content-Type: multipart/form-data; boundary=------------------------d3aa01d8dc675444
User-Agent: curl/7.71.1

--------------------------d3aa01d8dc675444
Content-Disposition: form-data; name="file"

/Users/dongwoo-yang/Desktop/alliance-point.png
--------------------------d3aa01d8dc675444--

Server 응답 message

HTTP/1.1 200 OK
Date: Wed, 05 Jan 2022 03:04:44 GMT
Content-Length: 32
Content-Type: text/html; charset=utf-8

<html><body>Hello</body></html>

HTTP Request 구조

  • Start Line
  • Header
  • Body

Start Line

POST /greeting HTTP/1.1
  • Http Method
    • request가 의도한 action을 정의하는 부분
    • Http Method 종류는 GET , POST , PUT , DELETE , PATCH , OPTIONS 등등이 있다.
  • Request Target
    • Http 요청이 전송되는 주소(URI)
    • Controller (Handler) 주소라고 생각하면 된다.
  • HTTP Version
    • HTTP Version을 명시한다.
    • 1.1을 가장 많이 사용하고 1.0 , 1.1 , 2.0 , 3.0 이 있다.

Key:Value 형태로 구성돼 있다.

Host: localhost:8888
Accept: */*
Content-Length: 16
Content-Type: application/json
User-Agent: curl/7.71.1
  • Content-Type
    • 파일의 종류를 지정
    • 보통은 MIME 타입(전자 메일을 위해 만들어진 식별자)이라는 식별자를 기술
  • Content-Length
    • 바디의 크기
    • 압축이 이루어지는 경우는 압축 후의 크기
  • Content-Encoding
    • 압축이 이루어진 경우 압축 형식을 설명한다.
  • User-Agent
    • 클라이언트가 자신의 애플리케이션 이름을 넣는 곳
    • 브라우저의 종류나 버전을 구분할 수 있다.

Body

헤더 끝에 빈 줄 을 넣으면 그 이후는 모두 바디가 된다.

Host: localhost:8888
Accept: */*
Content-Length: 185
Content-Type: multipart/form-data; boundary=------------------------d3aa01d8dc675444
User-Agent: curl/7.71.1

--------------------------d3aa01d8dc675444
Content-Disposition: form-data; name="file"

/Users/dongwoo-yang/Desktop/alliance-point.png
--------------------------d3aa01d8dc675444--
Share