HTTP란?

경용·2022년 7월 28일
0

HTTP가 무엇인가

Hypertext Transfer Protocol (HTTP) is an application-layer protocol for transmitting hypermedia documents, such as HTML.   - MDN

MDN에서는 HTTP를 HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜 이라고 설명하고 있다.
단어 하나씩 살펴보자면 HTML은 웹페이지를 만들기 위해서 웹브라우저 위에서 동작하는 언어이고, Transfer은 사전적 의미로 "전송하다"라는 의미를 가진다. Protocol은 협약, 통신 규약 이라는 의미이므로 한마디로 정리하자면 컴퓨터들끼리 HTML파일을 주고 받을 수 있도록 하는 소통방식 또는 약속이다.

HTTP의 특징

클라이언트 서버 구조

클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 클라이언트 서버 구조로 이루어져 있다.
Request Response 구조

  • 클라이언트는 서버에 요청을 보내고 응답을 대기
  • 서버가 요청에 대한 결과를 만들어 응답

상태유지 프로토콜 (Stateful)

클라이언트의 이전 요청이 서버에 잘 전달되었을 때, 클라이언트의 다음 요청이 이전 요청과 관계가 이어지는 것을 의미한다.

  • 상태에 대해 저장해야하기 때문에 백업 스토리지가 요구된다.
  • 상태 저장에 대한 요청은 서버 측 상태에 따라 달라지게 된다.

무상태 프로토콜 (Stateless)

HTTP에서 서버가 클라이언트의 상태를 보존하지 않는 무상태 프로토콜이다.
간단한 예시를 들자면 이렇다.
클라가 서버에게 “저녁에 치킨먹자”고 말했고 서버가 “그래”라고 답했다.
저녁이 되어 클라는 서버에게 “먹으러 가자”고 말했고 서버는 대답했다. “뭘?”

  • 서버가 클라이언트 상태를 보존하지 않음
  • 장점 : 서버의 확장성이 높기 때문에 대량의 트래픽 발생 시에도 대처를 수월하게 할 수 있다.
  • 단점 : 클라이언트의 요청에 상대적으로 Stateful 보다 더 많은 데이터가 소모된다.

비 연결성 (Connectionless)

비연결성은 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질을 말한다.

  • 연결을 유지하기 위한 리소스를 줄여서 더 많은 연결을 가능하게 한다.
  • 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결을 해야하므로 오버헤드가 발생한다.
profile
문제를 객관적으로. 그 후 true / false

0개의 댓글