HTTP를 이해해보자

김일한·2023년 2월 3일
0

HTTP

목록 보기
2/2
post-thumbnail

HTTP(HyperText Transfer Protocol)란 ?

클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다.
예를 들어, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다.
* Html, Text, 이미지, 음성, 영상파일, Json,Xml(API) 등 거의 모든 형태의 데이터를 전달할 수 있다.



HTTP의 역사

1991년 HTTP/0.9
1996년 HTTP/1.0
1997년 HTTP/1.1 ☞ 대부분의 기능을 포함, 가장 많이 사용하는 버전 (TCP/IP기반)
2015년 HTTP/2 ☞ 요청과 응답 멀티플렉싱 (TCP/IP기반)
2020년 HTTP/3 ☞ TCP/IP 대신 UDP 사용을 통한 성능 향상

하지만 ! HTTP/2와 HTTP/3의 사용도 점점 증가하고 있다.

크롬 개발자 도구를 통해 데이터 요청, 응답과정에서 사용한 Protocol을 확인할 수 있다.





HTTP의 특징

  1. 클라이언트 서버 구조
  2. Stateless, 비연결성
  3. HTTP 메시지
  4. 확장 가능

클라이언트 서버 구조
Request / Response 구조
클라이언트는 서버에 요청을 보내고 응답을 대기, 서버가 요청에 대한 결과를 만들어서 응답

Stateless, 비연결성
앞서 언급한 클라이언트 서버 구조에서 클라이언트와 서버가 계속 연결되어 있다면 그동안 서버는 리소스를 소모하게 된다. 이러한 서버의 자원 소모를 줄이고 효율적인 통신을 위해
서버는 클라이언트의 상태를 보존하지 않고 (Stateless)
클라이언트가 어떤 데이터를 요청하면 서버는 응답하고 연결을 끊어버린다(비연결성)

비연결성의 한계 및 극복 방안
클라이언트와 서버가 연결을 끊고 다시 연결할 때 TCP/IP 연결을 해야하기 때문에 3-way handshake 과정에서 시간 낭비가 발생한다. 이를 극복하기 위해 지속 연결(Persistent Connections)을 도입하였다.
기존에는 비연결성을 유지하기 위해 서버는 어떤 데이터 요청에 대해 응답 후 바로 연결을 해제 하였지만 곧바로 연결을 해제하지 않고 유지하면서 불필요한 3-way handshake줄여 성능을 개선하였다.

profile
도전을 즐기는 개발자, 김일한입니다.

0개의 댓글