twocowsong

[모든 개발자를 위한 HTTP 웹 기본 지식 - 13] 본문

IT/HTTP

[모든 개발자를 위한 HTTP 웹 기본 지식 - 13]

WsCode 2022. 1. 22. 16:14

HTTP 메세지


HTTP 메세지의 구조는 그림과 같다. 시작라인, 헤더, 공백(무조건 있어야함), body로 구성되어있다.


예)HTTP 요청 메시지를 보면 GET 방식의 /search?q=hello&hl=ko로 path 가 구성되어 있으며 HTTP1.1 프토로콜로 시작라인 구성되어있으며 헤더정보, 공백, Body(그림에는 없음)로 구성되어있다.


응답메세지에서는 시작라인이 다르다. HTTP1.1 프로토콜이나오고 200 OK (뒤에 자세히 다루겠습니다.)가 나온뒤 헤더값이 출력, 후 공백라인이 무조건 나오며 메시지 바디 영역이 나옵니다.


응답메세지는 RFC 공식 스펙에도 자세히 나와있습니다.

이제 각각 라인에 대해서 자세히 보겠습니다.


시작 라인(start-line)은 request-line, status-line으로 구성되어있습니다.

request-line 구성
1. request-line : method(post, get 등등..)
2. request-target : path (Query String)
3. HTTP-version : HTTP1.1 , h2, h3

method : GET,POST,PUT,DELETE. 서버가 수행해야할 동작 지정.
request-target : 절대경로[?쿼리] , 절대경로 = "/"로 시작하는 경로
ex) https://www.google.com/search?q=hello&hl=ko URL에서 /search?q=hello&hl=ko가 요청경로(request-target)입니다.


응답 메세지의 시작라인은 status-line로 구성되어있습니다.
status-line 구성
1. HTTP-version
2. status-code : 상태코드, 클라이언트의 요청의 처리결과를 코드로 리턴
예) 200 : 정상적으로 성공, 400 : 클라이언트의 잘못된 요청, 500 : 서버의 장애 문제
3. reson-phrase : 사람이 읽을수있는 짧은 문장


헤더필더는 field-name 과 :이 들어가고 OWS, field-value가 들어갑니다.

HTTP헤더의 정보는 메시지 바디의 정보 빼고 모든 메타정보가 다들어있다고 생각하시면됩니다.


마지막으로 메세지 바디가있습니다.