PDU(Protocol Data Unit, 프로토콜 데이터 단위)

PDU(Protocol Data Unit) 는 네트워크 통신에서 각 프로토콜 계층이 다루는 데이터 블록을 의미하며, 계층별로 서로 다른 명칭과 헤더 구조를 가진다.

OSI 참조 모델 (7 계층) 과 TCP/IP 모델 (4 계층) 은 모두 PDU 를 통해 계층 간 역할 분리와 독립성을 구현한다.
물리 계층 (Layer 1) 에서는 비트 (Bit) 스트림으로 표현되고,
데이터링크 계층 (Layer 2) 에서는 프레임 (Frame) 에 MAC 주소와 FCS 를 포함하며,
네트워크 계층 (Layer 3) 에서는 패킷 (Packet) 에 IP 주소를 담고,
전송 계층 (Layer 4) 에서는 세그먼트 (Segment, TCP) 또는 데이터그램 (Datagram, UDP) 에 포트 번호를 명시한다.
상위 계층 (5~7 계층) 은 통칭 데이터 (Data) 또는 메시지로 불린다.

각 계층은 상위 계층 PDU 를 페이로드로 받아들이고 고유 헤더를 추가하는 캡슐화 (Encapsulation) 를 수행하며, 수신 측은 역캡슐화 (Decapsulation) 를 통해 원본 데이터를 복원한다.

PDU 구조 이해는 패킷 분석, 방화벽 규칙 설정, QoS(Quality of Service) 정책, MTU(Maximum Transmission Unit) 최적화 등 실무 네트워크 운영의 핵심이다. 또한 SDN(Software-Defined Networking), NFV(Network Functions Virtualization) 환경에서 계층별 헤더 조작과 트래픽 제어를 위한 기초 지식으로 작용한다.

기본 개념과 배경

PDU 의 정의와 특징, 등장 배경, 해결하려는 문제, 흔한 오해, 핵심 용어 정합을 다룬다. 네트워크 계층 모델의 근간이 되는 개념을 명확히 이해하는 것이 목표다.

정의 (Definition)

PDU(Protocol Data Unit) 는 네트워크 프로토콜 스택의 각 계층에서 처리·전송하는 데이터 블록을 의미한다.
보통 헤더(제어정보) + 페이로드(SDU) 구조를 가지며 각 계층의 동작 규칙에 따라 다르게 이름을 가지며 네트워크 프로토콜 효율화에 중요한 역할을 한다.

OSI 참조 모델과 TCP/IP 모델에서 각 계층은 고유한 PDU 이름과 헤더·트레일러 구조를 정의하며, 이를 통해 계층 간 역할 분리와 독립적 프로토콜 설계를 구현한다.
예를 들어, TCP 세그먼트는 전송 계층 PDU 로, IP 패킷은 네트워크 계층 PDU 로, 이더넷 프레임은 데이터링크 계층 PDU 로 지칭된다.

특징 (Characteristics)

PDU 는 각 계층마다 별도의 명칭 (예: Bit, Frame, Packet, Segment 등) 을 가지며, 계층별 프로토콜에 따라 구조와 필드 구성이 달라진다. 캡슐화 과정을 거치며 이전 계층의 데이터 (SDU) 를 포함하고, 송수신 동작의 독립성을 유지한다.

PDU 의 12 가지 구조적 특징

PDU 의 12 가지 특징은

  1. **구조/명명
  2. 크기/경로 제약
  3. 신뢰/품질 제어
  4. 운영/가시성·성능
    의 4 가지 차원으로 묶인다. 이는 상호 의존적이다.
    구조/옵션 결정이 곧바로 크기/경로 제약에 반영되고, 여기서의 실패는 신뢰/품질의 재전송·지연을 키운다. 암호화·오프로딩은 관찰성을 바꾸므로, 캡처 위치와 텔레메트리를 ’ 이중화 ’ 하는 것이 빠른 트러블슈팅의 핵심이다.

실무에서는 이 4 가지 차원을 동시에 점검해야 헤더 예산·손실/지연·보안·관찰성이 균형을 이룬다.
핵심은 “헤더가 쌓이면 MTU 는 줄고, 그 결과 분할/단편화·재전송이 증가하며, 암호화/오프로딩/터널은 분석 난이도를 높인다 " 는 연쇄 효과를 이해하는 것이다.

구조/명명
크기/경로 제약
신뢰/품질 제어
운영/가시성·성능
PDU 의 12 가지 구조적 특징 (요약)
차원특징설명대표 필드/메커니즘영향 (성능/신뢰/보안)
구조/명명계층 종속 명명L2=Frame, L3=Packet, L4=Segment/Datagram 등 관찰 계층에 따라 명칭·의미 상이802.3/802.11, IP, TCP/UDP모델 정합·분석 정확도 ↑
구조/명명헤더 구조 (고정 + 옵션)고정 필드 + 옵션/확장 (EH/옵션) 로 확장성·호환성·오버헤드 균형IHL, Next Header, TCP Options오버헤드·확장성 트레이드오프
구조/명명주소/식별/흐름 라벨5- 튜플 외 CID/Flow Label/VLAN/SPI 등 식별자SA/DA, Src/Dst, FlowLbl, DCID/SCID로드밸런싱/추적성/정책
크기/경로 제약길이 제약 (MTU/MSS/최소 프레임)MTU/MSS/패딩 규칙이 최대 페이로드를 결정MTU, TotalLen, PayloadLen블랙홀/재전송/지연 영향
크기/경로 제약단편화 정책IPv4(중간 가능) vs IPv6(송신자만)DF, FragOff, IPv6 Frag EH재조립 비용/손실 민감
크기/경로 제약PMTUD/PLPMTUD경로 MTU 탐색; ICMP 의존/프로빙 기반ICMP FragNeeded/PTB블랙홀 회피/적응성
크기/경로 제약터널/오버레이 중첩VLAN/VXLAN/GRE/IPsec 등 헤더 중첩EtherType, VNI, SPIMTU 악화·성능 저하
신뢰/품질 제어오류 검출/복구FCS/체크섬/AEAD 등 계층별 무결성·복구FCS, HeaderChk, L4 Checksum, AEAD Tag무결성/처리비용/드롭 패턴
신뢰/품질 제어순서/신뢰 의미TCP(순서·재전송), UDP(비연결), QUIC(스트림 단위)Seq/Ack, Stream ID지연/손실/복원 전략 차이
신뢰/품질 제어혼잡/우선 신호ECN/DSCP 로 혼잡·우선순위 신호화ECT/CE, DSCP/Traffic Class드롭률·품질 보장
운영/가시성·성능보안↔가시성TLS/QUIC 암호화로 가시성↓·오버헤드↑TLS Record, AEADDPI 난이도·MTU 예산
운영/가시성·성능오프로딩 (TSO/GSO/GRO)NIC 분할/병합으로 PPS↑, 캡처 왜곡 우려Linux OffloadsCPU↓/가시성 주의

등장 배경 (Background)

계층화된 네트워크 모델 (OSI, TCP/IP) 은 시스템 간 통신을 표준화하고, 확장성과 신뢰성을 높이기 위해 개발되었다. 각 계층의 PDU 는 이러한 설계 원칙에 따라 독립적으로 정의되며, 계층 간 인터페이스 및 프로토콜 동작을 명확하게 한다.

각 계층이 독립적으로 PDU 를 정의함으로써, 하드웨어·소프트웨어 변경 시에도 상·하위 계층에 영향을 최소화하고, 이기종 네트워크 간 상호운용성을 확보할 수 있게 되었다.
이후 이더넷 (IEEE 802.3), Wi-Fi(IEEE 802.11), MPLS, VXLAN 등 다양한 프로토콜이 PDU 구조를 기반으로 발전했다.

해결하려는 문제 (Problem)

PDU 개념은 데이터 통신에서 계층 간 정보 전송의 불명확성, 데이터 포장 과정의 오류, 프로토콜 혼동 문제를 해결하고, 계층마다 일관된 데이터 단위 관리와 에러 검출/복구를 가능하게 한다.

Before PDU 개념 도입:

After PDU 개념 도입:

흔한 오해 (Misconceptions)

오해 1: PDU 는 모든 계층에서 ’ 패킷 ’ 으로 부른다

오해: 데이터 전송 단위를 모두 ’ 패킷 ’ 으로 지칭한다
원인: 네트워크 용어의 일반화/간소화
반례: 전송 계층은 ’ 세그먼트 ‘(TCP), 네트워크 계층 (Layer 3) 은 ’ 패킷 ‘, 프레임 (Layer 2), 세그먼트 (Layer 4) 이라 불린다
올바른 개념: PDU 는 각 계층별 데이터 단위의 총칭이고, 패킷은 그 중 네트워크 계층 (IP) PDU 를 가리킨다.

오해 2: PDU 는 원래 데이터와 별개로 존재한다

오해: PDU 와 원래 데이터가 별도의 단위로 간주된다
원인: 헤더와 페이로드 구분 개념의 오해
반례: PDU 는 항상 각각의 계층 데이터 (=SDU) 와 해당 계층 제어정보가 결합된 전체 메시지이다
올바른 개념: PDU = 상위 계층 데이터 (SDU) + 현재 계층 제어정보

오해 3: 헤더만 추가하면 PDU 가 된다

오해: 헤더만 있으면 PDU 구조가 완성된다고 이해
원인: 캡슐화 개념 학습 시 헤더 추가에만 집중
반례: 데이터링크 계층 (예: 이더넷) 은 헤더뿐 아니라 트레일러 (FCS, Frame Check Sequence) 도 추가하며, 일부 프로토콜은 페이로드 패딩도 포함
올바른 개념: PDU 는 헤더 + 페이로드 + (선택적) 트레일러로 구성되며, 계층별로 트레일러 유무와 패딩 규칙이 다르다.

오해 4: 상위 계층 PDU 는 하위 계층과 무관하다

오해: 각 계층 PDU 는 완전히 독립적이므로 상호 영향이 없다
원인: 계층 독립성 원칙을 절대적으로 해석
반례: MTU(Maximum Transmission Unit) 제약, IP 단편화 (Fragmentation), TCP MSS(Maximum Segment Size) 조정 등 하위 계층의 물리적 제약이 상위 계층 PDU 크기에 직접 영향을 미침
올바른 개념: 계층 간 독립성은 인터페이스 수준의 추상화이며, 성능·효율성 측면에서는 상·하위 계층 간 PDU 크기 협상과 최적화가 필수다.

핵심 개념 정의·용어 정합

PDU(Protocol Data Unit), SDU(Service Data Unit) 는 계층화 모델에서 각각 ’ 동일 계층 간 송수신 단위 ’ 와 ’ 인접 계층간 전달 단위 ’ 로 정의된다.
각 계층의 PDU 명칭, 구조, 역할을 명확히 구분해야 하며, 용어 혼동을 방지하는 것이 중요하다.

사전 지식 (Prerequisites):

핵심 용어:

계층별 PDU 구조 및 명칭

OSI 7 계층과 TCP/IP 모델의 각 계층별 PDU 명칭, 헤더 구조, 주요 필드를 상세히 다룬다. 실무에서 가장 많이 사용되는 이더넷 프레임, IP 패킷, TCP 세그먼트를 중심으로 설명한다.

OSI 7 계층 PDU 매핑

OSI 계층계층 번호PDU 명칭주요 헤더 정보예시 프로토콜
물리 (Physical)1비트 (Bit)없음 (전기·광 신호)Ethernet PHY, RS-232
데이터링크 (Data Link)2프레임 (Frame)MAC 주소 (출발지·목적지), FCSEthernet, Wi-Fi(802.11), PPP
네트워크 (Network)3패킷 (Packet)IP 주소 (출발지·목적지), TTL, 프로토콜 IDIPv4, IPv6, ICMP
전송 (Transport)4세그먼트 (Segment) / 데이터그램 (Datagram)포트 번호 (출발지·목적지), 순서 번호, 체크섬TCP, UDP, SCTP
세션 (Session)5데이터 (Data)세션 ID, 동기화 포인트NetBIOS, RPC
표현 (Presentation)6데이터 (Data)인코딩, 암호화 정보TLS, JPEG, MPEG
응용 (Application)7메시지 (Message) / 데이터 (Data)응용 프로토콜별 헤더HTTP, DNS, SMTP, FTP
flowchart TD
    application-layer["application-layer(Data)"]
    transport-layer["transport-layer(Segment/Datagram)"]
    network-layer["network-layer(Packet)"]
    datalink-layer["datalink-layer(Frame)"]
    physical-layer["physical-layer(Bit)"]

    application-layer --> transport-layer
    transport-layer --> network-layer
    network-layer --> datalink-layer
    datalink-layer --> physical-layer

<OSI 7 계층에서의 PDU 흐름>
상위 계층 데이터가 하위 계층으로 내려갈 때, 각 계층에서 헤더가 추가되어 계층별로 새로운 PDU 가 생성된다.
실제 송신시에는 physical 계층의 신호 (Bit) 로 변환된다.

TCP/IP 모델 PDU 매핑

TCP/IP 프로토콜 스택 구성과 각 계층 PDU 의 특징, 구조를 병렬 비교한다.

TCP/IP 계층PDU 명칭예시 프로토콜
응용 (Application)데이터 (Data)HTTP, FTP, DNS
전송 (Transport)세그먼트 (Segment)/데이터그램 (Datagram)TCP, UDP
인터넷 (Internet)패킷 (Packet)IP
네트워크 액세스 (Link)프레임 (Frame)Ethernet, Wi-Fi

<TCP/IP 모델 계층별 PDU 비교>
TCP/IP 스택에서는 OSI 에 비해 계층 수가 적지만, 각 계층의 PDU 명칭과 실제 동작 방식은 OSI 와 거의 동일하다. 또한 네트워크 장비나 툴에서 각 PDU 명칭을 올바르게 사용하는 것이 중요하다.

