면접을 진행하면서 단골 질문이 될 수 있는 내용들에 대해 하나씩 공부하고, 정리중이다.
HTTP/1.0
한 연결당 하나의 요청을 처리하도록 설계되었다. 이는 매 요청마다 3-way handshake를 계속해서 열어야 했기 때문에 RTT(Round Trip Time)가 증가한다는 단점이 있었다.
이를 해결하기 위해, 코드 압축, 이미지 Base64인코딩 등의 방법을 사용했다.
HTTP/1.1
매번 TCP 연결을 하지 않고, 한 번 3-way handshake로 초기화를 한 후 keep-alive 옵션으로 여러개의 파일을 송수신 할 수 있게 되었다. keep-alive 옵션은 1.0에도 있기는 했지만 1.1부터 표준화 되었다.
그럼에도 불구하고 1.1에서는 문제가 여전히 존재한다.
HOL Blocking(Head Of Line Blocking)은 하나의 파일의 다운로드가 지연될 경우 이후에 다운로드 될 파일들이 대기하게 되면서 다운로드가 지연되는 상태를 말한다. 그리고 HTTP/1.1의 헤더에는 많은 메타 데이터들이 압축되지 않은 상태로 전송되기 때문에 "무거운 헤더"라는 한계도 있다.
HTTP/2
HTTP/1.1의 문제를 해결하기 위해 HTTP/2에서는 멀티플렉싱, 헤더 압축, 서버 푸시, 요청 우선순위 처리 등을 지원한다.
- 멀티플렉싱
멀티플렉싱이란 여러개의 스트림을 사용하여 송수신하는 것을 의미한다. 이로 인해 특정 스트림의 패킷이 손실되더라도 해당 스트림에만 영향이 있고, 나머지 스트림은 정상적으로 동작하게 된다. - 헤더 압축
HTTP/1.1의 무거운 헤더를 해결하기 위해 "허프만 코딩" 압축 알고리즘을 통해 헤더를 압축한다. - 서버 푸시
HTTP/2에서는 클라이언트의 요청 없이도 서버가 리소스를 푸시할 수 있다. - HTTPS
HTTP/2 는 HTTPS 위에서 동작한다. 애플리케이션 계층과 전송 계층 사이에 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 의미한다. 구축하는 방법은 크게 세 가지인데, 직접 CA를 통해 구매한 인증키를 기반으로 서비스를 구축하거나, HTTPS를 제공하는 로드 밸런서를 두어도 되고, HTTPS를 제공하는 CDN을 앞단에 두어서 구축할 수도 있다.
일단 SSL/TLS는 독립적으로 내용이 방대하므로, 추후에 따로 학습한 후 다루고자 한다.
HTTP/3
TCP위에서 동작하는 HTTP/2와는 달리 QUIC라는 계층 위에서 돌아가며, UDP기반이다. 따라서 3-way handshake 과정이 없고, 초기 연결을 설정할때 지연시간이 더 짧다는 특징이 있다.
참고 : 면접을 위한 CS 전공지식 노트, 주홍철, (주)도서출판 길벗, https://www.yes24.com/Product/Goods/108887922
'개발 > Network' 카테고리의 다른 글
[Network] TCP & HTTP 비교 (0) | 2023.10.22 |
---|---|
[HTTP] 비연결성 (0) | 2022.05.02 |
[HTTP] TCP : 3way handshake (0) | 2022.03.24 |
[Network]로드밸런싱(Load Balancing) (0) | 2022.03.14 |