학교
[컴퓨터 네트워크] Chapter 3. Transport Layer (Part 3) - (3)
일자 : 24-2 9주차 2차시 (1)
[11-1] TCP 공평성 (Fairness)
1) 공평성 목표
: 만약 K개의 TCP 세션이 동일한 병목 링크 R의 대역폭을 공유한다면, 각 세션은 평균적으로 R/K의 전송 속도를 가져야 합니다.
2) 설명
공평성 목표는 네트워크 리소스를 여러 TCP 세션이 공유할 때 각 세션이 동일한 비율로 대역폭을 할당받아야 한다는 원칙이다.
예를 들어, 대역폭이 R인 링크를 K개의 TCP 세션이 공유한다면, 각 세션은 평균적으로 R/K 만큼의 전송 속도를 가져야 한다는 것이다.
이는 네트워크 리소스를 공정하게 분배하는 것을 목표로 하며, 특히 여러 사용자나 세션이 같은 링크를 사용할 때 중요하다.

[11-2] Q: TCP는 공정한가?
1) 예시: 두 개의 경쟁하는 TCP 세션
덧셈 증가(Additive Increase): 전송량이 증가함에 따라 기울기가 1인 선형 증가
곱셈 감소(Multiplicative Decrease): 손실 발생 시 전송량을 비례적으로 감소
: 이 예시는 두 개의 TCP 세션이 동일한 대역폭을 두고 경쟁할 때, 각 세션의 전송량이 어떻게 변화하는지를 보여줍니다. 덧셈 증가에서는 윈도우 크기가 일정 비율로 증가하고, 곱셈 감소에서는 손실이 발생하면 윈도우 크기가 비례적으로 감소합니다.
2) 그래프로 보는 예시

손실 발생 시: 윈도우 크기를 2배로 줄임
혼잡 회피 단계: 덧셈 증가 방식으로 윈도우 크기 증가
: 그래프에서 볼 수 있듯, 손실이 발생하면 윈도우 크기가 급격하게 줄어들고, 이후 혼잡 회피 단계에서 윈도우 크기가 천천히 증가합니다.
3) TCP는 공정한가?
답변: 네, 이상적인 가정 하에서는 공정합니다.
동일한 RTT를 가진 세션들일 때,
혼잡 회피 단계에서 고정된 수의 세션만 있을 때, TCP는 공정하게 동작합니다.
설명:
이상적인 상황에서 각 세션이 동일한 RTT를 가질 경우, TCP는 각 세션에 동일한 대역폭을 할당하여 공정하게 동작합니다.
혼잡 회피 단계에서 세션 수가 일정하다면, 각 세션은 균등하게 네트워크 자원을 분배받습니다.
그러나 실제 네트워크 환경에서는 RTT 차이나 동적 세션 수 등 여러 변수들이 TCP의 공정성에 영향을 줄 수 있습니다.
[11-3] 공정성: 모든 네트워크 앱이 "공정"해야 하는가?
1) 공정성과 UDP
멀티미디어 앱은 종종 TCP를 사용하지 않음
혼잡 제어에 의해 전송 속도가 제한되는 것을 원하지 않음
대신 UDP를 사용:
일정한 속도로 오디오/비디오를 전송하고, 패킷 손실을 용인
인터넷 경찰은 혼잡 제어 사용을 강제하지 않음
설명:
멀티미디어 앱은 실시간 데이터 전송에 있어 패킷 손실을 일부 허용하면서도 일정한 전송 속도를 유지하려고 합니다. TCP는 혼잡 제어 메커니즘이 있어서 전송 속도를 동적으로 조절하는 반면, UDP는 이런 제약 없이 데이터를 전송할 수 있습니다.
따라서, 멀티미디어 애플리케이션에서 UDP를 사용하는 것은 전송 지연을 최소화하고, 데이터 손실을 허용하면서 안정적인 스트리밍을 하기 위한 방법입니다.
2) 공정성, 병렬 TCP 연결
애플리케이션은 두 호스트 간에 여러 개의 병렬 연결을 열 수 있음
예를 들어, 웹 브라우저는 여러 개의 연결을 사용하여 더 빠르게 데이터를 전송:
링크 속도 R와 9개의 기존 연결이 있을 때:
새로운 애플리케이션이 TCP 연결을 하나 요청하면, 그 애플리케이션은 R/10 속도를 받음
1 * R/10 = R/10
새로운 애플리케이션이 11개의 TCP 연결을 요청하면, 그 애플리케이션은 R/2 속도를 받음
11 * R/20 = R/2
설명:
병렬 연결을 통해 애플리케이션은 더 많은 대역폭을 사용할 수 있으며, 웹 브라우저와 같은 애플리케이션에서는 여러 TCP 연결을 동시에 열어 속도 향상을 꾀합니다.
하지만 이렇게 병렬 연결을 많이 사용할 경우, 대역폭이 세션 간에 나누어지므로, 동일한 연결 속도를 유지하기 위해서는 더 많은 연결이 필요할 수 있습니다. 이는 네트워크에서 공정성을 떨어뜨리는 결과를 초래할 수 있습니다.
8. 전송 계층 기능의 변동성(Evolution)
[1] 전송 계층 기능의 발전
TCP, UDP: 40년 동안 사용된 주요 전송 프로토콜
특정 시나리오에 맞게 다양한 TCP의 변형이 개발됨:
시나리오 | 도전 과제 |
|---|---|
Long, fat pipes (대용량 데이터 전송) | 많은 패킷이 "비행 중"이고, 손실이 발생하면 파이프라인이 중단됨 |
무선 네트워크 | 노이즈가 있는 무선 링크와 이동성으로 인한 손실; TCP는 이를 혼잡 손실로 처리 |
장거리 링크 | 매우 긴 RTT (왕복 시간) |
데이터 센터 네트워크 | 지연에 민감함 |
배경 트래픽 흐름 | 낮은 우선순위, "백그라운드" TCP 흐름 |
응용 계층에서 전송 계층 기능을 이동시키는 추세가 있음, 특히 UDP 위에서:
HTTP/3: QUIC(Quick UDP Internet Connections) 사용
UDP를 기반으로 하여 더 낮은 지연과 더 빠른 연결 수립을 목표로 합니다.
[2] QUIC: Quick UDP Internet Connections