graph TD
    A[응용 계층<br>Application Layer] -->|데이터/메시지<br>Data/Message| B[전송 계층<br>Transport Layer]
    B -->|세그먼트Segment or 데이터그램Datagram| C[인터넷 계층<br>Internet Layer]
    C -->|패킷Packet| D[네트워크 접근 계층<br>Network Access Layer]
    D -->|프레임Frame| E[물리 매체<br>Physical Medium]
    E -->|비트Bit| F[네트워크 전송]
    
    style A fill:#e1f5ff
    style B fill:#fff4e1
    style C fill:#ffe1f5
    style D fill:#e1ffe1
    style E fill:#f5e1ff

TCP/IP 4 계층 모델은 OSI 모델을 단순화하여, 응용 (57 계층 통합), 전송 (4 계층), 인터넷 (3 계층), 네트워크 접근 (12 계층 통합) 으로 구성된다.
각 계층은 상위 PDU 를 페이로드로 받아 자신의 헤더를 추가하며, 최하위 네트워크 접근 계층에서 프레임으로 캡슐화된 후 비트 스트림으로 전송된다. 이 도식은 실무에서 가장 많이 사용되는 모델로, 인터넷 프로토콜 스택의 핵심 구조를 나타낸다.

이더넷 프레임 구조 (Layer 2 PDU)

필드크기 (바이트)설명
Preamble7프레임 시작 신호 (10101010 패턴)
SFD(Start Frame Delimiter)1프레임 시작 (10101011)
Destination MAC6목적지 MAC 주소
Source MAC6출발지 MAC 주소
Type/Length2상위 프로토콜 타입 (예: 0x0800=IPv4) 또는 페이로드 길이
Payload46~1500상위 계층 PDU(IP 패킷 등)
FCS(Frame Check Sequence)4CRC-32 오류 검출

코드 예시: Python 으로 이더넷 프레임 파싱

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import struct

def parse_ethernet_frame(frame_bytes):
    """
    이더넷 프레임을 파싱하여 주요 필드 추출
    
    입력: frame_bytes (bytes) - 이더넷 프레임 바이트 스트림
    출력: dict - 파싱된 필드 딕셔너리
    """
    # 최소 길이 검증 (Preamble·SFD 제외 시 64바이트)
    if len(frame_bytes) < 64:
        raise ValueError("Invalid frame length")
    
    # Preamble·SFD는 물리 계층에서 제거되므로 보통 Wireshark 등에서는 보이지 않음
    # 여기서는 Destination MAC부터 시작한다고 가정
    dst_mac = frame_bytes[0:6].hex(':')
    src_mac = frame_bytes[6:12].hex(':')
    eth_type = struct.unpack('!H', frame_bytes[12:14])[0]  # Big-endian 2바이트
    payload = frame_bytes[14:-4]  # FCS 4바이트 제외
    fcs = struct.unpack('!I', frame_bytes[-4:])[0]
    
    return {
        'dst_mac': dst_mac,
        'src_mac': src_mac,
        'type': hex(eth_type),  # 예: 0x0800 (IPv4), 0x86dd (IPv6)
        'payload_len': len(payload),
        'fcs': hex(fcs)
    }

# 예시 프레임 (간략화, 실제는 Wireshark 캡처 데이터 사용)
# 예: dst_mac=ff:ff:ff:ff:ff:ff, src_mac=00:11:22:33:44:55, type=0x0800, payload=46바이트, FCS=임의
example_frame = bytes.fromhex(
    'ffffffffffff001122334455080000450000…' + '12345678'
)
# 실제 사용 시: result = parse_ethernet_frame(example_frame)

이더넷 프레임은 데이터링크 계층 PDU 로, MAC 주소 기반 스위칭을 위한 헤더와 오류 검출을 위한 FCS 트레일러를 포함한다.
Type/Length 필드 (2 바이트) 는 상위 프로토콜 (예: IPv4=0x0800, ARP=0x0806) 을 식별하며, Payload 는 46~1500 바이트 범위를 가진다 (MTU=1518 바이트, Jumbo Frame 은 9000 바이트까지 확장 가능). FCS 는 CRC-32 알고리즘으로 프레임 전체의 무결성을 검증한다.

IP 패킷 구조 (Layer 3 PDU)

IPv4 헤더 주요 필드:

필드크기 (비트)설명
Version4IP 버전 (4)
IHL(Internet Header Length)4헤더 길이 (4 바이트 단위, 최소 5=20 바이트)
DSCP/ECN8서비스 품질 (QoS) 및 혼잡 제어
Total Length16헤더 + 페이로드 전체 길이 (최대 65535 바이트)
Identification16단편화 시 원본 패킷 식별자
Flags + Fragment Offset16단편화 제어 (DF, MF 플래그 및 오프셋)
TTL(Time To Live)8라우팅 홉 제한 (0 도달 시 패킷 폐기)
Protocol8상위 프로토콜 (6=TCP, 17=UDP, 1=ICMP)
Header Checksum16헤더 오류 검출 (페이로드 제외)
Source IP32출발지 IPv4 주소
Destination IP32목적지 IPv4 주소
Options가변선택적 필드 (보안, 라우팅 기록 등)

IP 패킷 캡슐화 플로우

sequenceDiagram
    participant App as 응용 계층
    participant TCP as 전송 계층(TCP)
    participant IP as 네트워크 계층(IP)
    participant DL as 데이터링크 계층
    
    App->>TCP: 데이터 전송 요청
    TCP->>TCP: 세그먼트 생성<br>(헤더 추가: 출발지·목적지 포트)
    TCP->>IP: 세그먼트 전달
    IP->>IP: 패킷 생성<br>(헤더 추가: 출발지·목적지 IP, TTL)
    IP->>DL: 패킷 전달
    DL->>DL: 프레임 생성<br>(헤더·트레일러 추가: MAC 주소, FCS)
    DL->>DL: 물리 매체로 비트 전송

IP 패킷은 네트워크 계층 PDU 로, 출발지·목적지 IP 주소, TTL, 프로토콜 ID 등을 포함한다.
TTL 은 라우팅 루프 방지를 위해 각 라우터를 거칠 때마다 1 씩 감소하며, 0 도달 시 패킷이 폐기된다.
Identification, Flags, Fragment Offset 필드는 MTU 초과 시 패킷 단편화와 재조립에 사용된다. Header Checksum 은 헤더만 검증하며, 페이로드 무결성은 상위 계층 (예: TCP 체크섬) 이 담당한다.

TCP 세그먼트 구조 (Layer 4 PDU)

TCP 헤더 주요 필드:

필드크기 (비트)설명
Source Port16출발지 포트 번호 (0~65535)
Destination Port16목적지 포트 번호
Sequence Number32세그먼트 순서 번호 (재조립용)
Acknowledgment Number32수신 확인 번호 (다음 기대 순서)
Data Offset4TCP 헤더 길이 (4 바이트 단위, 최소 5=20 바이트)
Flags9제어 플래그 (SYN, ACK, FIN, RST, PSH, URG 등)
Window Size16수신 윈도우 크기 (흐름 제어)
Checksum16헤더 + 페이로드 + 의사 헤더 오류 검출
Urgent Pointer16긴급 데이터 포인터 (URG 플래그 설정 시)
Options가변선택적 필드 (MSS, Window Scale, SACK 등)

코드 예시: Python 으로 TCP 세그먼트 파싱

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import struct

def parse_tcp_segment(segment_bytes):
    """
    TCP 세그먼트를 파싱하여 주요 필드 추출
    
    입력: segment_bytes (bytes) - TCP 세그먼트 바이트 스트림
    출력: dict - 파싱된 필드 딕셔너리
    에러케이스: 최소 길이(20바이트) 미만 시 ValueError
    """
    if len(segment_bytes) < 20:
        raise ValueError("TCP segment too short")
    
    # Big-endian 형식으로 헤더 파싱
    src_port, dst_port, seq, ack, offset_flags, window, checksum, urg_ptr = \
        struct.unpack('!HHIIHHH', segment_bytes[:20])
    
    # Data Offset은 상위 4비트(4바이트 단위)
    header_len = (offset_flags >> 12) * 4
    # Flags는 하위 9비트 (NS=1, CWR=1, ECE=1, URG=1, ACK=1, PSH=1, RST=1, SYN=1, FIN=1)
    flags = offset_flags & 0x01FF
    
    payload = segment_bytes[header_len:]
    
    return {
        'src_port': src_port,
        'dst_port': dst_port,
        'seq': seq,
        'ack': ack,
        'header_len': header_len,
        'flags': {
            'SYN': bool(flags & 0x02),
            'ACK': bool(flags & 0x10),
            'FIN': bool(flags & 0x01),
            'RST': bool(flags & 0x04),
            'PSH': bool(flags & 0x08)
        },
        'window': window,
        'checksum': hex(checksum),
        'payload_len': len(payload)
    }

# 예시: SYN 세그먼트 (간략화)
# src=12345, dst=80, seq=1000, ack=0, flags=SYN, window=65535
example_tcp = bytes.fromhex('30390050000003e8000000005002ffff0000')
# 실제 사용 시: result = parse_tcp_segment(example_tcp)

TCP 세그먼트는 전송 계층 PDU 로, 포트 번호를 통해 응용 프로세스를 식별하고, 순서 번호와 확인 번호로 신뢰성 있는 데이터 전송을 구현한다.
Flags 필드는 연결 설정 (SYN), 확인 (ACK), 종료 (FIN), 재설정 (RST) 등 제어 기능을 담당하며, Window Size 는 TCP 흐름 제어를 위한 수신 버퍼 크기를 알린다. Options 필드는 MSS(Maximum Segment Size), Window Scale, SACK(Selective Acknowledgment) 등 성능 최적화 파라미터를 협상한다.

대표 PDU 형식 빠르게 보기

표 4-1. 필수 필드 스냅샷

프로토콜핵심 필드 (일부)체크섬/검증특이점
Ethernet IIDA/SA, EtherType, FCSFCS(32-bit CRC)최소 64B 프레임, 점보 가능
IPv4Version/IHL, TotalLen, ID/Flags/FragOff, TTL, Proto, HdrChk헤더 체크섬중간 단편화 허용
IPv6Version, Traffic Class, Flow Label, PayloadLen, NextHdr, HopLimit무 (상위에서)확장헤더 체인, MTU 최소 1280
TCPPorts, Seq/Ack, Flags, Window, Checksum, Options의무신뢰·흐름·혼잡제어
UDPPorts, Length, ChecksumIPv6 에서 의무저오버헤드
TLS 1.3ContentType, Length(+AEAD Tag)AEAD0-RTT/암호화 가시성 제한
QUICDCID/SCID, Pn, Frames(varint)AEAD사용자 공간, 연결이동/멀티플렉싱
SCTPVerification Tag, TSN, Streams, ChunksCRC32c멀티스트림/멀티홈

필드 존재와 검증 방식이 PDU 의 신뢰·오버헤드·가시성을 좌우한다. 예컨대 IPv6 는 헤더 체크섬을 제거해 라우터 처리 비용을 낮췄으며, QUIC/TLS 는 암호화로 중간 가시성을 줄여 상위 진단 기법이 요구된다.

Python 스니펫 4-B—20 바이트 IPv4 고정헤더 파서 (학습용)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 목적: 바이트열에서 IPv4 고정 헤더(20B)를 파싱하여 핵심 필드 추출
# 입력: bytes(길이>=20)
# 출력: dict
# 예외: 길이/버전 오류 발생 시 ValueError

import struct

def parse_ipv4_header(buf: bytes) -> dict:
    if len(buf) < 20:
        raise ValueError("short buffer")
    vihl, tos, total_len, ident, flags_frag, ttl, proto, hdr_chk, src, dst = struct.unpack(
        "!BBHHHBBHII", buf[:20]
    )
    version = vihl >> 4
    ihl = (vihl & 0x0F) * 4
    if version != 4 or ihl < 20:
        raise ValueError("invalid IPv4 header")
    flags = (flags_frag >> 13) & 0x7
    frag_off = flags_frag & 0x1FFF
    return {
        "version": version,
        "ihl": ihl,
        "total_len": total_len,
        "id": ident,
        "flags": flags,
        "frag_off": frag_off,
        "ttl": ttl,
        "proto": proto,
        "hdr_checksum": hdr_chk,
        "src": src,
        "dst": dst,
    }

해설: 교육 목적의 최소 파서로, 옵션/확장 미처리·체크섬 재계산은 생략했다. 실제 구현은 경계검사, 옵션 파싱, 조각 재조립, 보안 처리까지 필요하다.

캡슐화와 역캡슐화 메커니즘

PDU 의 핵심 동작 원리인 캡슐화 (Encapsulation) 와 역캡슐화 (Decapsulation) 과정을 상세히 다룬다.
송·수신 측의 계층별 처리 흐름과 실무 네트워크 장비 (라우터, 스위치) 의 PDU 조작 방식을 설명한다.

캡슐화 과정 (Encapsulation)

정의: 송신 측에서 상위 계층 PDU 를 페이로드로 받아, 각 계층의 헤더 (및 트레일러) 를 추가하여 하위 계층 PDU 를 생성하는 과정.

단계별 흐름:

graph LR
    A[응용 데이터<br>Application Data] -->|전송 계층| B[TCP 세그먼트<br>TCP Header + Data]
    B -->|네트워크 계층| C[IP 패킷<br>IP Header + Segment]
    C -->|데이터링크 계층| D[이더넷 프레임<br>Ethernet Header + Packet + FCS]
    D -->|물리 계층| E[비트 스트림<br>Bit Stream]
    
    style A fill:#e1f5ff
    style B fill:#fff4e1
    style C fill:#ffe1f5
    style D fill:#e1ffe1
    style E fill:#f5e1ff

표: 계층별 캡슐화 단계

