HTTP 구조

TopOfTheHead·2025년 10월 23일

컴퓨터네트워크

목록 보기
7/21

HTTP 구조

Http Request, Http Response의 구조로 구성.
Client브라우저를 통해 객체에 대한 HTTP Request MessageServer에 전송
Server는 해당 HTTP Request에 대한 객체Http Response Message에 포함하여 Client에게 응답

Http Message
HTTP Message의 종류는 RequestResponse로 구성

HTTP Message의 구조는 Request Line , Header ,Body로 구성
Header : HTTP Message에 관한 metadata를 포함.
Body : HTTP Message의 실제 Data를 포함.

HTTP Request Message

POST /api/index.html HTTP/1.1
Host: example.com
Content-Type: application/json // Data type 지정
Content-Length: 45
  //
{ 						 	//	 Http Request Body 부분
  "name": "홍길동",			
  "email": "hong@example.com"
}

JSON Data를 포함한 POST Request


HTTP Request Message 구조

  • Request line
    Method Field , URL Field , HTTP Version Field를 갖는다.
POST /api/index.html HTTP/1.1

POST : Http Method

/api/index.html : 요청할 객체Path name
URLPath name에 해당하는 객체Server저장장치에서 추출.

HTTP/1.1 : HTTP version

  • HTTP Header line
    HTTP Transaction에 필요한 모든 부가정보를 포함.
    HTTP Message Body에 대한 내용, 크기, 압축 정보 및 Request를 한 Client의 정보, Server 정보 등을 포함.
Host: example.com
Content-Type: application/json // Data type 지정
Content-Length: 45

Host : URLServer Host name을 지시
▶ 사전에 ClientServerHostTCP Connection를 구축하였으므로 해당 정보는 웹 프록시 캐시에서 사용

  • HTTP Header 종류

    • Accept :
      클라이언트요청서버로 부터 응답받길 원하는 Contents type을 설정하여 서버에 전달
      요청 헤더Accept : application/json으로 설정 시 데이터타입JSON으로 return.

    • User-Agent : Server에 요청하는 Client웹브라우저 정보

    • Accept-Language :
      HTTP Response Message 응답 시의 언어를 설정
      ex ) Accept-Language: en-US

    • Connection :
      keep-alive : HTTP Server에게 TCP Connection을 계속 유지할 것을 지시
      close : HTTP Response Message를 응답 후 TCP Connection을 종료하도록 지시

    • Server :
      HTTP Response Message가 만들어진 웹서버 정보를 전달
      EX ) Server : Apache/2.2.3 ( CentOS )

    • Content-Length : 송신되는 객체Byte를 지시

    • Content-Type : HTTP Message Body의 저장된 객체의 종류를 지시
      ex ) application/json , text/html , ....

    • Date : HTTP Message가 전송된 시각

    • Last-Modified : HTTP Response Body캡슐화객체가 마지막으로 수정된 시각

    • Set-Cookie :
      HTTP ResponseCookie Header Line
      HTTP Server에서 브라우저Cookie File식별번호를 저장하라고 지시

    • Cookie :
      HTTP RequestCookie Header Line
      브라우저Cookie File에서 Server에서 발급받은 식별번호를 참조 후 HTTP Request Message에 포함하여 전송

    • If-modified-since
      웹 캐시에 저장된 객체 사본Outdated 되었는지 검증을 위해 Origin Server객체 사본Last-Modified Date와 함께 HTTP Request Message에 포함하여 전송


  • HTTP Request Body
    ClientServerinput form을 전송 시 사용하는 영역

    POST , PUT , PATCH Request Method에서 주로 사용되며 JSON, XML 등의 Data를 포함하여 전송
    SpringController에서 @RequestBody를 통해 DTO 목적의 POJO로 변환되어 바인딩

    HTTP Request Body 없이도 URL Method를 통해 Request LineURL Field에서 Query String을 통해 input을 입력하여 전달할 수 있다.

    ex ) GET /api/animalsearch?monkey?banana HTTP/1.1
    monkeybanana를 입력값으로 전달

HTTP Response Message

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 55
{					// Http Response Body 부분
  "id": 1,
  "name": "홍길동",
  "email": "hong@example.com"
}

JSON 데이터를 포함한 200 OK Response


HTTP Response Message 구조

  • Status Line
    HTTP Version field , HTTP Status code field , Status Phrase field를 갖는다.
HTTP/1.1 200 OK

HTTP/1.1 : HTTP Version
200 : HTTP Status Code
OK : Status Phrase ( 짧은 Status Code 설명글 )

  • HTTP Header
Content-Type: application/json
Content-Length: 55
  • Http Response Body
    HTTP Server에서 HTTP ClientRequest한 자원을 캡슐화하여 포함하는 영역.
    GET , POST , PUT , DELETEResponse로 주로 사용되며 서버에서 클라이언트Form( HTML문서, 이미지, 영상 ) , JSON 등 byte로 표현가능한 모든 데이터가 전송이 가능.
profile
공부기록 블로그

0개의 댓글