HTTP/2
HTTP/2
- HTTP/2 는 HTTP/1.1의 확장으로, HTTP/1.1과의 호환성을 유지하면서 성능 향상에 신경 쓴 프로토콜
- 다음과 같이 성능 위주의 기능들이 추가됨
Multiplexed Streams
- 하나의 TCP 연결을 통해 여러 데이터에 대한 요청을 병렬로 전송 가능
- 데이터에 대한 응답을 요청 보낸 순서대로 받기 때문에 대기 시간이 늘어나는 HOL Blocking 문제를 해결 가능
- 웹 사이트를 로드하는 데 걸리는 시간이 줄어듦
중복 헤더 제거 / 헤더 압축
- 클라이언트 / 서버에서 이전 요청에 사용된 헤더를 가지고 있음
- 이를 이용해 중복된 내용의 헤더를 보내는 경우 생략해도 됨
- 이외에도 HPack이라는 방식으로 헤더를 압축하기 때문에, 헤더 크기가 굉장히 줄어듦
Binary Protocol
- 기존에는 텍스트를 통해 데이터를 전송했다면, HTTP2에서는 바이너리 데이터로 통신하도록 변경
- 오류가 발생할 가능성이 적으며, 텍스트의 특성을 활용한 보안 위협 공격을 방어 가능
Server Push
- 서버 단에서 아직 요청받지는 않았지만, 향후 요청에서 예상되는 정보를 클라이언트에 전송 가능
- 리소스 A가 리소스 B를 참조하면, 클라이언트가 A를 요청할 때 B를 같이 보냄
Stream Priorization
- 클라이언트가 리소스들에 대한 요청을 보낼 때 가중치를 지정해서 선호하는 응답을 우선 순위로 받을 수 있음
- 서버는 우선 순위가 높은 요청을 우선적으로 보내도록 조정
References
- https://gngsn.tistory.com/99
- https://velog.io/@taesunny/HTTP2HTTP-2.0-%EC%A0%95%EB%A6%AC