계층입력 (상위 PDU)추가 정보출력 (현 계층 PDU)예시 프로토콜
응용 (7)사용자 데이터HTTP 헤더HTTP 요청/응답HTTP, DNS
전송 (4)HTTP 메시지TCP 헤더 (포트, 순서 번호)TCP 세그먼트TCP
네트워크 (3)TCP 세그먼트IP 헤더 (출발지·목적지 IP)IP 패킷IPv4
데이터링크 (2)IP 패킷이더넷 헤더 (MAC 주소) + FCS이더넷 프레임Ethernet
물리 (1)이더넷 프레임전기·광 신호 변환비트 스트림1000BASE-T

코드 예시: Python 으로 간단한 캡슐화 시뮬레이션

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
def encapsulate_data(app_data):
    """
    응용 데이터를 계층별로 캡슐화하는 시뮬레이션
    
    입력: app_data (str) - 응용 계층 데이터
    출력: dict - 각 계층별 PDU
    """
    # 응용 계층 (예: HTTP GET 요청)
    http_header = "GET /index.html HTTP/1.1\r\nHost: example.com\r\n\r\n"
    http_pdu = http_header + app_data
    
    # 전송 계층 (TCP 헤더 간략화: 포트 번호만 표시)
    tcp_header = f"SRC_PORT=12345|DST_PORT=80|SEQ=1000|"
    tcp_segment = tcp_header + http_pdu
    
    # 네트워크 계층 (IP 헤더 간략화: IP 주소만 표시)
    ip_header = f"SRC_IP=192.168.1.100|DST_IP=93.184.216.34|TTL=64|"
    ip_packet = ip_header + tcp_segment
    
    # 데이터링크 계층 (이더넷 헤더 간략화: MAC 주소만 표시)
    eth_header = f"SRC_MAC=00:11:22:33:44:55|DST_MAC=AA:BB:CC:DD:EE:FF|TYPE=0x0800|"
    eth_trailer = "|FCS=0x12345678"
    ethernet_frame = eth_header + ip_packet + eth_trailer
    
    return {
        'application': http_pdu,
        'transport': tcp_segment,
        'network': ip_packet,
        'data_link': ethernet_frame
    }

# 예시 실행
result = encapsulate_data("Hello, World!")
# 출력: result['data_link']에 전체 캡슐화된 프레임 포함

캡슐화는 상위→하위 방향으로 진행되며, 각 계층은 상위 PDU 전체를 " 불투명한 페이로드 " 로 취급한다. 예를 들어, 네트워크 계층 (IP) 은 TCP 세그먼트의 내부 구조를 알 필요 없이 헤더만 추가하여 패킷을 생성한다. 이는 계층 간 독립성과 확장성을 보장한다. 실무에서는 네트워크 스택 (예: Linux kernel 의 sk_buff 구조체) 이 각 계층에서 헤더를 prepend 하는 방식으로 구현된다.

역캡슐화 과정 (Decapsulation)

정의: 수신 측에서 하위 계층 PDU 로부터 헤더 (및 트레일러) 를 제거하여 상위 계층 PDU 를 복원하는 과정.

단계별 흐름:

graph LR
    A[비트 스트림<br>Bit Stream] -->|물리 계층| B[이더넷 프레임<br>Ethernet Frame]
    B -->|데이터링크 계층| C[IP 패킷<br>IP Packet]
    C -->|네트워크 계층| D[TCP 세그먼트<br>TCP Segment]
    D -->|전송 계층| E[응용 데이터<br>Application Data]
    
    style A fill:#f5e1ff
    style B fill:#e1ffe1
    style C fill:#ffe1f5
    style D fill:#fff4e1
    style E fill:#e1f5ff

표: 계층별 역캡슐화 단계

계층입력 (하위 PDU)제거 정보출력 (상위 PDU)검증 사항
물리 (1)비트 스트림신호 복조이더넷 프레임프리앰블·SFD 확인
데이터링크 (2)이더넷 프레임이더넷 헤더 + FCSIP 패킷FCS 검증, MAC 주소 필터링
네트워크 (3)IP 패킷IP 헤더TCP 세그먼트Header Checksum, TTL 확인
전송 (4)TCP 세그먼트TCP 헤더HTTP 메시지TCP Checksum, 순서 번호 확인
응용 (7)HTTP 메시지HTTP 헤더사용자 데이터응용 프로토콜 규칙 검증

코드 예시: Python 으로 간단한 역캡슐화 시뮬레이션

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def decapsulate_frame(ethernet_frame):
    """
    이더넷 프레임을 역캡슐화하여 응용 데이터 추출
    
    입력: ethernet_frame (str) - 캡슐화된 이더넷 프레임
    출력: str - 응용 계층 데이터
    에러케이스: FCS 불일치 시 None 반환
    """
    # 데이터링크 계층: 이더넷 헤더·트레일러 제거
    if "|FCS=" not in ethernet_frame:
        return None  # FCS 없음 → 손상된 프레임
    
    # FCS 검증 (간략화: 단순 존재 확인)
    parts = ethernet_frame.split("|TYPE=0x0800|")
    if len(parts) != 2:
        return None
    ip_packet = parts[1].split("|FCS=")[0]
    
    # 네트워크 계층: IP 헤더 제거
    if "SRC_IP=" not in ip_packet:
        return None
    tcp_segment = ip_packet.split("|TTL=64|")[1]
    
    # 전송 계층: TCP 헤더 제거
    if "SRC_PORT=" not in tcp_segment:
        return None
    http_pdu = tcp_segment.split("|SEQ=1000|")[1]
    
    # 응용 계층: HTTP 헤더 제거
    if "HTTP/1.1" not in http_pdu:
        return None
    app_data = http_pdu.split("\r\n\r\n")[1]
    
    return app_data

# 예시 실행 (캡슐화 결과를 역캡슐화)
original_data = "Hello, World!"
encapsulated = encapsulate_data(original_data)
recovered_data = decapsulate_frame(encapsulated['data_link'])
assert recovered_data == original_data  # 검증: 원본 데이터 복원 확인

역캡슐화는 하위→상위 방향으로 진행되며, 각 계층은 자신의 헤더를 제거하고 상위 계층으로 페이로드를 전달한다. 데이터링크 계층에서는 FCS 검증을 통해 프레임 무결성을 확인하고, 네트워크 계층에서는 Header Checksum 과 TTL 을 검사하며, 전송 계층에서는 TCP Checksum 과 순서 번호를 확인한다. 검증 실패 시 해당 PDU 는 폐기되고 상위 계층으로 전달되지 않는다.

네트워크 장비의 PDU 처리

장비계층 (주요)관찰/처리 PDU핵심 동작헤더/필드 처리장점주의/한계대표 시나리오
라우터 (Router)L3IP 패킷목적지 IP 기준 라우팅 테이블 조회 후 다음 홉 결정, 역캡슐화→재캡슐화TTL/Hop Limit −1, IPv4 헤더 체크섬 재계산(IPv6 은 없음), 새 L2 헤더(다음 홉 MAC) 부여네트워크 분리/연결, 다양한 라우팅 프로토콜 (OSPF/BGP)ICMP/PMTUD 차단 시 블랙홀, ACL/정책에 따른 처리 지연 가능L3 경로 제어, 사이트 간 연결, 세그먼트 간 통신
스위치 (Switch)L2이더넷 프레임목적지 MAC 기반 CAM(MAC) 테이블 룩업 후 포트 포워딩, 브로드캐스트/플러딩L2 헤더만 확인, 상위 PDU(IPv4/IPv6/TCP/UDP) 는 미건드림선형 속도 처리, 지연·오버헤드 최소루프 시 브로드캐스트 스톰 (→STP 필요), VLAN 설계 필요액세스/엣지 스위칭, 서버 랙 내 고속 L2 스위칭
Layer 3 스위치L3(하드웨어)IP 패킷라우터 기능을 ASIC로 가속, VLAN 간 라우팅 (Inter-VLAN), 멀티캐스트라우터와 동일 (IPv4 체크섬/TTL, 새 L2 헤더), 다만 하드웨어 경로고속 L3 포워딩, 단일 섀시 내 간결 설계고급 라우팅/보안 기능은 제한될 수 있음 (모델 의존)데이터센터 코어/디스트리뷰션, 대규모 VLAN 간 트래픽
방화벽 (Firewall)L4–L7IP 패킷/세션정책 기반 필터링(IP/포트/프로토콜), 상태기반 (STATEFUL) 검사; NGFWDPI로 L7 페이로드 분석세션 테이블 관리, NAT/ALG, 앱 시그니처·TLS 검사 (옵션)보안 정책 일관 적용, 침해 차단DPI/SSL 가시성 설정 시 지연·오버헤드↑, 오탐/미탐 이슈경계 보안, 세그먼트 사이 North-South 트래픽 제어
로드밸런서 (Load Balancer)L4 또는 L7L4: TCP/UDP 세그먼트/데이터그램; L7: HTTP 등 메시지분산(해시/퍼시스턴스/헬스체크), L7 은 콘텐츠 기반 라우팅(URL/헤더/쿠키)L4: 5- 튜플 기반, DSR/NAT/프록시; L7: HTTP 헤더 파싱, TLS 종료/오프로드 가능탄력 확장, 장애 격리, 트래픽 정책 세분화L7 은 처리비용↑(파싱/암복호), 세션 일관성 관리 필요웹/API 트래픽 분산, 마이크로서비스 인그레스, TLS 오프로딩

네트워크 장비는 특정 계층의 PDU 헤더를 분석·조작하여 패킷 전달, 필터링, 분산 등의 기능을 수행한다. 하위 계층 장비 (허브·스위치) 는 상위 PDU 를 투명하게 전달하는 반면, 상위 계층 장비 (방화벽·로드밸런서) 는 응용 데이터까지 분석할 수 있다. 이는 PDU 계층 구조가 네트워크 인프라의 기능 분리와 확장성을 가능하게 함을 보여준다.

MTU, 단편화, MSS 협상

해설: 세 개념은 한 파이프라인에서 연결된다. MTU 가 상한을 정하고 → MSS 가 TCP 단위 크기를 결정 → 단편화는 실패 시 발생하는 예외 처리다. 운영 목표는 단편화 없이 PMTUD/PLPMTUD·MSS 로 안전 크기를 유지하는 것이다.

정의·특징·역할/기능

MTU (Maximum Transmission Unit)

계산식: Max L7 ≈ IP MTU − (IP + L4 + 보안/옵션/오버레이) / TCP MSS = IP MTU − (IP + TCP).

1
2
3
4
5
6
7
8
┌────────────────────┐
     이더넷 프레임 (1518바이트)                  
├─────┬─────────┬────┤
  Header      Payload (MTU)      FCS    
 14바이트     1500바이트        4바이트 
└─────┴─────────┴────┘
                                          
            부분이 MTU (헤더·트레일러 제외)

Path MTU: 경로상 링크 IP MTU 의 최소값.

계층별 관계

flowchart TB
    subgraph L2["L2 프레임 (1518 B)"]
        direction LR
        L2H[L2 헤더<br/>이더넷 14 B]
        subgraph MTU["MTU (1500 B)"]
            direction LR
            IPH[IP 헤더<br/>20~60 B]
            subgraph IPP["IP 페이로드 (1440~1480 B)"]
                direction TB
                TCP[TCP 헤더<br/>20 B]
                UDP[UDP 헤더<br/>8 B]
                subgraph MSS["MSS 영역"]
                    DATA[TCP/UDP 데이터<br/>1380~1472 B]
                end
            end
        end
        FCS[FCS<br/>CRC 4 B]
        
        L2H --> IPH
        IPH --> IPP
        TCP -.-> DATA
        UDP -.-> DATA
        IPP --> FCS
    end
    
    style L2 fill:#e3f2fd,stroke:#1976d2,stroke-width:3px
    style MTU fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
    style IPP fill:#fff3e0,stroke:#f57c00,stroke-width:2px
    style MSS fill:#fce4ec,stroke:#c2185b,stroke-width:2px
    style L2H fill:#bbdefb,stroke:#1565c0
    style IPH fill:#c8e6c9,stroke:#2e7d32
    style FCS fill:#bbdefb,stroke:#1565c0
    style DATA fill:#f8bbd0,stroke:#880e4f
MTU와 밀접한 관련이 있는 기타 개념
개념관계근거
PMTUD (Path MTU Discovery)경로 상 최소 MTU를 동적 발견RFC 1191
PLPMTUD (Packetization Layer PMTUD)ICMP 없이 MSS 기반 MTU 탐지RFC 4821
DF Flag (Don’t Fragment)단편화 금지 → PMTUD 활성화RFC 791
ICMP Type 3 Code 4“Fragmentation Needed” 메시지RFC 792
Jumbo FrameMTU를 9000바이트로 확장IEEE 802.3
GRE/IPsec Overhead터널 헤더로 인한 유효 MTU 감소RFC 2784
단편화 (Fragmentation)
MSS 협상 (Maximum Segment Size)

적용 위치와 흐름

적용흐름

  1. Host A / TCP: SYN 에 MSS 광고, 상대와 min 선택 → 세그먼트화 한도 결정.
  2. Host A / IP: 라우팅 후 출구 MTU/PMTU 확인 → 크기 초과면 축소 (IPv6) 또는 (IPv4, DF=0) 자체 단편화.
  3. Routers / Forwarding: egress MTU 비교 → (IPv4, DF=0) 단편화 또는 (IPv4 DF=1/IPv6) ICMP 통지.
  4. Host A / PLPMTUD: ICMP 또는 ACK 기반으로 PMTU 캐시 갱신, 세그먼트/레코드 크기 추가 축소.
  5. Host B / IP: 도착한 조각 재조립 후 L4 로 인도.
flowchart LR
%% title: mtu-frag-mss-from-to
%% caption: From(캡슐화)→경로(MTU/ICMP)→To(역캡슐화/재조립) 흐름

