HTTP

🤨 HTTP란?

HTTP는 Hyper Text Transfer Protocol의 약자로 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이다.

프로토콜
: 컴퓨터 내부에서 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계

클라이언트와 서버는 개별적인 메시지 교환에 의해 통신한다. 클라이언트에 의해 전송되는 메시지요청(request)이라고 부르며, 그에 대한 서버의 메시지응답(response)이라고 부른다. 각각의 개별적인 요청은 서버로 보내지며, 서버는 요청을 처리하고 응답을 제공한다.


💌 HTTP 메시지

HTTP 메시지의 두 가지 타입인 요청과 응답은 각자의 형식을 가지고 있다.

(1) 요청(request)

image

1. Request Line

2. Request Headers
요청에 대한 meta 정보를 담고 있으며, key:value 값으로 되어 있다.

3. Blank Line
요청에 대한 meta 정보가 전송 됨을 알린다.

4. Request Message Body
요청의 실제 메시지(내용)이 들어있으며, XML이나 JSON 데이터가 들어갈 수 있다. GET은 body가 대부분 없다.

(2) 응답(response)

image

1. Status Line

HTTP 응답 상태 코드?
특정 HTTP 요청이 성공적으로 완료 되었는지 여부를 나타내며, 응답은 5가지 클래스로 분류된다. (자세한 내용은 여기에서..!)
(1) 정보 응답 (100 ~ 199)
(2) 성공적인 응답 (200 ~ 299)
(3) 리디렉션 (300 ~ 399)
(4) 클라이언트 오류 (400 ~ 499)
(5) 서버 오류 (500 ~ 599)

2. Response Headers
Request Headers와 거의 같지만, Response Headers에만 있는 값이 있다. (예를 들어, Server와 같은..)

3. Blank Line
Request Message와 동일

4. Response Message Body
실제 응답하는 데이터를 나타낸다.


💎 HTTP 특징

클라이언트-서버 프로토콜

모든 요청과 응답은 이전의 것들과는 상관없이 독립적으로 이루어진다. 즉, 모든 요청-응답 처리(transaction)이 단 한 번의 응답-요청 사이클을 가지며, 그 사이클이 끝나면 연결이 끊긴다. 따라서 해당 요청에 필요한 모든 정보를 처음부터 가져오고(fetch), 완전한 문서가 재구성된다.

무상태(Stateless)

HTTP는 상태를 저장하지 않기 때문에 동일한 연결(웹 브라우저)에서 연속하여 전달한 두 개의 요청 사이에는 연결고리가 없다.
이런 경우, 쇼핑몰의 장바구니나 게임 스코어처럼 특정 페이지와 일관되게 상호 작용 하려는 사용자에게 문제가 될 수 있다. 예를 들어, 쇼핑몰 장바구니에 물건을 담았지만, 어떤 버튼을 하나 눌러 reload 되면 장바구니가 텅텅 비게 되는 현상을 겪을 수도 있다.
HTTP는 상태를 저장하지 않지만, HTTP 쿠키를 이용해 상태가 있는 세션을 만들 수 있다.


📚 참고

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview https://developer.mozilla.org/ko/docs/Glossary/Protocol https://developer.mozilla.org/en-US/docs/Web/HTTP/Status https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies https://velog.io/@rosewwross/Http-and-Request-and-Response-hok6exbnfb

Joie-Kim

Joie-Kim

배운 것을 기록하는 습관! ✍️

comments powered by Disqus
rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin pinterest medium vimeo stackoverflow reddit quora quora