CS 공부/네트워크

[네트워크] HTTP란? + HTTP messages (Request & Response)

jungha_k 2022. 10. 4. 21:37

 

HTTP? : HyperText Transfer Protocol

Application Layer프로토콜 (HTML과 같은 문서들을 전송)

* 프로토콜 = 통신 규약, 체계

 

웹 브라우저와 웹 소통을 위해 디자인 됨

클라이언트가 HTTP messages 양식에 맞춰 요청을 보내면, 서버도 HTTP messages 양식에 맞춰 응답한다!


HTTP messages :
클라이언트와 서버 사이에서 데이터가 교환되는 방식

https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages

  • 요청(Requests)
  • 응답(Responses)

요청 / 응답 messages 모두 유사한 구조를 지니고 있다.

 

1. start line : 요청, 응답의 상태를 나타냄 (응답 : status line)

2. HTTP headers : 요청 지정, 메시지 포함 본문 설명하는 헤더의 집합

3. empty line : 헤더 ~ 본문 구분하는 빈 줄

4. body : 요청과 관련된 데이터 or 응답과 관련된 데이터, 문서 ...

 


1 + 2 = 헤드 (head)

4 = payload

 


HTTP messages의 구조

요청(Requests)

 

 

1.  Start Line (사진에서는 POST / HTTP / 1.1에 해당)

 

(1) HTTP method (GET / POST / PUT ...)

(2) 요청 대상, 프로토콜, 포트, 도메인의 절대 경로 (1)에 따라 달라짐

(3) HTTP 버전

 

 

2. Headers

'헤더이름 : 어쩌구' 방식을 따름

값은 헤더에 따라 다르다.

 

헤더 종류 :

(1) Request headers : fetch를 통해 가져올 리소스, 클라이언트 자체에 대한 자세한 정보 포함
(2) General headers : 메세지 전체에 적용
(3) Representation headers : (=Entity headers) body에 담긴 리소스의 정보 포함

 

 

3. Body

* 모든 요청에 body가 필요하지는 않다.

ex) GET, HEAD, DELETE, OPTIONS.. - 서버에 리소스 요청하는 경우는 body 필요 X

 

Body 종류 : 

(1) Single-resource bodies (단일-리소스 본문) : 헤더 두 개로 정의됨

(2) Multiple-resource bodies (다중-리소스 본문) : 여러 파트로 구성 - 각 파트마다 다른 정보 有

 


응답(Responses)

 

1. Status Line

 

(1) 현재 프로토콜의 버전 (HTTP/1.1)

(2) 상태 코드 - 요청의 결과 (200, 404, 500 ...)

(3) 상태 텍스트 - 상태 코드에 대한 설명

 

 

2. Headers

 

헤더 종류 

(1) General headers : 메세지 전체에 적용되는 헤더

(2) Response headers : 위치, 서버 자체에 대한 정보(이름, 버전 등)

(3) Representation headers : (=Entity headers), body에 담긴 리소스의 정보

 

 

3. Body

* 201, 204같은 상태코드의 응답에는 본문 필요 X

 

바디 종류

(1) Single-resource bodies(단일-리소스 본문) : 두 개의 헤더로 정의됨

(2) Multiple-resource bodies(다중-리소스 본문) : 서로 다른 정보를 담고 있는 body

 


HTTP의 특징 : 무상태성(Stateless)

= 상태를 가지지 않는다!

 

클라이언트-서버 통신 과정에서, HTTP가 클라이언트나 서버의 상태를 확인하지 않는다.

몇 번 요청+응답을 주고받는지, 몇 번 성공했는지 등 상태를 저장하지 않음

그저 요청-응답 여부만 보여질뿐..