[HTTP] HTTP Request & Response 메시지 구조

반응형
반응형

* 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.

* 지속적으로 내용을 수정해 나갈 예정입니다.

 

_reference

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

인프런 - 모든 개발자를 위한 HTTP 웹 기본 지식 (김영한 강사님)

 

_contents

#1 HTTP란?

#2 HTTP Message Structure

#3 HTTP Response & Request Message


#1 HTTP란?

HTTP(HyperText Transfer Protocol)HTML 문서를 전송하기 위해 고안된 프로토콜(규약) 이다.

그러나 최근에는 HTML 문서 파일 뿐 만 아니라 텍스트, 이미지, 음성, JSON 파일 등 거의 모든 형태의 데이터를 전송할 수 있도록 발전하였다.

또한 서버와 서버 혹은 서버와 클라이언트 사이에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다.

HTTP1.1과 HTTP2는 TCP 기반으로 HTTP3는 UDP 기반으로 구성되어 있다.

 

Request & Response

HTTP는 기본적으로 Request(요청)/Response(응답)의 구조로 구성되어 있다. Client가 Server로 Request를 보내면 Server는 Client로 Request에 대한 Response(응답)을 보낸다.

즉, Request는 Client가 Server로 보내는 정보이고 Response는 Client의 Request에 대한 Server의 대답 이라고 볼 수 있다.


#2 HTTP Message Structure

HTTP Message의 전체적인 구조는 다음과 같다. HTTP 메시지는 ASCII로 인코딩된 텍스트 정보이며 여러 줄로 되어 있다.

HTTP Message는 Request MessageResponse Message로 구분된다.

ref - https://tools.ietf.org/html/rfc7230#section-3


#3 HTTP Response & Request Message

* start-line

start-line = request line(요청) / status line(응답)

start-line은 request linestatus line으로 나뉘며 Request Messagerequest lineResponse Messagestatus line을 가진다.

 

"request line"

[구조] request-line = HTTP method SP(공백) request-target SP HTTP-version CRLF(ENTER)

request-line은 CRLF(ENTER)를 제외하고 세 가지 요소로 구성되어 있다.

 

첫 번째 요소HTTP method로 서버가 수행해야 할 동작을 나타낸다.

HTTP method로는 GET PUSH DELETE POST ..  등이 있으며 GET은 리소스를 클라이언트로 조회해 달라는 뜻이며 POST는 요청 내역을 처리해 달라는 의미이다.

두 번째 요소request-target 으로 주로 URL, PORT, 도메인 등이 붙는 절대경로이다.

절대경로 = "/"로 시작하는 path

세 번째 요소HTTP-version 으로 Request Message에서 사용 해야 할 HTTP의 버전을 나타내어 준다.

 

"status line"

[구조] status-line = HTTP-version SP status-code SP reason-phrase CRLF(ENTER)

Request Message에서의 start-line(status line) 마찬가지로 세 가지 요소로 구분된다.

 

첫 번째 요소HTTP-version으로 HTTP의 버전을 나타낸다.

두 번째 요소status-code로 요청의 성공 혹은 실패를 나타낸다. 예를 들어 HTTP 상태코드 200은 성공 400은 클라이언트 요청에 에러가 발생했다는 뜻이다.

세 번째 요소reason-phrase로 사람이 이해할 수 있는 간단한 문구를 적어준다.

 

* HTTP header

[구조] field-name “:” OWS field-value OWS (OWS: 띄어쓰기 허용)

HTTP header에는 HTTP 전송에 필요한 모든 부가정보가 들어있다. ex) content-type , content-length

field-name은 대소문자를 구분하지 않으며 다음에 콜론(:)이 오고 field-value 값이 주어진다.

 

* Empty Line (CRLF)

공백 라인이다.

 

* Message Body

실제로 전송할 데이터가 들어간다. HTML 문서, 영상, 이미지, JSON 등 byte로 표현 가능한 모든 데이터를 전송할 수 있다.


반응형

댓글

Designed by JB FACTORY