본문 바로가기
Computer Science/Network

HTTP(HyperText Transfer Protocol)

by snfjddl 2021. 11. 15.

HTTP란?

World Wide Web(www, w3) 상에서 정보를 주고받을 수 있는 프로토콜.

현재 HTML 문서, 이미지, 동영상 등 모든 데이터 통신에 사용된다.

데이터 통신에는 URL을 활용하여 클라이언트와 서버가 필요 자원을 식별한다.

 

현재는 HTTP 1.1(TCP) | HTTP 2(TCP) | HTTP 3(UDP) 총 3가지 버전을 상황에 맞게 사용하고 있다.

구글 검색 시 개발자도구 - Network의 일부

특징

Connectionless(비연결성)

HTTP는 Request를 보내고 Response를 받으면 해당 연결을 종료하기 때문에 요청에 대한 상태를 저장하지 않는다

Stateless(무상태성)

HTTP Request와 Response는 독립적으로, 클라이언트와 서버가 통신한 내용(상태)을 저장하지 않는다.

 

버전별 특징

HTTP 1.1

  • Default 속성인 영속적인 커넥션(Keep-Alive) 모델을 제공하여,
    커넥션을 유지하여 연속적인 요청에서 새로운 TCP 연결 등의 부하를 줄인다. 
  • Pipelining을 제공하여, Response를 기다리지 않고 연속적인 Request를 보내서 네트워크 지연을 줄인다.
    구현의 복잡성, HOL 등 여러 가지 문제가 있어서 HTTP 2에서 멀티플렉싱으로 개선됨.

https://developer.mozilla.org/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x

 

HTTP 2

  • Multiplexed Streams을 지원하여, 병렬 요청이 동일 커넥션 상에서 이루어질 수 있는 다중화 프로토콜입니다.
    순서를 제거하고, HTTP 1.1의 keep-alive, pipelining의 제약들을 개선하였습니다.
  • Stream Prioritization: 요청에 우선순위를 부여하여 처리.
  • Server Push: 클라이언트가 요청하지 않았지만 추가적으로 요청할 것으로 예상되는 자원을 미리 보냄으로써
    추가적인 요청을 최소화하여 성능을 향상
  • header compression: header 정보의 압축을 위해 header table, huffman encoding을 사용.
    클라이언트가 중복된 header로 요청을 보내오면 index값만 전송하고 나머지는 huffman encoding하여 전송.

 

HTTP 3

  • Google이 개발한 UDP 기반의 QUIC 프로토콜을 사용. 

 

 

반응형

'Computer Science > Network' 카테고리의 다른 글

HTTP 상태코드 3XX  (0) 2021.12.19
HTTP 메소드  (0) 2021.11.17
URI(Uniform Resource Identifier)  (0) 2021.10.03
TCP와 UDP  (0) 2021.10.03
IP(Internet Protocol)  (0) 2021.09.26

댓글