subgraph HOST_A["Host A — 캡슐화"]
  A1[앱 SDU]
  A2["TLS/QUIC (선택)"]
  A3["TCP/UDP (세그먼트/데이터그램)"]
  A4["IP (IPv4/IPv6)"]
  A5[L2 프레임화]
  A1 --> A2 --> A3 --> A4 --> A5
end

A5 --> R1

subgraph PATH["Routers — 전송 경로"]
  R1{다음 홉 MTU ≥ 패킷?}
  R1 -- 예 --> R2[포워딩]
  R1 -- 아니오 --> R3{IPv4 & DF=0?}
  R3 -- 예 --> R4[IPv4 단편화 수행]
  R3 -- 아니오 --> R5[ICMP Frag Needed / ICMPv6 PTB]
end

R2 --> B1
R4 --> B1

R5 --> A2a["송신자: 크기 축소\n(MSS/레코드/PLPMTUD)"]
A2a --> A3

subgraph HOST_B["Host B — 역캡슐화/재조립"]
  B1[L2 해제]
  B2[IPv4/IPv6 재조립]
  B3[TCP/UDP 전달]
  B4[TLS/앱 인도]
  B1 --> B2 --> B3 --> B4
end

주: 캡슐화 (Host A, 송신) → 전송 경로 (Routers) → 역캡슐화 (Host B, 수신)

MTU—어디서, 어떻게 적용되나
송신 호스트 (Host A)—IP 계층 Egress 경로에서 MTU 적용
중간 라우터 (Routers)—출구 인터페이스에서 다음 홉 MTU 검사
수신 호스트 (Host B)—IP 계층 Ingress 에서 재조립/검사
MSS 협상—어디서, 어떻게 결정·강제되나
송신/수신 호스트—TCP 3-way Handshake 에서 결정
중간 장비 (라우터/방화벽/로드밸런서)—MSS 클램핑

요지: MSS 는 **TCP 세그먼트화 단계 (호스트 TCP)**에서 적용되고, 중간 장비는 SYN 의 MSS 를 수정해 경로 제약을 강제한다.

단편화 (Fragmentation)—어디서, 어떻게 발생·해결되나
IPv4
IPv6

요지: 단편화는 IPv4 에서는 (송신/라우터) 둘 다, IPv6 에서는 송신자만. 운영상 회피가 원칙이며 PMTUD/PLPMTUD·MSS 로 사전 예방한다.

터널·보안·오프로딩과의 상호작용

주체·지점·동작

항목주체/지점동작 요약관찰 포인트
MTU 결정NIC/링크, 터널 인터페이스, 라우팅 엔트리인터페이스 MTU 와 경로 최소값 (PMTUD/PLPMTUD) 으로 Path MTU 확정tracepath, ICMP PTB/FragNeeded 로그, ip route get
단편화 (IPv4)라우터 (DF=0) 또는 송신 호스트중간/엔드에서 단편 생성 → 수신 호스트 재조립IPv4 ID/Offset/MF, 재조립 드롭률
단편화 (IPv6)송신 호스트만Frag EH 로 분할, 라우터 단편화 금지ICMPv6 PTB, EH 존재 시 장비 호환성
MSS 협상엔드포인트 TCP 스택SYN/SYN‑ACK 에서 min(MSS) 채택캡처로 MSS 값, tcp_base_mss/tcp_mtu_probing
MSS 클램핑경계 라우터/방화벽SYN 의 MSS 옵션을 강제 축소--clamp-mss-to-pmtu 정책·룰 히트 카운터

해설: MTU/단편화는 IP 계층, MSS 는 TCP 계층의 일로서, 결정 지점이 다르다. 터널/오버레이가 끼면 외부 MTU에 맞춰 내부 MTU 하향 + 클램핑을 세트로 적용해야 블랙홀을 방지한다.

IP MTU 기준 대표 조합 (1500 기준)

조합헤더 합계 (최소)최대 L7
IPv4(20)+TCP(20)40B1460B
IPv6(40)+TCP(20)60B1440B
IPv4(20)+UDP(8)28B1472B
IPv6(40)+UDP(8)48B1452B
(TCP 조합)+TLS1.3(5+~16)+21B해당 TCP 행 −21B
점보 9001 + IPv6/TCP: 60B → 8941B. 옵션/오버레이·IPsec 등 가산 필요. [RF:8,9,10]

PMTUD/PLPMTUD·MSS 의사결정 (송신 측 중심)

flowchart TD
%% title: pmtud-plpmtud-mss-decision
S[송신 시작] --> P{ICMP 신뢰 가능?}
P -- 예 --> P1["PMTUD 사용\n(DF=1)"]
P -- 아니오 --> P2["PLPMTUD 사용\n(ACK/Probe 기반)"]
P1 --> C["MSS= min(양단 MSS, PMTU-헤더)"]
P2 --> C
C --> T{터널/보안/옵션 추가?}
T -- 예 --> T1[헤더 가산→내부 MTU/MSS 재계산]
T -- 아니오 --> D[전송]

웹 브라우징에서의 PDU 흐름

브라우저 URL 입력 후 이름 해석 (DNS/DoH/DoT) → 연결 수립 (HTTP/2 over TCP/TLS 1.3 또는 HTTP/3 over QUIC/UDP/TLS 1.3) → 요청/응답 → 리소스 병렬 로딩으로 진행되며, 상위 **SDU(Service Data Unit)**가 하위 PDU로 캡슐화되어 이동한다.
대표 PDU 는 DNS 메시지, TLS 레코드, QUIC 패킷, TCP 세그먼트, IP 패킷, L2 프레임이다.
HTTP/3 는 HTTP/3 를 QUIC 위에 매핑하고, HTTP/2 는 TCP 위에 HTTP/2 프레이밍을 둔다.

단계별 캡슐화·역캡슐화 (요청→응답)

  1. 이름 해석
    • 전통 DNS(Domain Name System): 일반적으로 UDP 포트 53, 필요 시 TCP로 폴백. (EDNS0 확장으로 UDP 응답 확장 가능—여기서는 개요만)
    • DoH/DoT: DNS 메시지를 각각 HTTP/2·HTTP/3 또는 TLS로 보호해 전송 (암호화·인증 경로 확보).
  2. 연결 수립
    • HTTP/3 over QUIC/UDP/TLS 1.3: QUIC 초기 (Initial) 패킷은 최소 1200 바이트로 전송해야 하며, TLS 1.3 핸드셰이크는 QUIC 의 CRYPTO/핸드셰이크 프레임으로 진행된다 (0-RTT/1-RTT 모드).
    • HTTP/2 over TCP/TLS 1.3: TCP 3-way 핸드셰이크(MSS 협상) 후 TLS 1.3 핸드셰이크 (1-RTT), 그 위에서 HTTP/2 프레임 교환.
  3. 요청/응답 교환
    • HTTP/3: L7 요청/응답이 HTTP/3 프레임 → QUIC 패킷 → UDP 데이터그램 → IP → L2로. 스트림 독립 재전송·혼잡제어는 QUIC 담당.
    • HTTP/2: L7 프레임이 TLS 레코드 → TCP 세그먼트 → IP → L2로. 손실 복구·혼잡제어는 TCP 담당.
  4. 리소스 병렬 로딩
    • HTTP/3/HTTP/2 모두 단일 연결 (혹은 소수 연결) 에서 스트림/프레임 멀티플렉싱으로 CSS/JS/이미지를 병렬 전송.

웹 브라우저에서 https://example.com 을 입력했을 때 일어나는 모든 과정

flowchart TD
    Start[브라우저에 URL 입력<br/>https\:\/\/example.com]
    
    DNS[DNS 조회<br/>도메인 → IP 주소]
    TCP[TCP 3-Way Handshake<br/>연결 설정]
    TLS[TLS 1.3 Handshake<br/>보안 채널 설정]
    HTTP[HTTP 요청/응답<br/>HTML, CSS, JS 다운로드]
    Render[브라우저 렌더링<br/>화면 표시]
    
    Start --> DNS
    DNS --> TCP
    TCP --> TLS
    TLS --> HTTP
    HTTP --> Render
    
    style DNS fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
    style TCP fill:#fff3e0,stroke:#f57c00,stroke-width:2px
    style TLS fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
    style HTTP fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
    style Render fill:#fce4ec,stroke:#c2185b,stroke-width:2px

요약

캡슐화 과정 (송신, 하향)
  1. 애플리케이션 → DNS 쿼리, TCP SYN, TLS 핸드셰이크, HTTP 요청 생성
  2. 전송 계층 → UDP(DNS) 또는 TCP(웹) 헤더 추가 (8-60 B)
  3. 네트워크 계층 → IP 헤더 추가 (20-40 B), 라우팅 정보
  4. 데이터링크 → 이더넷 헤더 (14 B) + FCS(4 B) 추가
  5. 물리 계층 → 전기/광 신호로 변환, 네트워크 전송
역캡슐화 과정 (수신, 상향)
  1. 물리 계층 → 신호 수신, 디지털 변환
  2. 데이터링크 → MAC 확인, FCS 검증, 헤더 제거
  3. 네트워크 계층 → 목적지 IP 확인, 헤더 제거
  4. 전송 계층 → 포트 확인, 재조립, 흐름 제어
  5. 애플리케이션 → TLS 복호화, HTTP 처리, 브라우저 렌더링

관찰 지점별로 실제 보이는 PDU

관찰 지점HTTP/3 경로에서 보이는 것HTTP/2 경로에서 보이는 것비고
호스트 소켓 경계HTTP/3 프레임 ↔ QUIC 패킷 (TLS 1.3 내장)HTTP/2 프레임 ↔ TLS 레코드 ↔ TCP 세그먼트엔드포인트에서만 상위 구조 완전 관찰 가능.
L3(라우터/방화벽)IP 패킷 (UDP/IPv4·IPv6)IP 패킷 (TCP/IPv4·IPv6)ECN/DSCP, PMTUD/PTB 이벤트 관찰.
L2(스위치/AP)이더넷/802.11 프레임이더넷/802.11 프레임온와이어 MTU 와만 상호작용 (상위 페이로드는 불투명).

MTU·MSS·단편화—웹 특화 검증 포인트

HTTP/2 Vs HTTP/3—PDU 관점의 차이

HTTP/2(TCP) 웹 페이지 로딩의 PDU 흐름

sequenceDiagram
%% title: web-h2-pdu
participant U as User Agent (Browser)
participant R as DNS/DoH Resolver
participant S as Web Server (H2)
U->>R: DNS/DoH 질의 (DNS msg / HTTPS)
R-->>U: A/AAAA
U->>S: TCP SYN [MSS]
S-->>U: SYN-ACK [MSS]
U->>S: ACK  (연결 성립)
U-->>S: TLS1.3 ClientHello (TLS Record)
S-->>U: TLS1.3 ServerHello… (TLS Records)
U->>S: GET / (HTTP/2 frames)
S-->>U: HTML/CSS/JS (HTTP/2 frames → TLS records → TCP segments)
Note over U,S: L7(HTTP/2) → TLS Record → TCP Segment → IP → L2

HTTP/2 는 TLS 레코드가 상위 PDU, TCP 세그먼트가 전송 PDU 다. MSS 협상PMTUD/PLPMTUD에 따라 세그먼트 크기가 결정되고, 손실 시 TCP 재전송이 수행된다.

HTTP/3(QUIC) 웹 페이지 로딩의 PDU 흐름

sequenceDiagram
%% title: web-h3-pdu
participant U as User Agent (Browser)
participant R as DNS/DoH Resolver
participant S as Web Server (H3)
U->>R: DNS/DoH 질의 (DNS msg / HTTPS)
R-->>U: A/AAAA(또는 Alt-Svc)
U->>S: QUIC Initial (TLS CH)  ~1200B
S-->>U: QUIC Initial (TLS SH/EE)
U->>S: GET / (HTTP/3 frames)
S-->>U: HTML/CSS/JS (H3 frames → QUIC packets)
Note over U,S: L7(HTTP/3) → QUIC frame → QUIC packet → UDP → IP → L2

HTTP/3 은 QUIC 패킷이 전송 PDU 이고, 그 안에 HTTP/3 프레임TLS 핸드셰이크가 들어간다. 손실 시 QUIC 이 스트림 단위로 재전송/복구하며, 멀티플렉싱으로 HOL 지연을 줄인다.

단계/계층별 SDU→PDU 매핑

단계상위 SDU(의미단위)하위 전송 PDU보안/제어 PDU핵심 주의
이름 해석DNS 질의·응답UDP 데이터그램 / TCP 세그먼트(DoH) HTTP 요청/응답, (DoT) TLS 레코드크기↑ 시 TCP 폴백, DoH/DoT 는 암호화 경로 제공.
연결 수립 (H2)TLS 핸드셰이크 메시지TCP 세그먼트TLS 레코드 (1-RTT)MSS 협상 후 레코드 분할.
연결 수립 (H3)TLS 핸드셰이크 메시지QUIC 패킷 (UDP)QUIC 핸드셰이크/CRYPTO 프레임초기 패킷 ≥1200B.
요청/응답 (H2)HTTP/2 프레임TCP 세그먼트TLS 레코드PMTUD/PLPMTUD 로 단편화 회피.
요청/응답 (H3)HTTP/3 프레임QUIC 패킷 (UDP)(내장) TLS 1.3스트림별 복구/혼잡제어.

관찰 지점별 PDU 맵 (웹 브라우징)

관찰 지점HTTP/3(QUIC/UDP) 보이는 PDUHTTP/2(TCP) 보이는 PDUDNS/DoH/DoT관측 포인트
호스트 소켓 경계H3 프레임 ↔ QUIC 패킷H2 프레임 ↔ TLS 레코드/TCP 세그먼트DNS 메시지/TLS/HTTPS엔드 텔레메트리·브라우저 네트워크 패널
L3 장비 (라우터/방화벽)IP 패킷 (UDP/IPv6 가능)IP 패킷 (TCP)IP 패킷 (UDP/TCP)ECN/DSCP, PTB/FragNeeded
L2(스위치/AP)이더넷/802.11 프레임이더넷/802.11 프레임이더넷/802.11 프레임MTU/무선 MAC 오버헤드

