콘텐츠로 바로가기

TCP, UDP & Transport Reliability

연결 지향형 데이터 전송의 핵심인 TCP와 비연결형 UDP의 작동 물리, 그리고 전역 통신 신뢰성을 위한 혼잡 제어 메커니즘을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

TCP, IP 및 라우팅 프로토콜(TCP, IP & Routing Protocols, TRP)은 거대한 글로벌 네트워크인 인터넷이 데이터를 정확하고 효율적으로 목적지까지 배달하기 위해 사용하는 핵심 역학을 다룹니다.

데이터는 목적지에 도착하기 전까지 수많은 갈림길을 지나며, 때로는 유실되거나 순서가 바뀝니다. 학습자는 연결 지향적이고 신뢰성 높은 TCP의 3-Way Handshake 및 혼잡 제어(Congestion Control) 물리, 비연결형인 UDP의 경량성, 그리고 최적의 경로를 찾는 IP 라우팅 알고리즘(BGP, OSPF 등)을 학습합니다. 이를 통해 네트워크 환경에 최적화된 전송 프로토콜을 선택하고 복잡한 라우팅 구조를 설계할 수 있는 능력을 갖춥니다.

2. Scope & Boundaries

In-Scope

  • Transport Layer Dynamics: TCP 신뢰성 보장(ACK, Retransmission), UDP 헤더 물리 및 용도
  • Network Layer Protocol: IPv4/IPv6 주소 체계, 서브네팅(Subnetting), ICMP 작동 원리
  • Routing Algorithms: 거리 벡터(RIP) vs 상태 링크(OSPF) vs 경로 벡터(BGP) 물리
  • Flow & Congestion Control: 슬라이딩 윈도우(Sliding Window), Slow Start, Fast Retransmit

Out-of-Scope

  • 하드웨어 라우터 장비의 물리적 조립 및 전력 관리 (02. CA 영역으로 위임)
  • 웹 보안(SSL/TLS) 자체의 암호학적 구현 (10. Security 영역으로 위임)

Boundaries

  • TRP vs. Network Foundations: 08-01(NFS)이 '계층 모델과 기본 캡슐화'에 주력한다면, TRP는 'L3(IP)와 L4(TCP/UDP)의 구체적인 전송 및 경로 선택 알고리즘'에 집중합니다.

3. Counterexample

  • 단순히 IP 주소를 할당하는 법을 아는 것은 TRP 학습이 아닙니다. 왜 네트워크에서 **혼잡(Congestion)**이 발생하면 패킷을 버려야 하는지 그 물리적 대기열(Queue) 역학을 설명하고, TCP가 이를 감지하여 어떻게 **전송 속도를 조절(Window scaling)**하는지 그 피드백 루프를 논리적으로 입증할 수 있어야 합니다.

4. Prerequisites

  • 네트워크 기초 및 OSI 스택 (Basic): 계층화와 캡슐화에 대한 기본 개념이 선행되어야 합니다. (08. NFS)
  • 기초 자료 구조 (Recommended): 라우팅 테이블 계산에 필요한 그래프(Dijkstra) 알고리즘 이해가 권장됩니다. (04. CDS)

5. Learning Map

  1. End-to-End Reliability: 송신자와 수신자 간의 데이터 무결성을 보장하는 TCP의 끈질긴 노력을 배웁니다.
  2. Addressing the World: 전 지구적 장치 식별을 위한 IP 주소 지정과 서브네팅 물리 구조를 익힙니다.
  3. The Best Path: 수억 개의 노드 중에서 최적의 길을 찾아내는 라우팅 프로토콜의 논리 체계를 이해합니다.
  4. Traffic Tuning: 트래픽 폭주 시 시스템이 스스로 속도를 줄여 붕괴를 막는 제어 역학을 탐구합니다.

6. Learning Topics

Basic

Core: 전송 계층과 TCP vs UDP (Transport Mechanics)

  • Why to Learn: 애플리케이션의 성격(신뢰성 vs 속도)에 맞는 전송 방식을 선택하기 위함입니다.
  • What to Learn:
    • TCP와 UDP의 물리적 헤더 구조 차이(오버헤드 분석)
    • Connection-oriented(TCP) vs Connectionless(UDP) 상태 관리
    • 포트(Port) 번호를 통한 프로세스 식별 물리
  • How to Learn:
    • 동일한 데이터를 TCP와 UDP 소켓으로 각각 전송하며 패킷 수와 지연 시간의 관계 측정
    • 3-Way Handshake 과정을 Wireshark로 캡처하여 SYN/ACK 상태 변화 직접 확인
  • Implement: 실시간 게임(UDP)과 파일 전송(TCP) 시나리오에 따른 프로토콜 선택 가이드

Core: TCP 연결 관리 및 상태 전이 (Connection Lifecycle)

  • Why to Learn: 클라이언트-서버 간의 세션을 안전하게 시작하고 종료하며, 고스트 세션으로 인한 자원 낭비를 방지하기 위함입니다.
  • What to Learn:
    • 3-Way Handshake 및 4-Way Handshake의 물리적 패킷 플로우
    • TCP State Machine: LISTEN, SYN-SENT, ESTABLISHED, TIME-WAIT 엔트로피
    • Retransmission Timeout(RTO) 산출 물리 및 Karn's Algorithm
  • How to Learn:
    • netstat -an 또는 ss 명령을 통해 특정 서비스의 TCP 상태 변화(특히 TIME-WAIT)를 모니터링합니다.
    • 서버를 갑자기 중단시켰을 때 클라이언트 측에서 발생하는 재전송 시도 횟수를 측정합니다.
  • Implement: 대규모 동시 접속 환경에서 자원 고갈을 막기 위한 TCP Keep-alive 및 타임아웃 최적화 설정안.

