HTTP 1,2,3 의 차이

heyhey·2022년 12월 14일
0

network

목록 보기
1/15

HTTP 1.0

HTTP 1.0 은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었다.
서버로부터 파일을 가져올 때마다 TCP3way handshake를 계속해서 열어야 하기 때문에 RTT 증가를 불러온다.

3way handshake란 ?

TCP 에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정

RTT란 ?

패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오는 데 걸리는 시간

RTT 증가를 해결하기 위한 방법

  • 이미지 스프라이트 : 여러개의 이미지를 하나의 이미지로 합쳐서 관리하는 이미지
  • 코드 압축
  • Base64 인코딩

HTTP 1.1

매번 TCP 연결을 하는 것이 아니라 한번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러개의 파일을 송수신할 수 있게 바뀌었다.

HOL Blocking

HOL (head of line) Blocking 이란 네트워크에서 같은 큐에 있는 패킷이 그 처음 패킷에 의해 지연될 때 발생하는 성능 저하

예를 들어 이미지,css,txt.. 등을 순차적으로 받을 때 , image가 늦게 받아지면 뒤에 있는 것들이 대기해서 다운로드가 지연되게 된다.

HTTP 2

SPDY 프로토콜에서 파생되었으며, HTTP 1보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있다.
멀티플렉싱,헤더 압축, 서버 푸시, 요청의 우선순위 처리를 해준다.

멀티플렉싱

여러개의 스트림을 사용하여 송수신한다. 이를 통해 특정 스트림의 패킷이 손실되어도 해당 스트림에만 영향을 미치고, 나머지 스트림은 멀쩡하게 동작한다.

헤더 압축

HTTP 1은 헤더가 커서 문제였는데 , 허프만 압축 알고리즘을 통해 압축을 성공했다.

  • 허프만 코딩 : 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트수를 표현하고, 빈도가 낮은 정보는 비트수를 많이 사용해 전체 데이터의 비트양을 줄였다.

서버 푸시

HTTP 1에서 클라이언트가 서버에 요청을 해야 파일을 다운로드 받았었다.
2에서는 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다.
html에는 CSS,JS 파일이 포함되어 있는데, html을 읽으면서 그 안의 파일을 푸시하여 클라이언트한테 먼저 줄 수 있다.

HTTP 3

지금까지의 TCP 방식이 아닌 QUICI라는 계층 위에서 돌아가며 UDP 기반으로 돌아간다. 멀티플렉싱을 갖고 있고, 초기 연결 설정 시 지연 시간 감소라는 특징이 있다.

QUIC는 TCP를 사용하지 않기 때문에 통신을 시작할 때 3way-handshake를 거치지 않아도 된다. QUIC 은 첫 연결 설정에 1RTT만 소요된다. 클라이언트가 서버에 어떤 신호를 한번 주고, 서버도 거기에 응답만 한다면 본 통신을 시작할 수 있다는 것이다.

출처 : 면접을 위한 CS 전공지식 노트

profile
주경야독

0개의 댓글