관리 메뉴

개발하는 동그리

[네트워크] HTTP Messages 본문

IT 정보/Spring

[네트워크] HTTP Messages

개발하는 동그리 2022. 6. 5. 20:34
반응형

HTTP는 Hyper Text Transfer Protocol의 줄임말로, HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜이다. HTTP는 웹 브라우저와 웹 서버의 소통을 위해 디자인되었고 클라이언트- 서버 모델에서 클라이언트가 HTTP Message 양식에 맞춰 요청을 보내면 서버에서도 양식에 맞춰 응답한다. 그리고 HTTP는 특정 상태를 유지하지 않는 특징이 있다. 

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


HTTP Messages

HTTP messages는 클라이언트와 서버 사이에서 데이터가 교환되는 방식으로 2가지 유형이 있다. 그리고 몇 줄의 텍스트 정보로 구성되는데 구성파일, API, 기타 인터페이스에서 HTTP messages를 자동으로 완성하기 때문이다. 

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

요청과 응답은 아래와 같은 구조를 가지는데, 여기서 start line , HTTP headers를 묶어 응답의 head라고 부르고, payload는 body라고 이야기한다. 

  1.  start line 은 요청이나 응답의 상태를 나타내고, 항상 첫 번째 줄에 위치한다. 응답은 ( Status line )이라 부른다.
  2. HTTP headers는 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더 집합이다. 
  3. empty line 은 헤더와 본문을 구분하는 빈 줄이다.
  4. body는 요청, 응답과 관련된 데이터 또는 문서를 포함한다. 

요청 ( Requests )

start line

  1. 수행할 작업(GET, PUT, POST)이나 방식(HEAD or OPTIONS)을 설명하는 HTTP method를 나타낸다. 예를 들어 GET method는 리소스를 받아야 하고, POST method는 데이터를 서버로 전송한다. 
  2. 요청 대상 ( 일반적으로 URL이나 URI ) 또는 프로토콜, 포트, 도메인의 절대 경로는 요청 콘텍스트에 작성된다. 이 요청 형식은 HTTP method 마다 다르다. 
    • origin 형식
    • absolute 형식
    • authority 형식
    • asterisk 형식

응답 ( Response )

Status line

응답의 첫 줄을 Status line라고 부른다.

  • 현재 프로토콜의 버전 ( HTTP/1.1)
  • 상태 코드 - 요청의 결과를 나타낸다. ( 2xx, 3xx, 4xx)
  • 상태 텍스트 - 상태 코드에 대한 설명

Status line은 HTTP/1.1 404 Not Found.로 예를 들 수 있다.

요청 메서드  /   요청 대상 (절대 경로) /   HTTP Version
GET /search?q=hello&hi=ko / HTTP/1.1

HTTP Version  /   상태 코드(Status code) / 이유 (간략한 내용)
HTTP/1.1 200 OK  

 

Header

요청의 Headers는 기본 구조를 따른다. Header 에는 전송에 필요한 모든 부가정보를 가지고 있다. 

  • 메시지 바디의 내용
  • 메시지 바디의 크기
  • 압축
  • 인증
  • 요청 클라이언트 정보
  • 캐시정보
  • 서버 애플리케이션 정보
field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용)
Host: www.google.com  

 

Body

요청의 본문은 HTTP messages 구조의 마지막에 위치한다. 모든 요청에 body가 필요하지는 않다. 
GET, HEAD, DELETE, OPTIONS와 같이 서버에 리소스를 요청하는 경우에는 본문이 필요하지 않다.
POST, PUT과 같은 일부 요청은 데이터를 업데이트하기 위해 사용한다. 

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

  • Single-resource bodies ( 단일 - 리소스 본문 )
  • Multiple-resource bodies ( 다중 - 리소스 본문 )

 

응답의 본문은 HTTP messages 구조의 마지막에 위치한다. 요청에서와 마찬가지로 모든 응답에 body가 필요하지 않다. 

  • Single-resource bodies ( 단일 - 리소스 본문 )
  • Multiple-resource bodies ( 다중 - 리소스 본문 )

 

Stateless ⭐⭐⭐⭐ ( 무상태성이 HTTP의 큰 특징 )

말 그래도 상태를 가지지 않는다는 뜻으로 HTTP로 클라이언트와 서버가 통신을 주고받는 과정에서 HTTP가 클라이언트나 서버의 상태를 확인하지 않는다.예를 들어 사용자가 쇼핑몰에 로그인해서 상품을 클릭하고 페이지를 이동하고 상품을 장바구니에 담는 등 행위를 HTTP 통신이 추적하지 않으며, 장바구니에 담는 경우에만 상품을 저장하면 된다. HTTP는 통신 규약일 뿐이므로 상태를 저장하지 않고 쿠키-세션이나 API를 통해 상태를 확인할 수 있다.

반응형

'IT 정보 > Spring' 카테고리의 다른 글

[네트워크] HTTP 상태 코드  (13) 2022.06.07
[네트워크] SPA(Single Page Application) : AJAX  (8) 2022.06.05
[네트워크] Stateful & Stateless  (18) 2022.06.05
[네트워크] TCP/IP & UDP  (2) 2022.06.05
[네트워크] URL / URI  (4) 2022.06.05