1-1) 특징 1
QUIC는 애플리케이션 계층 프로토콜로, UDP 위에서 동작합니다.
HTTP 성능 향상을 목표로 설계되었습니다.
Google 서버와 여러 앱(예: Chrome, 모바일 YouTube 앱)에 배포되어 사용됩니다.
1-2) 설명:
QUIC은 전통적인 TCP 대신 UDP를 기반으로 하여 더 빠른 연결 수립과 낮은 지연을 제공합니다. 이는 특히 HTTP 성능을 향상시키는데 유리하며, Google의 여러 서비스에서 이를 활용하고 있습니다.
TCP의 연결 수립과 종료 과정에서 발생하는 지연을 줄여주며, 특히 비디오 스트리밍과 같은 실시간 애플리케이션에서 중요한 역할을 합니다.
2-1) 특징 2: QUIC의 주요 특징
연결 수립, 오류 제어, 혼잡 제어에서 TCP와 유사한 접근 방식을 채택:
오류 및 혼잡 제어: QUIC은 TCP의 손실 탐지 및 혼잡 제어 알고리즘과 유사한 방법을 사용합니다. QUIC 명세에 따르면 "TCP의 손실 탐지 및 혼잡 제어에 익숙한 독자들은 여기에서 잘 알려진 TCP 알고리즘들과 잘 맞는 알고리즘을 찾을 수 있을 것"이라고 언급됩니다.
비유 : 기차 시스템에서 혼잡이나 문제가 발생하면 열차가 속도를 조절하거나 경로를 변경합니다. 네트워크에서도 패킷 손실이나 혼잡을 감지하면 속도를 조절하거나 다른 경로로 전환합니다. TCP와 QUIC은 비슷한 방식으로 이를 처리하지만, QUIC은 더 빠르고 효율적입니다.
연결 수립: QUIC은 연결 수립을 1번 RTT (Round Trip Time) 내에 완료하며, 신뢰성, 혼잡 제어, 인증, 암호화가 모두 포함됩니다.
비유 : QUIC은 마치 표를 미리 예약해 놓고 빠르게 탑승할 수 있는 시스템처럼, 한 번의 절차로 모든 인증, 암호화, 신뢰성 체크를 처리하여 1번의 왕복 시간 (RTT) 만에 출발할 수 있도록 도와줍니다.
여러 애플리케이션 레벨 스트림을 하나의 QUIC 연결로 멀티플렉싱:
별도의 신뢰성 있는 데이터 전송과 보안 처리가 각 스트림에 대해 독립적으로 이루어집니다.
공통의 혼잡 제어를 사용하여 여러 스트림 간의 혼잡 상태를 효율적으로 관리합니다.
비유 : QUIC은 마치 하나의 기차가 여러 노선으로 분기되는 것처럼, 하나의 연결로 여러 애플리케이션 스트림을 처리할 수 있습니다. 각 스트림은 서로 독립적으로 처리되지만, 하나의 기차에서 각기 다른 목적지로 가는 승객들이 같이 이동하는 방식입니다.
QUIC은 이를 통해 전통적인 TCP보다 더 효율적이고 빠르게 여러 요청을 동시에 처리할 수 있는 능력을 제공합니다.
[3] QUIC의 연결 설정
1) TCP

