Medium - The Internet changes; HTTP/3 will not use TCP anymore
in Trend
Trend 파악을 위한 Medium 기고문 포스팅 - 인터넷이 변합니다. HTTP/3에서는 더이상 TCP를 쓰지 않습니다. 다음 HTTP 버전의 프로토콜인 QUIC에 대해서 알아봅시다.
Internet Engineering Task Force (IETF) 에서 HyperText Transfer Protocol (HTTP)의 3번째 공식 버전에서 ** TCP를 더이상 사용하지 않는다 ** 고 발표했습니다. 대신에 구글이 2012년에 처음 개발한 QUIC 프토로콜을 사용한다고 했죠.
WHAT IS QUIC?
Position of HTTP/3 and QUIC in the protocol stack :.figure
Quick UDP Internet Connections (QUIC)는 이름처럼 다중 UDP 커넥션을 기반으로 하는 트랜스포트 계층의 프로토콜입니다. 사실 QUIC는 TCP + TLS + SPDY를 UDP를 통해 사용하는 것으로 HTTP/2에서 TCP 위에 구현된 것들입니다.
IETF는 2016년 이후, 구글의 QUIC 표준화 작업을 시작했으며 HTTP/3 버전에서 해당 내용을 발표한 것이죠. 그러나 IETF의 QUIC 버전은 원래 QUIC 버전과는 큰 차이가 있습니다.
Integration of QUIC and TLS, adapted from the IETF’s draft of “Using Transport Layer Security (TLS) to Secure QUIC”. :.figure
QUIC 프로토콜은 TLS 1.3 암호화를 통해 보안을 유지하면서도 단순하고 속도가 빠른 것이 목표입니다. 커넥션 생성과 데이터 전송 측면에서 더욱 효율적인 프로토콜을 만든 것이죠. 구글에 따르면 QUIC는 페이로드를 보내기 전에 zero roundtrip으로 커넥션이 생성됩니다. 기존 TCP + TLS는 1-3 round trips이 필요했죠. 실제로는 처음 커넥션에만 1번의 round trip이 필요하고 그 다음에는 round trip이 필요 없습니다.
게다가 현재 TCP보다 패킷 손실이 적습니다. 재전송되는 패킷들은 새로운 시퀀스넘버를 가지며 RTO 때문에 발생하는 손실과 모호함을 줄이게 됩니다. IETF의 Jana lyengar는 QUIC는 인터넷 트랜스포트 계층을 강화시킨 것을 너머 올바르게 전송할 수 있도록 재발명 되었다고 했습니다.
현재로는 ( 2018 ), 1.2% 웹사이트들이 QUIC를 지원하지만 구글의 거의 대부분의 서비스들은 QUIC를 지원합니다.
IS QUIC SECURE?
처음에 QUIC엔 자체 암호화가 있었습니다. 그러나 곧 IETF가 제안한 TLS 1.3으로 교체되었죠. 실제적으로 QUIC의 커넥션 정책은 암호화와 트랜스포트 핸드세이크를 기반으로 합니다.
QUIC 는 암호화 기법과 트랜스포트 핸드세이크를 조합하여 커넥션 생성 지연을 최소화 합니다.
QUIC를 사용하면 모든 것이 기본적으로 암호화 됩니다. 그럼에도 불구하고 다른 기술들처럼 QUIC에도 보안 취약점이 존재하긴 합니다. 2015년에 Robert Lychev와 Smaudl Jeo는 해당 프로토콜의 취약점을 몇개 발표했습니다. QUIC의 퍼포먼스는 Server Config Replay Attack과 같은 것으로 성능 저하를 일으킬 수 있습니다. 그러나 암호화, 데이터 인증과 같은 것은 적절하게 보호되었다고 해당 보고서에서 밝히고 있습니다.
만약 여러분이 다음 HTTP 버전에 통합될 QUIC에 대해서 더 알고 싶다면 구글의 공식문서와 IETF의 자료를 확인하시는 것을 추천드립니다.
BIBLIOGRAPHY
[1] ”QUIC, a multiplexed stream transport over UDP — The Chromium Projects”, Chromium.org.
Summary
- HTTP/3의 QUIC 프로토콜
- 추상적인 관점으로는 TLS + TCP의 역활을 QUIC가 UDP 상위레벨에서 대신한다
- 서버 설정을 바꾸는 등으로 성능 저하를 일으킬 수 있지만 ( 2015 )
- 그 외에 데이터 암호화는 우수하다
- UDP 기반으로 한 이유는 커넥션 생성할 때 지연을 최소화 하기 위해서,