Practical

Core: 흐름 제어와 슬라이딩 윈도우 (Flow Control Mechanics)

  • Why to Learn: 수신 측의 처리 속도에 맞춰 송신 속도를 조절함으로써 버퍼 오버플로우와 데이터 유실을 방지하기 위함입니다.
  • What to Learn:
    • Sliding Window: 수신 측의 Window Advertisement를 통한 가변적 전송 제어
    • Zero Window 및 Window Scaling 옵션의 물리적 필요성
    • Silly Window Syndrome과 Nagle 알고리즘의 상충 관계(Latency vs Throughput)
  • How to Learn:
    • 대용량 파일 전송 중 수신 측 부하를 인위적으로 높여 Window Size가 0으로 수렴하는 과정을 Wireshark로 분석합니다.
    • 작은 패킷을 자주 보낼 때 Nagle's Algorithm이 통신 지연에 미치는 영향을 측정합니다.
  • Implement: 특정 네트워크 지연(RTT) 환경에서 처리량을 극대화하기 위한 최적의 TCP 버퍼 사이즈 산출 보고서.

Advanced

Core: 혼잡 및 흐름 제어 심화 (Flow & Congestion Advanced)

  • Why to Learn: 대규모 네트워크 부하 상황에서도 패킷 손실을 최소화하고 처리량을 극대화하기 위해서입니다.
  • What to Learn:
    • 흐름 제어(Flow Control): 슬라이딩 윈도우와 수신자 버퍼 상태 통지
    • 혼잡 제어(Congestion Control): AIMD 전략, Slow Start 임계치 변화 물리
    • 현대적 TCP 변종(BBR, Reno 등)의 알고리즘별 물리적 특성 비교
  • How to Learn:
    • 인위적으로 패킷 드롭(Drop)을 일으켰을 때 TCP Window Size가 급격히 줄어드는 현상 계측
    • 대역폭 지연 곱(BDP)을 계산하여 대용량 전송 환경의 TCP 버퍼 사이즈 최적화 연구
  • Implement: 네트워크 지연이 높은 환경(위성, 장거리 등)에서의 TCP 성능 최적화 파라미터 제안서

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core/misused/legacy)
3-Way Handshake TCP 연결 설정 시 송수신자 간의 신뢰를 확인하기 위해 세 단계의 패킷을 주고받는 물리적 절차입니다. 기본 연결 설정 SYN / ACK 4-Way Handshake 단순히 '인사'로 오해 P1:CS2023/Protocols core
Subnet Mask IP 주소에서 어디까지가 네트워크 주소이고 어디서부터 호스트 주소인지를 구분하는 32비트 숫자입니다. 추천 주소 할당 CIDR Gateway 단순히 'IP의 일부'로 오해 Industry 1519 core
OSPF 네트워크 상태 정보(Link-state)를 모든 라우터가 공유하여 최단 경로를 찾는 내부용 동적 라우팅 프로토콜입니다. 실무 경로 선택 Dijkstra BGP / RIP 단순히 '길찾기'로 오해 Industry 2328 core
Congestion Window 네트워크 혼잡을 피하기 위해 송신자가 한 번에 보낼 수 있는 데이터의 양을 결정하는 가변적 창(Window)입니다. 심화 성능 조절 Slow Start Receive Window 수신자 버퍼와 혼동함 P1:CS2023/Performance core

8. References

Primary References

Secondary References

  • [Computer Networks] Andrew S. Tanenbaum — Deep academic perspective on TRP.
  • [TCP/IP Illustrated, Vol 2] W. Richard Stevens — Detailed implementation.

Industry References

  • [RFC 793 (TCP)] — Official protocol specification.
  • [Cisco: Introduction to IP Routing] — Practical networking equipment standard.

9. Final Checklist

Primary Checklist

  • TCP가 특정 패킷의 유실을 인지했을 때, 재전송을 위해 수행하는 물리적 단계(Fast Retransmit 등)를 기술할 수 있는가? (P1)
  • IP 주소와 서브넷 마스크를 보고 해당 네트워크의 브로드캐스트 주소와 사용 가능한 호스트 범위를 계산 가능한가? (P1)

Secondary Checklist

  • 동일한 네트워크 부하 상황에서 OSPF와 BGP가 경로를 선택하는 물리적 기준(Metric)의 본질적 차이를 식별하는가?
  • TCP 타임아웃(RTO) 설정이 너무 짧거나 길 때 각각 네트워크 성능에 미치는 물리적 폐해를 인지하고 있는가?

Industry Checklist

  • 실무 서비스에서 대역폭은 충분한데 파일 전송 속도가 나지 않을 때, TCP 윈도우 사이즈와 레이턴시의 관계를 통해 원인을 진단 가능한가? (SFIA)
  • L3 스위치와 라우터의 물리적 성능 차이가 실제 패킷 포워딩 지연에 미치는 영향을 제안 및 분석 가능한가?