TIL: 31일차 "HTTP"

mr.ginger·2021년 5월 6일

HTTP란?

우리가 웹사이트의 주소(url)을 입력할때 항상 먼저 입력 되는 문자열이 바로 http이다.
이 http가 무슨뜻이고, 왜 항상 맨 앞쪽을 차지하고 있을까?

http는 Hyper Text Transfer Protocol 혹은 Hyper TexT Protocol의 약자로서, 한국어로 번역하자면 보통, 문서를 전송하기 위한 약속을 뜻한다.
여기서 문서란 주로 HTML 혹은 XML로 이루어진 문서들을 이야기한다.

http에서 hyper text는 html에 있는 hyper text와 같다.
즉, 텍스트와 텍스트 사이에서 정보를 교환하기 위한 링크로서 만들어지고, 태그로 구성된 언어를 뜻한다.

protocol(협약,규약,약속)이라는 단어에서 알 수 있듯이, http는 인터넷상에서 자유롭게 문서가 오갈 수 있도록 기준을 통일한 규약이다.

HTTP의 특징

http는 두가지로 구성이 되어 있는데, 이것이 바로 요청(Request)과 응답(Response)이다.
예를 들면, 우리가 웹페이지에서 해당 정보를 얻기위해 링크를 클릭(Request)하면, 새로운 페이지로 넘어가서(Response) 새로운 정보를 얻을 수 있게 된다.

Stateless

Stateless는 state를 저장 하지 않는다는것을 의미한다.
네트워크의 통신은 항상 실시간으로 연결 되어 있다기보다, 한번 요청을 해서 응답을 받으면, 그 이전상태를 저장 하지 않는다는 특징이 있다.
때문에 저장이 필요한 작은 정보들을 저장소에 저장을 해야 하는데, 그것이 바로 local storage등의 storage이다.
또한, 그때문에 업데이트시에 국소적인 정보를 보내는것이 아니라, 문서 전체에 대한 정보를 다시 보내게 되는것이다.
stateless와 관련해서 쿠키&세션이 있다.
이는 추후에 다루도록 하겠다.

Request의 구조

Request에 대해 알아보자면, 우선 요청이라 해도 단일 메세지가 아니다.
이 부분은 세가지로 구성이 되어 있는데,

  1. Start line
  2. Header
  3. Body
이처럼 세부분으로 나누어져 있는데, 이중 Start line은
  1. HTTP method
  2. Request target
  3. HTTP version
이 세부분으로 나눠진다.

HTTP method은 기본적인 HTTP의 동작을 나타낸다. 이 동작엔 서버에서 데이터를 받아 올때 사용 하는 GET과, 데이터를 생성, 추가 할때 사용하는 SET이 있다. 이 경우 SET은 저장 할 데이터(Body)를 포함하게 된다.

Request target는 요청이 전송 될 목표점이 되는 URL이다.

HTTP version는 현재 사용하고 있는 HTTP의 버전을 나타낸다.
현재 주로 사용 되고 있는 버전은 주로 1.1버전이다.

Headr는 요청으로 보내게 될 메타데이터가 들어가 있다.
이는 object와 같이 key와 value로 이루어져 있다.

  • Host : 요청이 전송되는 목적지의 url이다
  • User-Agent : 요청을 보내는 브라우저에 대한 정보이다
  • Accept : 해당 요청이 받을 수 있는 응답 타입이다
  • Connection : 해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 연결을 유지할 것인지 아니면 끊을 것인지에 대한 지시이다
  • Content-Type : 해당 요청이 보내는 데이터(body)의 타입이다
  • Content-Length : 데이터(body)의 길이이다

과 같은 데이터등을 자주 사용하게 된다.

Body는 실제로 전송할 데이터의 본문이며, 반드시 요청에 포함 되어야 하는것은 아니다.
이때 body의 데이터를 전송 하고 싶을때 사용하는 method는 post이다.
body의 데이터도 물론 object형태로 key: value의 형태를 유지하고 있다.

Response의 구조

Response도 마찬가지로 세부분으로 나누어 지는데,

  1. Status line
  2. Header
  3. Body
으로 나누어 진다. Request와 매우 비슷하다는것을 알 수 있다.

Status Line도 세부분으로 나눠지는데,

  1. HTTP version
  2. status code
  3. status text
이와 같이 나눠진다.

HTTP version은 Request와 마찬가지로 http의 버전이고,status code는 우리가 가끔 볼 수 있었던 400,404등의 코드를 의미한다.

status text는 해당 메세지의 상태를 간략하게 설명해 준다.

header와 body는 보통 Request와 큰 차이를 보이지 않기에 생략하지만,
header에는 response에만 들어가는 데이터가 존재하기도 한다.

0개의 댓글