MTU·MSS·단편화—웹 특화 포인트

MTU 별 전송 효율 비교

MTUTCP MSSHTTP 요청 (500 B)HTML 응답 (50 KB)총 세그먼트 수
150014601 개 (500 < 1460)35 개 (50000÷1460)36 개
140013601 개37 개 (50000÷1360)38 개
128012401 개41 개 (50000÷1240)42 개
5765361 개94 개 (50000÷536)95 개

오버헤드 비교:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
MTU 1500:
- 세그먼트당 오버헤드: 54 B (IP 20 + TCP 20 + 이더넷 14)
- 총 오버헤드: 54 × 36 = 1944 B
- 효율: 50000 / (50000 + 1944) = 96.3%

MTU 576 (최소):
- 세그먼트당 오버헤드: 54 B
- 총 오버헤드: 54 × 95 = 5130 B
- 효율: 50000 / (50000 + 5130) = 90.7%

결론: 큰 MTU = 높은 효율

Path MTU 문제 시나리오

sequenceDiagram
    participant C as 클라이언트<br/>(MTU 1500)
    participant R as 라우터<br/>(MTU 1400)
    participant S as 서버<br/>(MTU 1500)
    
    Note over C,S: TCP 연결 성립 (MSS=1460)
    
    C->>R: TCP 세그먼트 (1460 B 데이터)
    Note over R: MTU 1400 초과!<br/>DF=1 설정됨
    R->>C: ICMP PTB (Next MTU=1400)
    
    Note over C: Path MTU 업데이트<br/>MSS 1360으로 조정
    
    C->>R: TCP 세그먼트 (1360 B 데이터)
    R->>S: 전달 성공
    S->>R: TCP ACK
    R->>C: ACK 전달
    
    Note over C,S: 이후 1360 B로 계속 전송

TLS 레코드 크기와 MTU

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
TLS 레코드 최대 크기: 16 KB (RFC 8446)
실제 권장 크기: MTU 고려하여 설정

예시:
Path MTU = 1400
→ MSS = 1400 - 20(IP) - 20(TCP) = 1360 B
→ TLS 레코드 크기 = 1360 - 5(레코드 헤더) - 16(AEAD 태그) = 1339 B

큰 HTTP 응답:
→ TLS가 자동으로 여러 레코드로 분할
→ 각 레코드는 MSS 이하로 유지
→ TCP 세그먼트 단편화 방지

실시간 동영상 스트리밍에서의 PDU 흐름

라이브/실시간 스트리밍의 일반 경로는 **캡처·인코딩 (Producer) → 인제스트 (Origin) → 패키징 (CMAF/HLS/DASH) → CDN 전송 (Edge) → 플레이어 (Client)**이다.
각 홉에서 상위 **SDU(Service Data Unit)**가 하위 계층의 **PDU(Protocol Data Unit)**로 캡슐화/역캡슐화되며, 사용 스택에 따라 PDU 이름·오버헤드·복구전략·지연 특성이 달라진다.

라이브 영상은 L7 미디어 청크가 선택한 전송 스택 (HTTP/3/QUIC 또는 HTTP/2/TCP, 또는 SRTP) 에 따라 서로 다른 PDU(QUIC 패킷·TLS 레코드·TCP 세그먼트·RTP 패킷) 로 포장되어 IP/L2 위를 흐르고, MTU·손실·혼잡 제약 속에서 재전송·적응·버퍼링으로 품질을 유지한다.

대표 전송 스택

구분계층별 전송 경로전송 단위 예시보안 계층손실/복구 방식HOL(Head-of-Line) 블로킹특이점
LL-HLS/LL-DASH over HTTP/3(QUIC)L7 오브젝트 (CMAF 청크) → HTTP/3 프레임 → QUIC 패킷 (가변 길이 +AEAD) → UDP 데이터그램 → IP 패킷 → L2 프레임CMAF 청크 (초저지연, 작은 단위)TLS 1.3 (QUIC 내장)QUIC 재전송, 개별 스트림별 ACK Ranges (국지 복구, stream 단위)없음 (QUIC 이 예방)초저지연, 모바일 환경 최적화, 연결 이주 지원
HLS/DASH over HTTP/2(TCP)L7 오브젝트 → HTTP/2 프레임 → TLS 레코드 → TCP 세그먼트 → IP 패킷 → L2 프레임미디어 세그먼트TLS 1.3TCP 재전송 전체 연결 기준, 흐름제어존재 (연결 단위 HOL)기존 CDN 친화, 상대적으로 지연 크다
WebRTC(SRTP/UDP+DTLS+SCTP)RTP 패킷 → SRTP → UDP 데이터그램 → IP 패킷 → L2 프레임 (데이터채널: SCTP→DTLS→UDP 등)RTP 패킷 (오디오/비디오 Frame)DTLS, SRTP실시간 NACK/PLI/FIR 등 (어플리케이션 계층 복구)없음 (단방향 패킷 손실은 허용)실시간, 양방향 상호작용, 아주 낮은 지연

단계별 캡슐화·역캡슐화

  1. Producer → Origin(인제스트)

    • L7 SDU: H.264/H.265/AV1 프레임/슬라이스
    • 전송 예: RTMP(Real-Time Messaging Protocol)/TCP, SRT(Secure Reliable Transport)/UDP, WebRTC(SRTP/UDP)
    • PDU: RTMP 메시지↔TCP 세그먼트 / SRT 패킷↔UDP 데이터그램
  2. Origin(패키징) → CDN Edge

    • L7 SDU: CMAF(fMP4) 청크, HLS 세그먼트/파트, DASH 세그먼트, 매니페스트 (playlist/MPD)
    • PDU: (A) HTTP/3 프레임 → QUIC 패킷 → UDP → IP → L2 / (B) HTTP/2 프레임 → TLS 레코드 → TCP 세그먼트 → IP → L2
  3. Edge → Player(클라이언트)

    • 매니페스트 갱신 → 파트/세그먼트 프리페치/우선순위 요청
    • 역캡슐화: L2 → L3(IP) → L4(UDP/TCP) → (QUIC/TLS 해제) → L7 컨테이너 (fMP4) 파싱 → 디코더

요약

PDU 캡슐화 (송신)
  1. L7: 영상 데이터 → RTP 메시지 (1212 B)
  2. L4: UDP 헤더 추가 → 데이터그램 (1220 B)
  3. L3: IP 헤더 추가 → 패킷 (1240 B)
  4. L2: 이더넷 헤더 +FCS → 프레임 (1258 B)
  5. L1: 디지털 → 전기 신호 → 전송
PDU 역캡슐화 (수신)
  1. L1: 전기 신호 → 디지털 비트
  2. L2: 프레임 검증 → 헤더 제거 (1240 B)
  3. L3: IP 확인 → 헤더 제거 (1220 B)
  4. L4: UDP 확인 → 헤더 제거 (1212 B)
  5. L7: RTP 재조립 → 디코딩 → 화면 표시
각 계층의 역할

관찰 지점별 PDU 맵

관찰 지점HTTP/3(QUIC/UDP) 보이는 PDUHTTP/2(TCP) 보이는 PDUWebRTC(SRTP/UDP) 보이는 PDU핵심 포인트
호스트 소켓 경계QUIC 패킷 / H3 프레임TLS 레코드 / TCP 세그먼트RTP/SRTP/DTLS/RTCP 패킷암호화로 중간 가시성↓, 엔드 텔레메트리 중요
라우터/방화벽 (L3)IP 패킷 (UDP)IP 패킷 (TCP)IP 패킷 (UDP)ECN(Explicit Congestion Notification)/DSCPPMTUD(Path MTU Discovery)/PLPMTUD(Packetization-Layer PMTUD) 영향
스위치/무선 AP(L2)이더넷/802.11 프레임동일동일무선 MAC 오버헤드, 점보/패딩, 오프로딩 주의

시퀀스—라이브 세그먼트 전달 (HTTP/3 예시)

sequenceDiagram
%% title: live-h3-pdu
participant P as Player(Client)
participant E as CDN Edge
participant O as Origin
P->>E: GET /playlist.m3u8 (HTTP/3)
E-->>P: playlist (QUIC packets)
P->>E: GET /seg_101_part_1.m4s (HTTP/3)
E-->>P: part_1 (CMAF chunk in QUIC)
E->>O: cache miss → fetch chunk (HTTP/3)
O-->>E: chunk (HTTP/3/QUIC)
Note over P,E: L7 chunk → H3 frame → QUIC packet → UDP → IP → L2

WebRTC 경로 핵심 (초저지연·상호작용)

sequenceDiagram
%% title: webrtc-pdu
participant Pub as Publisher
participant SFU as SFU(Selective Forwarding Unit)
participant Sub as Subscriber(Player)
Pub->>SFU: DTLS handshake (over UDP)
SFU-->>Pub: DTLS complete
Pub->>SFU: SRTP media (RTP protected)
Sub-->>SFU: RTCP RR/NACK/PLI
SFU-->>Sub: SRTP media (forwarded)
Note over Pub,Sub: RTP → SRTP → UDP → IP → L2

MTU/MSS/단편화—스트리밍 맥락

MTU 와 PDU 의 관계

1
2
3
4
5
MTU 1500 B = L3 패킷 최대 크기
→ L4 데이터 최대 = 1500 - 20(IP) = 1480 B
→ L7 메시지 최대 = 1480 - 8(UDP) = 1472 B
→ RTP 페이로드 최대 = 1472 - 12(RTP) = 1460 B
→ 실전 권장 = 1200 B (안전 마진)

이 과정을 통해 영상 데이터는 송신자에서 수신자까지 각 계층의 PDU 로 변환되며 전달된다.

손실·혼잡 시 복구 비교 (요점)

스택전송 PDU복구 방식HOL(Head-of-Line) 영향비고
HTTP/3(QUIC/UDP/TLS 1.3)QUIC 패킷ACK Ranges, 손실 패킷만 재전송스트림 독립 → HOL 완화초기 패킷 ≥≈1200B 요구
HTTP/2(TCP/TLS 1.3)TCP 세그먼트빠른 재전송/타임아웃 기반연결 단위 HOL손실이 전 스트림 지연으로 전파
WebRTC(SRTP/UDP)RTP/SRTP 패킷NACK/RTX, FEC, SVC애플리케이션 전략초저지연은 ARQ 최소화

지연 예산 (End-to-End Latency Budget, 전형 가이드)

단계주체/지점전형 범위주의 포인트
캡처/인코딩카메라/인코더5–60 msB- 프레임/긴 GOP 는 지연↑
인제스트퍼블리셔→오리진5–30 ms(RTT 의존)RTMP(TCP) 는 재전송/혼잡 영향
패키징오리진≈0–30 ms**CMAF 파트 길이 (200–500 ms)**가 LL 지연 바닥
CDN 전송오리진↔엣지1–20 ms캐시 HIT/MISS 차이
플레이어 네트워크엣지↔단말10–150 msECN/AQM, 무선 변동성
지터 버퍼플레이어50–300 ms손실/변동↑ → 버퍼↑
디코딩/렌더단말8–40 msHW 디코더/디스플레이 동기

전형 합계: WebRTC ≈ 100–300 ms, LL-HLS/LL-DASH ≈ 0.5–3 s, 전통 HLS/DASH(2–6 s 세그먼트) ≈ 3–30 s.

품질·지연 최적화 체크리스트 (수신자/운영자 관점)

(부록) 간단 산식 메모

1
2
Max L7 payload  Path MTU  (IP 헤더 + L4 헤더 + 보안/옵션/오버레이)
: IPv6/TCP + TLS1.3 @ MTU 1500  1500  (40 + 20 + ~21)  1419 B

PDU 크기 변화 요약

graph LR
    A["L7 메시지<br/>1212 B"] 
    B["L4 데이터그램<br/>1220 B<br/>(+8)"]
    C["L3 패킷<br/>1240 B<br/>(+20)"]
    D["L2 프레임<br/>1258 B<br/>(+18)"]
    E["L1 비트<br/>10064 bits"]
    
    A -->|UDP 캡슐화| B
    B -->|IP 캡슐화| C
    C -->|이더넷 캡슐화| D
    D -->|물리 인코딩| E
    
    E -.->|물리 디코딩| D
    D -.->|이더넷 역캡슐화| C
    C -.->|IP 역캡슐화| B
    B -.->|UDP 역캡슐화| A
    
    style A fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
    style B fill:#fff3e0,stroke:#f57c00,stroke-width:2px
    style C fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
    style D fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
    style E fill:#fce4ec,stroke:#c2185b,stroke-width:2px

캡슐화 과정 (송신)

단계PDU 이름크기추가된 헤더누적 오버헤드
L7RTP 메시지1212 B-0 B
L4UDP 데이터그램1220 BUDP(8)8 B
L3IP 패킷1240 BIPv4(20)28 B
L2이더넷 프레임1258 BEth(14)+FCS(4)46 B
L1비트 스트림10064 bits--

오버헤드 비율: 46 B / 1212 B = 3.8%

역캡슐화 과정 (수신)

단계PDU 이름크기제거된 헤더남은 데이터
L1비트 스트림10064 bits-1258 B
L2이더넷 프레임1258 BEth(14)+FCS(4)1240 B
L3IP 패킷1240 BIPv4(20)1220 B
L4UDP 데이터그램1220 BUDP(8)1212 B
L7RTP 메시지1212 BRTP(12)1200 B

실전 예시: 한 프레임의 전체 여정

송신 측 타임라인

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
T=0ms    : 카메라에서 원본 프레임 캡처 (1920×1080)
T=5ms    : H.264 인코딩 완료 (8 KB 압축)
T=6ms    : RTP 패킷화 (7개 패킷으로 분할)
T=7ms    : 첫 번째 RTP 패킷 전송 시작
           └─ L4 캡슐화 (UDP 헤더 추가)
           └─ L3 캡슐화 (IP 헤더 추가)
           └─ L2 캡슐화 (이더넷 프레임화)
           └─ L1 전송 (NIC로 전기 신호 송출)
