HTTP 프로토콜

Jay Jang·2022년 7월 15일
0

WEB

목록 보기
1/2

HTTP: Hypertext Transfer Protocol (article) | Khan Academy

들어가며


웹은 많은 규약 Protocol 들로 이루어져 있다. 오늘은 그 중 하나인 HTTP HyperText Transfer Protocol 에 대해 이야기한다.



Hypertext ?


Hypertext - Wikipedia

기존의 책과 같은 선형적인 텍스트가 아니라, WWW에서 사용되는 하이퍼링크와 하이퍼텍스트를 통해서 이어어지는 비선형적인 텍스트가 신개념이라는 의미에서 만들어진 용어이다.

초월문서, 확장문서라고 할 수 있으며, 기존의 text 문서를 뛰어넘는다는 의미를 가진다.

HTTP (HyperText Transfer Protocol)


Web Application - The Hypertext Transfer Protocol (HTTP) (researchhubs.com)

HTTP는 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜의 일종으로, 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해 놓은 규약이다.

HTTP 메시지를 통해서 거의 모든 형태의 데이터를 전송할 수 있으며, 서버간에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다.

HTTP의 특징


HTTP에는 몇가지 특징이 있다.

  1. 애플리케이션 레이어(L7)
  2. 클라이언트 서버 구조
  3. Stateless 무상태 프로토콜, Connectionless 비연결성
  4. 단순함, 확장 가능
  5. HTTP 메시지

애플리케이션 레이어(L7)


HTTP는 OSI모델에서 최상단 7번째 계층에 위치한 애플리케이션 레이어이다.

OSI모델은 낮은 계층으로 내려갈수록 하드웨어에 가깝고, 높은 계층으로 올라갈수록 소프트웨어에 가깝다. 때문에 http는 소프트웨어간에 통신을 주고 받을 때 주로 사용하는 프로토콜이라고 할 수 있다.

클라이언트 서버 구조


HTTP는 클라이언트의 Request 요청과 그에 상응하는 서버의 Response 응답을 통해 서로 통신한다.

클라이언트는 서버에 요청을 보내고, 서버의 응답을 대기한다.

서버는 클라이언트의 요청에 대한 결과를 만들어서 응답한다.


단순함


HTTP는 단순한 디자인을 가지고 있다. HTTP 통신으로 주고 받는 메시지를 사람이 읽을 수 있고, 테스트하기도 쉽다.


무상태 프로토콜 stateless


Sessions. HTTP IS A STATELESS PROTOCOL Reminder Stateless Protocol (XKCD) - ppt download (slideplayer.com)

HTTP는 상태가 없다 stateless. 서버가 클라이언트의 이전 상태를 유지하지 않는다는 의미이다. 클라이언트가 연결을 끊으면 이전 상태의 것은 알 수 없다. 때문에 이전 상태의 데이터에 대해선 추가 데이터를 전송해야 한다.

stateless 함의 장점은 무엇일까. 이전 상태를 유지하지 않는 프로토콜이기 때문에 응답 서버가 변경되어도 데이터 통신에 문제가 되지 않는다. 서버를 무한대로 증설(scale out) 할 수 있다.



비연결성 connectionless


HTTP는 기본적으로 연결을 유지하지 않는 비연결성 모델이다.

때문에 1시간동안 수천, 수만명의 유저가 서비스를 사용하더라도 실제 서비스에서 동시에 처리하는 요청은 수십, 수백개 이하가 된다. 이벤트 요청을 계속해서 보내진 않기 때문이다. 서버 자원을 효율적으로 사용할 수 있다.

HTTP 웹 기본 지식(진행중) (velog.io)

이러한 비연결성에는 한계도 있다. request 마다 TCP/IP 연결을 새로 맺어야하기 때문에 3-way handshake 과정이 필요하다.

현재는 HTTP 지속 연결(Persistent Connections)로 어느정도 문제를 해결하였으며 HTTP/2, HTTP/3에서 더 많은 최적화가 이루어졌다고 한다.



확장성


단순하고, stateless, connectless하기 때문에 뛰어난 확장성을 가지고 있다.

커스텀 헤더를 추가 생성하여 주고 받으며 새로운 기능을 추가할 수 있다.


HTTP 메시지


메시지를 통해 데이터를 전송할 수 있다.

HTML 문서, 이미지, 영상, JSON 등 byte로 표현할 수 있는 모든 데이터가 전송 가능하다.


REFERENCE


HTTP 개요 - HTTP | MDN (mozilla.org)
http 프로토콜의 개요 (brunch.co.kr)
하이퍼텍스트 - 나무위키 (namu.wiki)
모든 개발자를 위한 HTTP 웹 기본 지식, 김영한, 인프런

profile
그때는맞고지금은틀리다

0개의 댓글