3.8 트랜스포트 계층 기능의 발전 - Computer Network

3.8 트랜스포트 계층 기능의 발전 - Computer Network

생성일
Jun 3, 2024 04:15 AM
Description
트랜스포트 계층 기능의 발전에 대해 알아봅니다.
Tag
Computer Network
Computer Science Engineering

3.8 트랜스포트 계층 기능의 발전

앞서 언급된 TCP들 뿐만 아니라, 더 많은 버전의 TCP가 존재한다.
여러 TCP 변형 프로토콜의 유일한 공통 특징은
  1. TCP 세그먼트 포맷을 사용하고
  1. 네트워크 혼잡에 직면하여 서로 ‘공정하게’ 경쟁해야 한다는 점이다.

QUIC: 빠른 UDP 인터넷 연결

애플리케이션에서 필요로 하는 트랜스포트 서비스는
  1. UDP가 제공하는 것보다 더 많은 서비스가 필요하지만,
  1. TCP와 함께 제공되는 특정 기능들을 모두 원하지는 않거나 다른 서비스를 원할 수 있다.
💡 애플리케이션 설계자는 애플리케이션 계층에 항상 ‘자신의 프로토콜을 확장’할 수 있다.
e.g., QUIC(Quic UDP Internet Connections) = 빠른 UDP 인터넷 연결
  • 특히 QUIC은 보안 HTTP를 위한 트랜스포트 계층 서비스의 성능을 향상하기 위해
    • 처음부터 새롭게 설계된 애플리케이션 계층 프로토콜이다.
  • 오늘날 인터넷의 7% 이상이 QUIC이다.
  • 신뢰적인 데이터 전송, 혼잡 제어 및 연결 관리를 위한 많은 접근 방식을 사용한다.
아래 그림을 통해 볼 수 있듯, QUIC은 UDP를 하위 트랜스포트 계층 프로토콜로 사용하는 애플리케이션 계층 프로토콜이며,
HTTP/2 버전 위에서 인터페이스되도록 설계되었다.
왼쪽 : 전통적인 보안 HTTP 프로토콜 스택 / 오른쪽 : 보안 QUIC 기반 HTTP/3 프로토콜 스택
notion image
가까운 장래에 HTTP/3은 기본적으로 QUIC을 통합할 것이다.

QUIC의 주요 기능

✅ 연결지향적이고 안전함
QUIC은 두 종단 간의 연결지향 프로토콜이다.
  • QUIC 연결 상태를 설정하기 위해 종단 간에 핸드셰이크가 필요
  • 연결 상태의 두 부분 : 출발지와 목적지 연결 ID
QUIC은 연결 상태를 설정하는 데 필요한 핸드셰이크와 인증 및 암호화에 필요한 핸드셰이크를 결합하여,
  1. 먼저 TCP 연결을 설정한 다음
  1. TCP 연결을 통해 TLS 연결을 설정하여
여러 RTT가 필요한 전통적인 보안 HTTP 프로토콜 스택보다 더 빠른 설정을 제공한다.
✅ 스트림
  • 단일 QUIC 연결을 통해 여러 애플리케이션 레벨의 ‘스트림’들을 다중화할 수 있다.
  • QUIC 연결이 설정되면 새 스트림을 빠르게 추가할 수 있다.
✅  신뢰적이고 TCP 친화적인 혼잡 제어 데이터 전송
QUIC은 각 QUIC 스트림에 대해 독립적으로 신뢰적인 데이터 전송을 제공한다.
이는 아래 그림에서 확인할 수 있다.
notion image
(a) HTTP/1.1
TCP의 RDT(신뢰적인 데이터 전송) 및 CC(혼잡 제어)상에서
애플리케이션 프로그램 레벨의 TLS 암호화를 사용하는 단일 연결 클라이언트 및 서버
TCP는 신뢰적이고 순서대로 바이트 전달을 제공하므로 여러 HTTP 요청이 목적지 HTTP 서버에서 순서대로 전달되어야 한다.
따라서 한 HTTP 요청의 바이트가 손실되면
나머지 HTTP 요청들은 손실된 바이트가 재전송되어 HTTP 서버에서 TCP가 올바르게 수신할 때까지 전달될 수 없다.(HOL 차단 문제)
(b) HTTP/3
UDP의 비신뢰적인 데이터그램 서비스상에서
QUIC의 암호화, 신뢰적인 데이터 전송 및 혼잡 제어를 사용하는 멀티스트림 클라이언트 및 서버
QUIC은 스트림별로 신뢰적이고 순서대로 전달하기 때문에
손실된 UDP 세그먼트는 해당 세그먼트에서 데이터가 전달된 스트림에만 영향을 준다.
즉, 다른 스트림의 HTTP 메시지는 계속 수신되어 애플리케이션에 전달될 수 있다.
QUIC은 TCP와 유사한 확인응답 메커니즘을 사용하여 신뢰적인 데이터 전송을 제공한다.
QUIC의 혼잡 제어는 TCP 리노 프로토콜을 약간 수정한 TCP 뉴리노(NewReno)를 기반으로 한다.

💡 QUIC은 두 종단 사이에 신뢰적이고 혼잡 제어된 데이터 전송을 제공하는 애플리케이션 계층 프로토콜이다.
이는 ‘애플리케이션 프로그램 업데이트 시간 척도’면에서 QUIC으로 변경될 수 있음을 의미하며,
이는 TCP 또는 UDP 업데이트 시간 척도보다 훨씬 빠르다는 뜻이다.