HTTP 1.0 은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었다.
서버로부터 파일을 가져올 때마다 TCP의 3way handshake를 계속해서 열어야 하기 때문에 RTT 증가를 불러온다.
TCP 에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정
패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오는 데 걸리는 시간
매번 TCP 연결을 하는 것이 아니라 한번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러개의 파일을 송수신할 수 있게 바뀌었다.
HOL (head of line) Blocking 이란 네트워크에서 같은 큐에 있는 패킷이 그 처음 패킷에 의해 지연될 때 발생하는 성능 저하
예를 들어 이미지,css,txt.. 등을 순차적으로 받을 때 , image가 늦게 받아지면 뒤에 있는 것들이 대기해서 다운로드가 지연되게 된다.
SPDY 프로토콜에서 파생되었으며, HTTP 1보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있다.
멀티플렉싱,헤더 압축, 서버 푸시, 요청의 우선순위 처리를 해준다.
여러개의 스트림을 사용하여 송수신한다. 이를 통해 특정 스트림의 패킷이 손실되어도 해당 스트림에만 영향을 미치고, 나머지 스트림은 멀쩡하게 동작한다.
HTTP 1은 헤더가 커서 문제였는데 , 허프만 압축 알고리즘을 통해 압축을 성공했다.
HTTP 1에서 클라이언트가 서버에 요청을 해야 파일을 다운로드 받았었다.
2에서는 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다.
html에는 CSS,JS 파일이 포함되어 있는데, html을 읽으면서 그 안의 파일을 푸시하여 클라이언트한테 먼저 줄 수 있다.
지금까지의 TCP 방식이 아닌 QUICI라는 계층 위에서 돌아가며 UDP 기반으로 돌아간다. 멀티플렉싱을 갖고 있고, 초기 연결 설정 시 지연 시간 감소라는 특징이 있다.
QUIC는 TCP를 사용하지 않기 때문에 통신을 시작할 때 3way-handshake를 거치지 않아도 된다. QUIC 은 첫 연결 설정에 1RTT만 소요된다. 클라이언트가 서버에 어떤 신호를 한번 주고, 서버도 거기에 응답만 한다면 본 통신을 시작할 수 있다는 것이다.
출처 : 면접을 위한 CS 전공지식 노트