T=8ms    : 두 번째 RTP 패킷 전송...
T=13ms   : 일곱 번째 RTP 패킷 전송 완료

네트워크 전송

1
2
3
4
5
T=14ms   : 패킷들이 네트워크를 통해 전파
           - 라우터 1 통과 (1 ms)
           - 라우터 2 통과 (1 ms)
           - 인터넷 백본 (20 ms)
           - ISP 라우터 (2 ms)

수신 측 타임라인

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
T=38ms   : 첫 번째 패킷 도착
           └─ L1 수신 (NIC에서 비트 수신)
           └─ L2 역캡슐화 (이더넷 헤더 제거)
           └─ L3 역캡슐화 (IP 헤더 제거)
           └─ L4 역캡슐화 (UDP 헤더 제거)
           └─ L7 처리 (RTP 버퍼에 저장)
T=39ms   : 두 번째 패킷 도착...
T=40ms   : 세 번째 패킷 손실! (네트워크 혼잡)
T=41ms   : 네 번째 패킷 도착...
T=45ms   : 일곱 번째 패킷 도착
T=46ms   : 손실 패킷 복구 (FEC 또는 재전송)
T=50ms   : 지터 버퍼에서 프레임 추출
T=55ms   : H.264 디코딩 완료
T=60ms   : GPU 렌더링 및 화면 표시

총 엔드투엔드 지연: 60 ms (캡처 → 화면)

대용량 파일 다운로드에서의 PDU 흐름

대용량 다운로드는 애플리케이션의 바이트 스트림이 전송 스택에서 TLS 1.3 레코드 (Transport Layer Security 1.3 Record) → TCP 세그먼트 (Transmission Control Protocol Segment) 또는 QUIC 패킷 (Quick UDP Internet Connections Packet) → IP 패킷 (Internet Protocol Packet) → L2 프레임 순으로 반복 캡슐화되어 흐르며, 실제 처리량은 **MSS(Maximum Segment Size)·PMTUD(Path MTU Discovery)/PLPMTUD(Packetization-Layer PMTUD)·혼잡 윈도 (cwnd)·수신 윈도 (rwnd/Window Scaling)·재전송 (SACK/ACK Ranges)·오프로딩 (TSO/GSO/GRO)**의 상호작용으로 결정된다.
목표는 단편화 없이 (Path MTU 이내) 꾸준히 흘려보내는 것이다.

전체 경로와 단계 (송신 → 경로 → 수신)

  1. 서버 (송신)

    • L7 SDU(Service Data Unit): 파일 바이트 스트림
    • TLS 1.3 사용 시 수 KB~수십 KB 크기의 TLS 레코드로 잘라 암호화 (AEAD: Authenticated Encryption with Associated Data).
    • 전송 계층이 MSS를 기준으로 TCP 세그먼트(HTTP/2/1.1) 또는 QUIC 패킷(HTTP/3) 으로 분할.
    • TSO/GSO가 켜져 있으면 커널은 큰 청크를 NIC 가 온와이어 MSS 단위로 쪼개도록 위임.
  2. 네트워크 경로 (라우터/방화벽)

    • 각 홉 egress 에서 다음 홉 MTU를 넘는지 판정.
    • IPv4: DF=0 이면 (지양하지만) 라우터 단편화 가능, DF=1 이면 드롭 + ICMP Frag Needed 통지.
    • IPv6: 라우터 단편화 금지 → ICMPv6 Packet Too Big로 송신자 축소 유도.
    • 송신자는 PMTUD/PLPMTUD로 안전한 크기를 학습.
  3. 클라이언트 (수신)

    • IP 에서 재조립 (필요 시) → L4 로 인도.
    • TCP 는 순서 재정렬·SACK(Selective ACK) 기반 손실 복구·혼잡제어 수행 / QUIC 은 ACK Ranges로 손실 구간만 재전송.
    • TLS 복호화 후 HTTP 바디를 파일에 기록. rwnd(Receive Window)Window Scaling이 작으면 BDP(대역폭×지연) 대비 병목.

전송 스택별 PDU 흐름

HTTP/2(TCP / TLS 1.3) 기반

1
2
앱 바이트 → [TLS 레코드] → [TCP 세그먼트(MSS)] → [IP 패킷] → [L2 프레임]
손실: TCP 빠른재전송/타임아웃, SACK으로 결손 범위만 재전송 (그러나 연결 단위 HOL 영향)
sequenceDiagram
%% title: large-download-h2-tcp
participant C as Client
participant N as Network (Routers)
participant S as Server
C->>S: TCP 3-way (MSS 협상)
S-->>C: TLS1.3 핸드셰이크(Records)
C->>S: GET /big.iso (HTTP/2)
S-->>C: HTTP/2 DATA (연속) → TLS Records
Note over S,N: TLS 레코드 → TCP 세그먼트(MSS) → IP → L2
loop steady transfer
  S-->>C: [세그먼트 n..n+k]
  C-->>S: ACK/SACK (누락 범위 통지)
end
alt 손실 발생
  N-->>S: (드롭)
  C-->>S: SACK으로 결손 알림
  S-->>C: 손실 세그먼트만 재전송
end

세그먼트 단위로 흐르고, cwnd/rwnd가 충족되면 파이프가 가득 차며, SACK이 부분 손실만 신속 복구한다. PMTUD/PLPMTUD 실패 시 특정 크기에서 멈춤 (블랙홀) 이 발생한다.

HTTP/3(QUIC / UDP / TLS 1.3) 기반

1
2
3
앱 바이트 → [HTTP/3 프레임] → [QUIC 패킷(AEAD)] → [UDP 데이터그램] → [IP] → [L2]
손실: QUIC이 해당 패킷 번호 범위만 재전송, 스트림 단위로 HOL 완화
초기: QUIC Initial 패킷은 경로 안전성 위해 ≈1200B 이상(IPv6 1280B 최소 MTU와 호환 고려)
sequenceDiagram
%% title: large-download-h3-quic
participant C as Client
participant N as Network (Routers)
participant S as Server
C->>S: QUIC Initial (~1200B)
S-->>C: QUIC Initial (1-RTT)
C->>S: GET /big.iso (H3)
loop steady transfer
  S-->>C: H3 DATA frames → QUIC packets
  C-->>S: ACK Ranges (손실 범위 보고)
end
alt 손실 발생
  N-->>S: (드롭)
  S-->>C: 해당 패킷 번호 범위만 재전송 (스트림 HOL 완화)
end

QUIC 은 사용자 공간 전송 + ACK Ranges로 빠른 손실 국지화와 스트림 수준 복구가 가능하다. UDP 경로 특성, PTB 수신 및 PLPMTUD 정책이 안정성을 좌우한다.

캡슐화·역캡슐화—한 번의 온와이어 예 (IPv6/TCP/TLS)

포인트: TLS 레코드 크기가 MSS 와 정렬되지 않으면 여분 세그먼트/패딩·작은 PDU 가 늘어 효율이 떨어질 수 있습니다.

요약

송신 측 캡슐화 (7 단계)
  1. TCP 연결 설정 → 3-Way Handshake, MSS 협상
  2. HTTP 응답 생성 → 헤더 + 파일 데이터
  3. TLS 암호화 → 16 KB 레코드 단위 (HTTPS)
  4. TCP 세그먼트화 → MSS 단위 분할 (1460 B)
  5. 흐름/혼잡 제어 → 윈도우, Slow Start, ACK
  6. IP 캡슐화 → DF=1, PMTUD
  7. 이더넷 프레임화 → MAC, FCS
수신 측 역캡슐화 (9 단계)
  1. 물리 신호 수신 → 디지털 변환
  2. 이더넷 검증 → FCS 체크
  3. IP 처리 → 목적지 확인
  4. TCP 재조립 → 시퀀스 순서 보장
  5. ACK 전송 → 흐름 제어
  6. TLS 복호화 → 무결성 검증
  7. HTTP 파싱 → 헤더/바디 분리
  8. 파일 저장 → 디스크 쓰기
  9. 무결성 검증 → MD5/SHA

MTU·MSS·단편화 동작

처리량을 좌우하는 6 요소

  1. cwnd(혼잡 윈도): 혼잡제어 상태 (초기 슬로스타트→회피).
  2. rwnd(수신 윈도/Window Scaling): BDP(대역폭×RTT) 에 맞게 충분히 커야 함.
  3. RTT(Round-Trip Time): 지연이 클수록 같은 cwnd 로 덜 전송됨 → 패이싱 유효.
  4. 손실·재전송: TCP 는 SACK, QUIC 은 ACK Ranges로 손실 구간만 신속 복구.
  5. ECN(Explicit Congestion Notification)/DSCP: 드롭 없이 혼잡 신호, 클래스별 QoS.
  6. 오프로딩 (TSO/GSO/GRO): CPU/PPS 이득 크지만 캡처 착시 유발 → 경계 캡처로 교차검증.

BDP 산식: BDP(bytes) = Bandwidth(bytes/s) × RTT(s) → rwnd·cwnd·버퍼가 BDP 이상이어야 라인을 채웁니다.

HTTP 계층 특화 (대용량 전송 튜닝)

관찰 지점별 PDU 맵

관찰 지점HTTP/2(TCP/TLS 1.3) 보이는 PDUHTTP/3(QUIC/UDP/TLS 1.3) 보이는 PDU공통
호스트 소켓 경계TLS 레코드 ↔ TCP 세그먼트HTTP/3 프레임 ↔ QUIC 패킷장기 세션, PDU 다량 생성
L3 장비 (라우터/방화벽)IP 패킷 (TCP)IP 패킷 (UDP)ECN/DSCP, PTB/FragNeeded 가시
L2(스위치/AP)이더넷/802.11 프레임이더넷/802.11 프레임점보/무선 MAC 오버헤드·오프로딩 주의

TCP 특성이 파일 전송에 미치는 영향

재전송 메커니즘

sequenceDiagram
    participant C as 클라이언트
    participant S as 서버
    
    S->>C: SEQ=1000, DATA[1460B]
    C->>S: ACK=2460
    
    S->>C: SEQ=2460, DATA[1460B]
    Note over C: 패킷 손실!
    
    S->>C: SEQ=3920, DATA[1460B]
    C->>S: ACK=2460 (중복 1)
    
    S->>C: SEQ=5380, DATA[1460B]
    C->>S: ACK=2460 (중복 2)
    
    S->>C: SEQ=6840, DATA[1460B]
    C->>S: ACK=2460 (중복 3)
    
    Note over S: 3 중복 ACK 감지<br/>Fast Retransmit
    
    S->>C: SEQ=2460, DATA[1460B] (재전송)
    C->>S: ACK=8300 (누적 ACK)
    
    Note over C,S: 정상 전송 재개

재전송 시나리오 3 가지:

  1. Fast Retransmit (빠른 재전송)
1
2
3개 중복 ACK 수신 → 즉시 재전송
지연: 매우 낮음 (수 ms)
  1. Timeout Retransmit (타임아웃 재전송)
1
2
3
RTO (Retransmission Timeout) 초과 → 재전송
지연: 높음 (수백 ms ~ 초)
RTO = SRTT + 4 × RTTVAR
  1. Selective Acknowledgment (SACK)
1
2
3
4
정확한 손실 범위 통보:
SACK: 3920-8300 수신 완료
→ 서버는 2460-3919만 재전송
→ 효율적 (불필요한 재전송 방지)

혼잡 제어의 영향

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
다운로드 속도 변화:

초기 (Slow Start):
┌─────────────────┐
│ 시간(초) │ cwnd    │ 속도(Mbps)  │
│   0-0.1  │  10 MSS │    1.2           │
│  0.1-0.2 │  20 MSS │    2.4          │
│  0.2-0.3 │  40 MSS │    4.8          │
│  0.3-0.5 │  80 MSS │    9.6          │
└─────────────────┘

혼잡 회피 (Congestion Avoidance):
┌────────────────┐
│   0.5-1  │ 160 MSS │   19.2     │
│    1-2   │ 240 MSS │   28.8      │
│    2-3   │ 320 MSS │   38.4      │
│    ...   │   ...   │    ...                   │
│   10-11  │ 800 MSS │   96.0    │
└────────────────┘

손실 발생 (시간 11초):
┌────────────────┐
│    11    │ 800 MSS │   96.0       │
│  11.001  │ 400 MSS │   48.0 ↓  │
│  11.1-12 │ 450 MSS │   54.0 ↑  │
│  12-13   │ 500 MSS │   60.0 ↑   │
└────────────────┘

→ 톱니 모양 속도 변화 (Sawtooth Pattern)

MTU 와 MSS 의 실전 영향

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
시나리오 1: 표준 환경 (MTU 1500)
─────────────────────────────────
MSS: 1460 B
1 GB 파일: 732,064 세그먼트
평균 RTT: 50 ms
이론 처리량: 1460 × 8 / 0.05 = 233.6 Kbps (1개 세그먼트/RTT)

실제 처리량 (윈도우 크기 고려):
윈도우: 64 KB = 44 세그먼트
처리량: 44 × 1460 × 8 / 0.05 = 10.3 Mbps

Large Window (256 KB):
처리량: 176 × 1460 × 8 / 0.05 = 41.2 Mbps


시나리오 2: VPN 환경 (MTU 1400)
─────────────────────────────────
MSS: 1360 B (40 B 감소)
1 GB 파일: 786,432 세그먼트 (7.4% 증가)
오버헤드: 40 B × 786,432 = 30.1 MB (3% 증가)

실제 영향:
• 세그먼트 수 증가 → ACK 수 증가
• CPU 부담 증가 (패킷 처리)
• 혼잡 제어 영향 (더 많은 패킷 손실 기회)


