728x90

HTTP /0.9 ~ /2 까지는 기본적으로 TCP를 사용

 

HTTP 버전별 특징

/0.9

<!-- Request -->
GET /mypage.html
<!-- Response-->
<HTML>
A very simple HTML page
</HTML>
  • GET 요청밖에 없음
  • HTML 파일자체만 응답으로 보내줄 수 있음

 

/1.0

<!-- Request -->

GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
  <IMG SRC="/myimage.gif">
</HTML>
  • 버전, 상태코드, Content-Type 이 추가되고 HTML 파일들 이외에 다른 문서들을 전송할 수 있음

  • 1 Request & 1 Response Per Connection
    • 매번 새로운 연결로 성능저하
    • 서버 부하 비용 ↑

 

/1.1

  • 지정한 timeout 동안 커넥션을 닫지 않는 방식. 한 커넥션 동안 여려 요청과 응답이 발생할 수 있다.
  • 하나의 커넥션에서 응답을 기다리지 않고 순차적인 여러 요청을 연속적으로 보내그 순서에 맞춰 응답을 받는 방식. 지연시간을 줄일 수 있다.
    • 첫번째 요청이 너무 길어지면 2번째 3번째 요청에 대한 응답 대기시간도 자동으로 길어진다.
  • Header 구조의 중복
    • http/1.1의 헤더에는 많은 메타정보들을 저장
    • 매 요청 시 마다 중복된 Header 값을 전송하게 되며 또한 해당 domain에 설정된 cookie 정보도 매 요청 시 마다 헤더에 포함되어 전송

/2

  • 기존 HTTP/1.x 버전의 성능향상에 초점을 맞춘 프로토콜
  • 표준의 대체가 아닌 확장
  • HTTP 메시지 전송 방식의 변화
    • 바이너리 프레이밍 계층 사용(새로 생김)
      • 메시지를 HEADER와 DATA 프레임으로 분할을 하고 이를 Binary로 인코딩한다. 
        • 파싱, 전송 속도 ↑, 오류 발생 가능성↓

Request and response multiplexing(다중화) -> Head Of Line Blocking 해결

임의의 프레임이 interleaving하여 끼어들기 가능

메시지간 순서라는것이 사라졌다.

 

Stream Prioritization -> 리소스간 우선순위를 설정 가능

Server Push -> 클라이언트가 요청하지도 않은 데이터를 서버가 알아서 Push해줌

html만 요청했는데 script.js와 style.css도 포함시켜줌

 

Header Compression (헤더 압축) -> 헤더의 크기를 줄여 페이지 로드 시간 감소

 

HTTP/1.1 HTTP/2
Persistent Connection HTTP 메시지 전송 방식의 변화
Pipelining 요청과 응답의 다중화
HTTP의 Head of Line Blocking 문제 리소스간 우선 순위 설정
Header 중복 문제 Server Push
  Header 압축
  TCP의 Heade of Line Blocking 문제

 

'HTTP' 카테고리의 다른 글

Basic HTTP Request/Response  (0) 2021.07.23
AJAX  (0) 2021.03.07
CSR vs SSR  (0) 2021.02.10
RESTful API 란?  (0) 2021.01.16

+ Recent posts