우리가 웹사이트의 주소(url)을 입력할때 항상 먼저 입력 되는 문자열이 바로 http이다.
이 http가 무슨뜻이고, 왜 항상 맨 앞쪽을 차지하고 있을까?
http는 Hyper Text Transfer Protocol 혹은 Hyper TexT Protocol의 약자로서, 한국어로 번역하자면 보통, 문서를 전송하기 위한 약속을 뜻한다.
여기서 문서란 주로 HTML 혹은 XML로 이루어진 문서들을 이야기한다.
http에서 hyper text는 html에 있는 hyper text와 같다.
즉, 텍스트와 텍스트 사이에서 정보를 교환하기 위한 링크로서 만들어지고, 태그로 구성된 언어를 뜻한다.
protocol(협약,규약,약속)이라는 단어에서 알 수 있듯이, http는 인터넷상에서 자유롭게 문서가 오갈 수 있도록 기준을 통일한 규약이다.
http는 두가지로 구성이 되어 있는데, 이것이 바로 요청(Request)과 응답(Response)이다.
예를 들면, 우리가 웹페이지에서 해당 정보를 얻기위해 링크를 클릭(Request)하면, 새로운 페이지로 넘어가서(Response) 새로운 정보를 얻을 수 있게 된다.
Stateless는 state를 저장 하지 않는다는것을 의미한다.
네트워크의 통신은 항상 실시간으로 연결 되어 있다기보다, 한번 요청을 해서 응답을 받으면, 그 이전상태를 저장 하지 않는다는 특징이 있다.
때문에 저장이 필요한 작은 정보들을 저장소에 저장을 해야 하는데, 그것이 바로 local storage등의 storage이다.
또한, 그때문에 업데이트시에 국소적인 정보를 보내는것이 아니라, 문서 전체에 대한 정보를 다시 보내게 되는것이다.
stateless와 관련해서 쿠키&세션이 있다.
이는 추후에 다루도록 하겠다.
Request에 대해 알아보자면, 우선 요청이라 해도 단일 메세지가 아니다.
이 부분은 세가지로 구성이 되어 있는데,
HTTP method은 기본적인 HTTP의 동작을 나타낸다. 이 동작엔 서버에서 데이터를 받아 올때 사용 하는 GET과, 데이터를 생성, 추가 할때 사용하는 SET이 있다. 이 경우 SET은 저장 할 데이터(Body)를 포함하게 된다.
Request target는 요청이 전송 될 목표점이 되는 URL이다.
HTTP version는 현재 사용하고 있는 HTTP의 버전을 나타낸다.
현재 주로 사용 되고 있는 버전은 주로 1.1버전이다.
Headr는 요청으로 보내게 될 메타데이터가 들어가 있다.
이는 object와 같이 key와 value로 이루어져 있다.
과 같은 데이터등을 자주 사용하게 된다.
Body는 실제로 전송할 데이터의 본문이며, 반드시 요청에 포함 되어야 하는것은 아니다.
이때 body의 데이터를 전송 하고 싶을때 사용하는 method는 post이다.
body의 데이터도 물론 object형태로 key: value의 형태를 유지하고 있다.
Response도 마찬가지로 세부분으로 나누어 지는데,
Status Line도 세부분으로 나눠지는데,
HTTP version은 Request와 마찬가지로 http의 버전이고,status code는 우리가 가끔 볼 수 있었던 400,404등의 코드를 의미한다.
status text는 해당 메세지의 상태를 간략하게 설명해 준다.
header와 body는 보통 Request와 큰 차이를 보이지 않기에 생략하지만,
header에는 response에만 들어가는 데이터가 존재하기도 한다.