TCP는 신뢰성(reliability), 혼잡 제어 상태와 TLS(인증 및 암호화 상태)를 위해 두 번의 핸드셰이크 과정을 거칩니다.
2) QUIC

QUIC은 신뢰성, 혼잡 제어, 인증 및 암호화 상태를 모두 하나의 핸드셰이크로 처리하여 연결 설정을 더 빠르고 효율적으로 완료합니다.
[4] QUIC: 스트림: 병렬 처리, HOL(Head-of-line) 블로킹 없음
1) HTTP 1.1

HTTP 1.1에서는 클라이언트가 요청을 보내면 서버는 순차적으로 응답을 보냅니다. 이때 하나의 요청이 지연되면 그 뒤의 모든 요청도 함께 지연되는 Head-of-line 블로킹(HOL Blocking) 문제가 발생합니다. 즉, 첫 번째 요청이 처리되지 않으면 그 후에 오는 모든 요청이 대기해야 합니다.
2) HTTP/2 with QUIC : HOL 블로킹 없음

HTTP/2와 QUIC에서는 여러 개의 요청을 동시에 처리할 수 있는 병렬 처리(parallelism)가 가능하며, 각각의 요청을 독립적으로 처리합니다. 이로 인해 하나의 요청이 지연되더라도 다른 요청에 영향을 미치지 않아서 HOL 블로킹이 발생하지 않습니다. QUIC는 이러한 병렬 처리를 통해 더 효율적인 데이터 전송을 구현합니다.
[5] Chapter 3: 요약
1) 요약
전송 계층 서비스의 원칙:
다중화, 역다중화
신뢰성 있는 데이터 전송
흐름 제어
혼잡 제어
인터넷에서의 구현:
UDP
TCP
2) 다음 내용:
네트워크 “엣지” (애플리케이션, 전송 계층)를 떠나
네트워크 “코어”로
두 개의 네트워크 계층 장:
데이터 평면
제어 평면
[6] Keywords
Congestion control: 네트워크에서 패킷 손실이나 지연을 최소화하기 위해 송수신 측에서 데이터 전송 속도를 조절하는 과정.
End-end congestion control: 송신자와 수신자 사이에서 혼잡 상태를 감지하고 전송 속도를 조절하는 방식.
Network-assisted congestion control: 네트워크 장비(예: 라우터)가 혼잡 상황을 감지하고 송신자에게 혼잡 신호를 보내어 전송 속도를 조절하는 방식.
TCP slow start: TCP 연결 초기 단계에서 윈도우 크기를 급격하게 증가시키는 방법으로, 네트워크 혼잡을 피하기 위해 점진적으로 윈도우 크기를 확장하는 과정.
TCP congestion avoidance: 혼잡이 발생할 수 있는 네트워크에서 윈도우 크기를 서서히 증가시키는 방식으로, 지나치게 빠른 속도로 데이터를 보내지 않도록 조절.
AIMD: Additive Increase, Multiplicative Decrease의 약자로, 혼잡 제어 알고리즘에서 윈도우 크기를 증가시킬 때는 일정량씩, 감소시킬 때는 반으로 줄이는 방식.
TCP fast recovery: 패킷 손실이 발생한 후, 빠르게 전송을 재개하기 위해 윈도우 크기를 줄이지 않고 빠르게 회복하는 방법.
TCP throughput: TCP 연결에서 데이터를 전송할 때 단위 시간당 전송되는 데이터의 양.
Long and fat pipes: 대용량 데이터 전송을 위한 고속 연결을 의미하며, 지연 시간과 높은 대역폭을 갖춘 네트워크 환경.
TCP CUBIC: 높은 대역폭과 긴 RTT를 가진 네트워크에서 효율적인 전송을 위해 설계된 TCP 혼잡 제어 알고리즘.
Explicit Congestion Notification (ECN): 네트워크 장비가 패킷 손실을 피하기 위해 송신자에게 혼잡 상태를 알려주는 메커니즘.
TCP Fairness: 여러 TCP 세션들이 동일한 네트워크 리소스를 공정하게 사용할 수 있도록 보장하는 특성.
QUIC: UDP 위에서 동작하며, HTTP 성능을 향상시키기 위한 빠르고 안전한 전송 프로토콜.
HTTP/3: QUIC을 기반으로 한 최신 HTTP 프로토콜로, 빠른 연결 설정과 더 효율적인 데이터 전송을 제공.
TLS: 전송 계층 보안 프로토콜로, 데이터를 암호화하고 인증을 통해 네트워크 상에서의 보안을 제공.
HOL blocking: Head-of-Line Blocking으로, 한 패킷이 지연되면 그 뒤에 오는 다른 패킷들의 전송도 지연되는 문제.