시나리오 3: 점보 프레임 (MTU 9000)
─────────────────────────────────
MSS: 8960 B (6.1배 증가)
1 GB 파일: 119,210 세그먼트 (6.1배 감소)
오버헤드: 40 B × 119,210 = 4.6 MB (0.4%)

실제 영향:
• 세그먼트 수 감소 → ACK 감소
• CPU 효율 향상
• 단편화 위험 (경로 MTU 불일치 시 치명적)

실전 시나리오

정상 다운로드
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
타임라인 (1 GB 파일, 100 Mbps 회선):

T=0ms: TCP 연결 설정 (3-Way Handshake)
├─ SYN → (RTT/2)
├─ SYN-ACK ← (RTT/2)
└─ ACK → (RTT/2)
총 소요: 1.5 RTT (예: 75 ms)

T=75ms: TLS 핸드셰이크 (HTTPS)
├─ ClientHello →
├─ ServerHello, Certificate ←
├─ ClientKeyExchange, Finished →
└─ Finished ←
총 소요: 2 RTT (예: 100 ms)

T=175ms: HTTP 요청 전송
└─ GET /video.mp4 HTTP/1.1 →
소요: 0.5 RTT (예: 25 ms)

T=200ms: 데이터 전송 시작
├─ Slow Start: 0.5초 (10 MSS → 800 MSS)
├─ 안정 상태: 10초 (100 Mbps 지속)
└─ 완료: 총 10.7초

T=10.9초: 다운로드 완료
└─ 파일 검증 (MD5): 0.3초

총 소요 시간: 약 11.2초
실효 처리량: 1 GB / 11.2s = 89.3 MB/s = 714 Mbps
패킷 손실 복구
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
시나리오: 1% 패킷 손실률

T=5초: 정상 전송 중 (500 MB 다운로드)
패킷 손실 발생 (SEQ=367,000,000)
T=5.003초: 3 중복 ACK 수신
Fast Retransmit: SEQ=367,000,000 재전송
T=5.053초: 재전송 완료 (RTT 50 ms)
혼잡 윈도우 감소: 800 MSS → 400 MSS
속도 일시 감소: 100 Mbps → 50 Mbps
T=5.1초: 회복 시작 (선형 증가)
T=5.5초: 정상 속도 복구 (100 Mbps)

손실 영향:
• 지연: 0.5초 추가
• 속도 저하: 0.4초 동안 50% 감소
• 총 영향: 약 0.2초 추가 소요
MTU 불일치 문제
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
상황: 클라이언트 MTU 1500, 중간 경로 MTU 1400

T=0: 연결 설정, MSS=1460 협상
T=0.2초: 데이터 전송 시작
├─ IP 패킷 (1500 B) 전송
└─ 중간 라우터 MTU 1400 초과
라우터: ICMP "Fragmentation Needed, MTU=1400"
T=0.25초: 클라이언트 ICMP 수신
[PMTUD 조정]
Path MTU: 1400
MSS: 1400 - 20(IP) - 20(TCP) = 1360
T=0.26초: 재전송 (작은 세그먼트)
이후 정상 전송 (MSS=1360)

영향 분석:
• 초기 지연: 0.06초
• 세그먼트 수 증가: 7.4%
• 오버헤드 증가: 3%
• 실효 처리량 감소: 약 5%

스트리밍 vs. 파일 다운로드 비교

대용량 파일 다운로드는 TCP 의 신뢰성 메커니즘 (재전송, 순서 보장, 흐름/혼잡 제어) 을 통해 100% 완전성을 보장하며, MTU/MSS 최적화와 병렬 연결로 처리량을 극대화하되, 실시간 스트리밍과 달리 지연보다 완전성을 우선하는 트레이드오프를 선택한다.

핵심 차이점 요약

특성파일 다운로드 (TCP)실시간 스트리밍 (UDP)
신뢰성100% 보장 (재전송)손실 허용 (재전송 없음)
순서엄격 보장무시 가능
지연높음 (수백 ms)낮음 (< 100 ms)
버퍼링큰 버퍼 (64 KB~)작은 지터 버퍼 (50 ms)
패킷 크기MSS 최대 활용 (1460 B)작게 유지 (1200 B)
재전송자동 (TCP)선택적 (NACK)
흐름 제어윈도우 기반없음 (앱 레벨)
혼잡 제어필수 (Cubic 등)선택적 (GCC)
완전성100% (체크섬)부분 허용 (FEC)

PDU 구조 비교

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
파일 다운로드 (TCP):
┌──────────────────┐
│ L7: HTTP(200B) + TLS(21B)              │
├──────────────────┤
│ L4: TCP(20-60B) [순서, ACK, 흐름]    │
├──────────────────┤
│ L3: IP(20-40B) [DF=1]                       │
├──────────────────┤
│ L2: Ethernet(18B)                              │
└──────────────────┘
총 오버헤드: 259-339 B
특징: 신뢰성 우선, 오버헤드 높음


스트리밍 (UDP/RTP):
┌──────────────────┐
│ L7: RTP(12B) [시퀀스, 타임스탬프]     │
├──────────────────┤
│ L4: UDP(8B) [포트만]                         │
├──────────────────┤
│ L3: IP(20-40B)                                   │
├──────────────────┤
│ L2: Ethernet(18B)                              │
└──────────────────┘
총 오버헤드: 58-78 B
특징: 저지연 우선, 오버헤드 낮음

네트워크 동작 비교

graph TD
    subgraph TCP["TCP (파일 다운로드)"]
        T1[3-Way Handshake]
        T2[데이터 전송]
        T3[ACK 대기]
        T4[재전송]
        T5[흐름 제어]
        
        T1 --> T2
        T2 --> T3
        T3 -->|손실| T4
        T4 --> T2
        T3 -->|성공| T5
        T5 --> T2
    end
    
    subgraph UDP["UDP (스트리밍)"]
        U1[즉시 전송]
        U2[순서 무시]
        U3[손실 무시]
        U4[지터 버퍼]
        
        U1 --> U2
        U2 --> U3
        U3 --> U4
        U4 --> U1
    end
    
    style TCP fill:#e3f2fd,stroke:#1976d2
    style UDP fill:#e8f5e9,stroke:#388e3c

성능·신뢰·보안 트레이드오프와 튜닝 포인트

표 5-1. 설계/운영 트레이드오프

선택장점단점비고
MTU1500 vs Jumbo(9001)헤더비율 ↓, PPS ↓블랙홀 위험↑, 호환성 이슈클라우드·DC 한정 권장
전송TCP vs UDP vs QUIC신뢰/혼잡 vs 저지연 vs 빠른수립/이동성오버헤드/지연/복잡성 각기워크로드 따라 선택
혼잡ECN 사용패킷드롭↓, RTT 안정장비/경로 지원 필요ECN++ 동향
오프로딩TSO/GSO/GROCPU↓, PPS↑가시성↓, NIC 의존캡처 시 주의
보안TLS/QUIC기밀·무결성중간 가시성 저하E2E 원칙 강화

해설: MTU 상향은 이득이 크지만 경로 호환성·PMTUD 가 관건이다. ECN 은 드롭 없는 혼잡신호로서 점진 확산 중이며, NIC 오프로딩은 성능 향상과 가시성 저하 (패킷 캡처 왜곡) 의 딜레마를 낳는다.

MTU→MSS 계산 & 경계 체크 (교육용)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// 목적: MTU와 IPv4/IPv6 여부로 MSS를 산출하고, 페이로드 초과 여부를 검사
// 입력: mtu(number), ipver(4|6), l4('tcp'|'udp'), extraOverhead(number=0)
// 출력: {mss, maxPayload}
// 예외: 잘못된 입력 시 throw

function mtuToMss(mtu, ipver=4, l4='tcp', extraOverhead=0){
  if (![4,6].includes(ipver)) throw new Error('ipver must be 4 or 6');
  const ip = ipver === 4 ? 20 : 40;
  const l4h = l4 === 'tcp' ? 20 : (l4 === 'udp' ? 8 : 0);
  const base = mtu - ip - l4h - extraOverhead;
  if (base <= 0) return { mss: 0, maxPayload: 0 };
  return { mss: base, maxPayload: base };
}

// 예: IPv6/TCP + TLS(태그 16B + 레코드헤더 5B)
const r = mtuToMss(1500, 6, 'tcp', 21); // ≈142,2B 유효 페이로드

실제 네트워크에서는 VLAN, 터널, 옵션, 보안태그를 extraOverhead 에 반영해 안전한 MSS 를 산출한다. 경계 장비의 MSS 클램핑/PMTUD 동작과 함께 검증해야 한다.

PDU 기반 네트워크 문제 진단 및 최적화

PDU 구조 이해를 활용한 실무 네트워크 트러블슈팅, 성능 최적화, 보안 정책 수립 사례를 다룬다. Wireshark, tcpdump 등 패킷 분석 도구 활용법을 포함한다.

패킷 분석 도구 활용

Wireshark: GUI 기반 패킷 캡처·분석 도구. 계층별 PDU 헤더를 시각적으로 표시하고, 필터링·통계·플로우 추적 기능을 제공한다.
tcpdump: CLI 기반 패킷 캡처 도구. 스크립트·자동화에 적합하며, 원격 서버에서 실시간 캡처·분석이 가능하다.

표: 주요 패킷 분석 도구 비교

도구인터페이스주요 기능용도라이선스
WiresharkGUI계층별 헤더 디코딩, 통계, 플로우 그래프심층 분석, 교육GPL
tcpdumpCLI패킷 캡처·필터링, pcap 파일 생성원격 트러블슈팅, 자동화BSD
tsharkCLIWireshark 엔진 CLI 버전스크립트·파이프라인GPL
ScapyPython패킷 생성·조작·송수신테스트, 보안 연구GPL

Wireshark 필터 예시:

tcpdump 필터 예시:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# HTTP 트래픽 캡처
tcpdump -i eth0 'tcp port 80'

# 특정 IP로/부터 패킷 캡처
tcpdump -i eth0 'host 192.168.1.1'

# SYN 패킷만 캡처 (TCP 플래그 비트마스크)
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0'

# MTU 초과 패킷 탐지 (프레임 길이 > 1514)
tcpdump -i eth0 'greater 1514'

Scapy 로 최소 패킷 생성·송신 (오프라인 실습용 예시)

1
2
3
4
5
# 목적: 로컬 환경에서 학습용으로 ICMP 에코 패킷을 구성
# 주의: 권한/환경에 따라 송신 금지. pcap 파일로만 저장하는 오프라인 흐름 예시
from scapy.all import Ether, IP, ICMP, wrpcap
pkt = Ether()/IP(dst="198.51.100.1")/ICMP()
wrpcap("icmp_echo_min.pcap", [pkt])

해설: Scapy 는 계층을 “/” 로 쌓아 PDU 를 구성한다. 실제 송신·스캔은 법·정책·소유권을 준수해야 하며, 여기서는 파일로 저장해 오프라인 분석만 가정한다.

일반적인 네트워크 문제와 PDU 진단

문제 1: 패킷 손실 (Packet Loss)

증상: 애플리케이션 지연, 재전송 증가, 연결 끊김
PDU 진단 방법:

문제 2: 높은 지연 (High Latency)

증상: 응답 시간 증가, 실시간 서비스 (VoIP, 게임) 품질 저하
PDU 진단 방법:

문제 3: MTU 불일치 (“Black Hole”)

증상: 작은 패킷은 전달되지만 큰 패킷 (예: 파일 전송) 은 실패
PDU 진단 방법:

Workshops

OSI 7 계층 캡슐화 실습

시나리오: 실제 HTTP 메시지를 네트워크로 전송할 때, OSI 7 계층을 따라 SDU → PDU, 캡슐화/역캡슐화 과정과 PDU 명칭 변화, 헤더/페이로드 구조를 직접 분석한다.

수행 절차:

단계작업담당도구소요 시간
1HTTP 메시지 송신개발자Python 코드10 분
2각 계층에서 PDU 구조 분석개발자Wireshark20 분
3캡슐화 단계별 헤더/데이터 검증개발자Notion/Excel15 분
4역캡슐화 결과 확인개발자Wireshark15 분
5용어 정리 보고서 작성개발자Notion20 분

산출물:

수용 기준 (AC):

TCP/UDP 프로토콜별 PDU 분석

시나리오: TCP 와 UDP 로 메시지를 각각 전송/수신할 때, 각 프로토콜별 PDU 구조 차이와 에러 검출 방식, 트러블슈팅 포인트를 코드로 실습한다.

수행 절차:

단계작업담당도구소요 시간
1TCP/UDP 송수신 프로그램 구현개발자Python20 분
2각 PDU 필드 파싱/해석개발자Python, Wireshark20 분
3오류 검출/분석 케이스 작성개발자Wireshark15 분
4트러블슈팅 리포트 정리개발자Notion15 분

산출물:

수용 기준 (AC):

Wireshark 로 PDU 계층 읽기

목표: L2→L7 캡슐화와 필드 관계를 눈으로 확인
절차:

  1. tcpdump -s 0 -w trace.pcap 로 캡처
  2. Wireshark 로 열기
  3. 필터 tcp.flags.syn==1 or icmp 적용
  4. 프레임/패킷/세그먼트 길이와 헤더 구조 기록
    지표: 평균 헤더비율 (헤더/전체), PMTUD/ICMP 가시성, 재전송 비율
    산출물: 스크린샷 + 표 1 매 (헤더비율, MSS, MTU 추정)

Wireshark 로 HTTP 트래픽 분석 및 PDU 계층별 디코딩

시나리오: 사용자가 웹 브라우저로 http://example.com/index.html 에 접속할 때, PDU 계층별 헤더를 Wireshark 로 캡처·분석하여 캡슐화 과정을 시각적으로 확인한다.

수행 절차:

