네트워크와 CS

22일차 개발일지 HTTP 구조와 핵심 요소 #1

Sophie소피 2021. 11. 3. 08:53

1. HyperText Transfer Protocol HTTP란? 

하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약).

즉 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은

"통신 형식" 혹은 "통신 구조" 


프론트앤드 서버와 클라이언트간의 통신에 사용

백앤드와 프론트앤드 서버간에의 통신에도 사용

 

HTTP는 TCP/IP 기반

 

2. HTTP 핵심 요소

 HTTP 통신 방식은 어떻게  될까? 

HTTP 기본적으로 요청/응답 (request/response) 구조
클라이언트가 HTTP request를 서버에 보내면

서버는 HTTP response를 보내는 구조.
클라이언트와 서버의 모든 통신이 요청과 응답

 

HTTP는state(상태)를 저장하지 않는 Stateless 이다.

즉, 요청이 오면 그에 응답을 할뿐, 여러 요청/응답 끼리 연결되어 있지 않다는 뜻이다.

즉 각각의 요청/응답은 독립적인 요청/응답 이다.

예를 들어, 클라이언트가 요청을 보내고 응답을 받은후,

조금 있다 다시 요청을 보낼때, 전에 보낸 요청/응답에 대해 알지 못한다는 뜻이다.
그래서 만일 여러 요청과응답 의 진행과정이나 데이터가 필요할때는

쿠키나 세션 등등을 사용한다. 

 HTTP Request 구조에 대해 알아보자 

HTTP request 메세지

  • start line
  • headers
  • body

 

about Start Line

말 그대로 HTTP request의 첫 라인
HTTP request의 start line또한 3부분으로 구성되어 있음.

  • HTTP Method
    해당 request가 의도한 action을 정의하는 부분.
    HTTP Methods에는 GET, POST, PUT, DELETE, OPTIONS 등등이 있다.
    주로 GET 과 POST과 쓰임.
  • Request target
    해당 request가 전송되는 목표 uri.
    예를 들어 /login.
  • HTTP Version
    말 그대로 사용되는 HTTP 버젼. 버젼에는 1.0, 1.1, 2.0 등이 있다.

 

about Headers

해당 request에 대한 추가 정보(addtional information)를 담고 있는 부분.
예를 들어, request 메세지 body의 총 길이 (Content-Length) 등.

Key:Value 값으로 되어있다 (: 이 사용됨).
key:value
HOST: google.com => Key = HOST, Value = google.com

Headers도 크게 3부분으로 나뉘지만(general headers, request headers, entity headers)

 

자주 사용되는 header 정보

  • Host
    요청이 전송되는 target의 host url: 예를 들어, google.com
  • User-Agent
    요청을 보내는 클라이언트의 대한 정보: 예를 들어, 웹브라우저에 대한 정보.
  • Accept
    해당 요청이 받을 수 있는 응답(response) 타입.
  • Connection
    해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지 할것인지 아니면 끊을것인지에 대해 지시하는 부분.
  • Content-Type
    해당 요청이 보내는 메세지 body의 타입. 예를 들어, JSON을 보내면 application/json.
  • Content-Length:
    메세지 body의 길이.

about Body

해당 reqeust의 실제 메세지/내용.
Body가 없는 request도 많다.
예를 들어, GET request들은 대부분 body가 없는 경우가 많음.