웹 기술 기초
HTTP/2와 HTTP/3에 대한 설명으로 올바른 것은?
- AHTTP/2는 하나의 TCP 연결로 여러 요청을 병렬로 처리할 수 있지만 패킷 손실로 다른 스트림도 기다리게 되는 경우가 있으며, HTTP/3은 UDP 위의 QUIC으로 이를 줄였다
- BHTTP/2는 HTTP/1.1과 같은 텍스트 형식의 메시지를 사용하고, 요청마다 새로운 TCP 연결을 병렬로 만들어 여러 리소스를 동시에 받을 수 있게 한 버전이다
- CHTTP/3은 HTTP/2와 마찬가지로 TCP 위에서 동작하며 헤더를 압축하는 방식만 고친 버전으로, 패킷 손실의 영향은 HTTP/2와 다르지 않고 UDP는 사용하지 않는다
정답과 해설 보기
정답: A. HTTP/2는 하나의 TCP 연결로 여러 요청을 병렬로 처리할 수 있지만 패킷 손실로 다른 스트림도 기다리게 되는 경우가 있으며, HTTP/3은 UDP 위의 QUIC으로 이를 줄였다
HTTP/1.1에서도 지속 연결(keep-alive)로 하나의 TCP 연결을 재사용할 수 있지만, 하나의 연결에서는 응답을 하나씩 차례로 받기 때문에 브라우저는 여러 연결을 병렬로 열었습니다. HTTP/2는 메시지를 바이너리 프레임으로 나누고, 하나의 TCP 연결 위에 여러 스트림을 다중화하여 병렬로 보냅니다. 다만 TCP는 바이트열을 순서대로 전달하므로, 패킷이 하나 손실되면 재전송이 도착할 때까지 관계없는 스트림의 데이터도 기다리게 됩니다(HOL 블로킹, head-of-line blocking). HTTP/3은 UDP 위에서 동작하는 QUIC을 사용하여 스트림마다 순서를 관리하므로, 손실의 영향이 그 스트림에만 머뭅니다.