단계작업담당도구소요 시간
1Wireshark 캡처 시작실습자Wireshark1 분
2웹 브라우저로 http://example.com 접속실습자Chrome/Firefox1 분
3Wireshark 캡처 중지 및 http 필터 적용실습자Wireshark1 분
4HTTP GET 요청 패킷 선택 및 계층별 확장실습자Wireshark3 분
5각 계층 (Ethernet → IP → TCP → HTTP) 헤더 필드 확인·기록실습자Wireshark, 메모장5 분
6캡슐화 구조 도식화 (Ethernet 안에 IP, IP 안에 TCP, TCP 안에 HTTP)실습자그림 도구 또는 종이5 분

산출물:

수용 기준 (AC):

Tcpdump 로 MTU 초과 패킷 탐지 및 MSS Clamping 시뮬레이션

시나리오: PPPoE(MTU=1492) 환경에서 표준 MSS(1460) 를 사용하면 IP 단편화가 발생한다. tcpdump 로 MTU 초과 패킷을 탐지하고, MSS Clamping 을 적용하여 단편화를 방지한다.

수행 절차:

단계작업담당도구소요 시간
1PPPoE 인터페이스 MTU 확인 (ip link show ppp0)실습자Linux CLI2 분
2tcpdump 로 MTU 초과 패킷 캡처 (tcpdump -i ppp0 'greater 1492')실습자tcpdump5 분
3큰 파일 전송 시도 (scp large_file user@server)실습자scp3 분
4캡처된 패킷 분석: IP 단편화 여부 확인 (Flags: MF=1)실습자tcpdump, Wireshark5 분
5iptables 로 MSS Clamping 규칙 추가 (iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu)실습자iptables3 분
6다시 파일 전송 후 tcpdump 로 단편화 제거 확인실습자tcpdump, scp5 분

산출물:

수용 기준 (AC):

MTU·MSS 튜닝 실험 (가상 환경)

목표: MTU 변화가 PDU 오버헤드·처리량에 미치는 영향 관찰
절차:

  1. 가상 네트워크에서 링크 MTU 를 1500↔9001 로 교체
  2. iperf3 로 TCP/UDP 측정
  3. mtuToMss()/max_payload() 로 이론값 산출
  4. ICMP 필터링/허용 비교
    지표: 처리량 (Gbit/s), P90 지연 (ms), 재전송률, 블랙홀 발생률
    산출물: 실험노트 (그래프, 설정, 결론)

Final Summary

PDU(Protocol Data Unit) 는 네트워크 프로토콜 스택의 각 계층에서 처리하는 데이터 블록으로, 계층별로 고유한 명칭 (비트·프레임·패킷·세그먼트·데이터) 과 헤더·트레일러 구조를 가지며, 캡슐화·역캡슐화를 통해 계층 간 역할 분리와 독립성을 구현하고, MTU·MSS 협상·PMTUD 등의 메커니즘을 통해 네트워크 성능 최적화와 문제 진단의 기초가 된다.

PDU 는 OSI 7 계층 모델과 TCP/IP 모델에서 각 계층이 다루는 데이터 단위를 의미한다. 물리 계층 (비트), 데이터링크 계층 (프레임), 네트워크 계층 (패킷), 전송 계층 (세그먼트/데이터그램), 상위 계층 (데이터/메시지) 으로 구분되며, 각 계층은 상위 PDU 를 페이로드로 받아 자신의 헤더·트레일러를 추가하는 캡슐화를 수행한다. 이는 1970 년대 네트워크 상호운용성 문제를 해결하기 위해 등장했으며, 현대 네트워크 아키텍처의 근간이 되었다.

PDU 구조는 계층 간 독립성과 확장성을 제공하지만, MTU 제약·단편화·재조립 오버헤드 등의 성능 이슈를 동반한다. IP 단편화는 MTU 불일치를 해결하지만 재조립 부담과 단편 손실 리스크가 크며, PMTUD 는 ICMP 차단 시 Black Hole 문제를 일으킨다. 이를 해결하기 위해 TCP MSS 협상, MSS Clamping, Jumbo Frame, ECN 등의 최적화 기법이 사용되며, 각 기법은 환경 (데이터센터·인터넷·VPN) 에 따라 트레이드오프가 존재한다. 예를 들어, Jumbo Frame 은 데이터센터 내부에서는 효과적이지만 인터넷 구간에서는 사용할 수 없다.

PDU 개념은 전통적인 계층 모델을 기반으로 하지만, SDN(Software-Defined Networking), NFV(Network Functions Virtualization), 5G 네트워크, QUIC 프로토콜 등 새로운 네트워크 패러다임에서는 계층 경계가 모호해지고 있다. 예를 들어, QUIC 는 전송 계층과 응용 계층을 통합하여 UDP 위에서 동작하며, SDN 은 제어 평면과 데이터 평면을 분리하여 계층 간 조작을 동적으로 수행한다. 추가 학습 과제로는 MPLS·VXLAN 등 터널링 프로토콜의 PDU 구조, IPv6 확장 헤더, QUIC 의 프레임 구조, eBPF 를 이용한 커널 레벨 PDU 조작 등이 있다. 실무 프로젝트에서는 Wireshark·tcpdump 를 활용한 패킷 분석, 방화벽·로드밸런서의 Layer 7 PDU 검사, 클라우드 환경 (AWS VPC, Azure VNet) 의 MTU 설정 최적화 등에 PDU 지식을 적용할 수 있다.


Learning Guide

단계목표 (Outcome)과제 (Task)평가 기준 (Rubric)실습 포함
기초PDU 정의, OSI·TCP/IP 계층별 명칭·헤더 구조 이해- 각 계층 PDU 명칭과 주요 헤더 필드를 표로 정리
- 캡슐화·역캡슐화 개념을 그림으로 도식화
- 7 계층 PDU 명칭을 정확히 기술했는가?
- 이더넷·IP·TCP 헤더의 주요 필드를 나열할 수 있는가?
-
응용Wireshark 로 패킷 캡처·분석, 계층별 PDU 디코딩 능력- Workshop 1 수행: HTTP 트래픽 캡처 및 계층별 헤더 분석
- TCP 3-way handshake 패킷의 Flags 필드 해석
- Wireshark 필터 (tcp.port, ip.addr) 를 정확히 작성했는가?
- SYN, SYN-ACK, ACK 패킷을 식별하고 순서 번호를 추적했는가?
실습 1: Wireshark HTTP 분석
실무MTU·MSS·PMTUD 문제 해결, 네트워크 성능 최적화- Workshop 2 수행: MSS Clamping 으로 단편화 방지
- 실제 프로젝트에서 Jumbo Frame 또는 Window Scaling 적용
- MTU 초과 패킷을 tcpdump 로 탐지했는가?
- MSS Clamping 적용 후 단편화가 제거되었는가?
- 성능 지표 (처리량, 지연) 가 측정·개선되었는가?
실습 2: MSS Clamping 시뮬레이션
심화SDN·NFV·QUIC 등 새로운 네트워크 패러다임의 PDU 구조 탐구- QUIC 프레임 구조 분석 및 UDP 기반 전송 원리 이해
- eBPF 로 커널 레벨 PDU 조작 코드 작성
- MPLS·VXLAN 터널링 PDU 구조 연구
- QUIC 프레임과 TCP 세그먼트의 차이를 설명할 수 있는가?
- eBPF 로 패킷 필터링·헤더 수정을 구현했는가?
- 터널링 프로토콜의 캡슐화 오버헤드를 분석했는가?
-

Terminology

Term EN (ko, abbr)정의역할/맥락관련 개념Flags
PDU (프로토콜 데이터 단위, Protocol Data Unit)네트워크 프로토콜 스택의 각 계층에서 처리·전송하는 데이터 블록계층별 역할 분리와 독립성 구현의 기초Encapsulation, Decapsulation-
Service Data Unit (서비스 데이터 단위, SDU)하위 계층에 전달되는 상위 계층의 데이터캡슐화 입력PDU, PCIcore
Protocol Control Information (프로토콜 제어정보, PCI)주소/길이/오류검출 등 제어 필드헤더 구성헤더, 트레일러core
Bit (비트)물리 계층 (Layer 1) PDU, 전기·광 신호로 표현네트워크 전송의 최소 단위Physical Layer, Signal-
Frame (프레임)데이터링크 계층 (Layer 2) PDU, MAC 주소와 FCS 포함LAN 내 노드 간 데이터 전달Ethernet, MAC Address, FCS-
Packet (패킷)네트워크 계층 (Layer 3) PDU, IP 주소와 TTL 포함네트워크 간 라우팅의 기본 단위IP, Routing, TTL-
Segment (세그먼트)전송 계층 (Layer 4) PDU(TCP), 포트 번호와 순서 번호 포함종단 간 신뢰성 있는 데이터 전송TCP, Port Number, Sequence Number-
Datagram (데이터그램)전송 계층 (Layer 4) PDU(UDP), 포트 번호 포함 (비연결형)종단 간 비연결형 전송UDP, Port Number-
Encapsulation (캡슐화)상위 PDU 를 페이로드로 받아 헤더·트레일러를 추가하는 과정계층 간 데이터 전달의 핵심 메커니즘PDU, Header, Trailer-
Decapsulation (역캡슐화)하위 PDU 로부터 헤더·트레일러를 제거하여 상위 PDU 복원수신 측 데이터 처리 과정PDU, Header Removal-
Header (헤더)PDU 앞부분에 추가되는 제어 정보 (주소, 플래그 등)계층별 프로토콜 제어 기능 구현PDU, Protocol-
Trailer (트레일러)PDU 뒷부분에 추가되는 제어 정보 (예: FCS)데이터 무결성 검증FCS, CRC-
Payload (페이로드)PDU 의 실제 데이터 부분 (상위 계층 PDU 또는 사용자 데이터)전송 대상 정보PDU, User Data-
MTU (최대 전송 단위, Maximum Transmission Unit)네트워크 계층이 데이터링크 계층으로 전달할 수 있는 최대 패킷 크기네트워크 성능 최적화의 핵심 파라미터Frame, Fragmentation, MSS-
MSS (최대 세그먼트 크기, Maximum Segment Size)TCP 세그먼트의 최대 페이로드 크기 (헤더 제외)TCP 성능 최적화 및 단편화 방지TCP, MTU, Encapsulation-
Fragmentation (단편화)IP 패킷 크기가 MTU 를 초과할 때 여러 단편으로 나누는 과정MTU 불일치 해결 (성능 저하 가능성)IP, MTU, ReassemblyPerformance Impact
PMTUD (경로 MTU 발견, Path MTU Discovery)경로 상 최소 MTU 를 동적으로 발견하는 메커니즘단편화 없는 최대 패킷 크기 결정MTU, ICMP, FragmentationICMP Dependency
DF (단편화 금지, Don’t Fragment)IP 헤더 Flags 필드의 비트, 설정 시 단편화 금지PMTUD 및 성능 최적화에 사용IP, Fragmentation, PMTUD-
FCS (프레임 체크 시퀀스, Frame Check Sequence)이더넷 프레임 트레일러의 CRC-32 오류 검출 필드데이터링크 계층 무결성 검증Frame, CRC, Error Detection-
TTL (수명, Time To Live)IP 헤더 필드, 라우팅 홉마다 1 감소 (0 도달 시 폐기)라우팅 루프 방지IP, Routing, Hop-
Checksum (체크섬)IP·TCP·UDP 헤더의 오류 검출 필드데이터 무결성 검증 (비암호화)Header, Error DetectionLimited Security
Jumbo Frame (점보 프레임)MTU 가 9000 바이트 이상인 이더넷 프레임데이터센터 내부 성능 최적화MTU, Ethernet, PerformanceCompatibility
ECN (명시적 혼잡 통지, Explicit Congestion Notification)IP·TCP 헤더의 혼잡 제어 필드, 패킷 손실 없이 혼잡 신호 전달TCP 성능 향상 및 지연 감소TCP, Congestion Control, QoS-
Window Scaling (윈도우 스케일링)TCP 윈도우 크기를 최대 1GB 까지 확장하는 옵션고대역폭·고지연 네트워크 성능 최적화TCP, Window Size, Performance-
CAM Table (내용 주소화 메모리 테이블, Content Addressable Memory Table)스위치가 MAC 주소와 포트를 매핑한 테이블Layer 2 스위칭의 기초Switch, MAC Address, Frame-
VLAN (가상 랜, Virtual LAN)물리적 네트워크를 논리적으로 분리하는 기술, 802.1Q 태그 사용브로드캐스트 도메인 분리 및 보안Frame, Tag, Switch-
VXLAN (가상 확장 LAN, Virtual Extensible LAN)Layer 2 프레임을 UDP 로 캡슐화하여 Layer 3 네트워크로 전송데이터센터·클라우드 네트워크 가상화Encapsulation, Tunneling, SDNOverhead
MPLS (다중 프로토콜 라벨 스위칭, Multiprotocol Label Switching)레이블 기반 패킷 포워딩, IP 라우팅보다 빠름WAN·캐리어 네트워크 성능 최적화Label, Routing, TunnelingVendor-Specific
QUIC (빠른 UDP 인터넷 연결, Quick UDP Internet Connections)UDP 위에서 동작하는 전송 계층 프로토콜, HTTP/3 기반저지연·고속 웹 통신UDP, HTTP/3, EncryptionEmerging
Offload (오프로딩: TSO/GSO/GRO)NIC 이 세그먼트/병합을 대행성능 향상캡처 가시성perf
Display/Capture filter (디스플레이/캡처 필터)분석·캡처 트래픽 선별관찰성BPFtool
TLS Record (TLS 레코드)TLS 1.3 의 전송 단위보안·무결성AEADL7

References

IETF RFC / 표준 스펙 (1 차 근거)

IEEE/ISO 표준

3GPP / ETSI (모바일 스택 참조)

운영체제/플랫폼 가이드 & 클라우드 문서

도구 매뉴얼

서적/학술 (1 차·심화)

벤더/실무 아티클 (보조)

입문/용어 해설 (보조—PDU 등)

PDU 관련 블로그/학습 글 모음