SDU(Service Data Unit, 서비스 데이터 단위)
SDU(Service Data Unit) 는 ISO/IEC 7498-1 에 정의된 OSI 참조 모델의 핵심 개념으로, 계층화된 네트워크 아키텍처에서 인접 계층 간 서비스 전달의 기본 단위를 나타낸다. 각 계층 (N-layer) 은 상위 계층 (N+1) 으로부터 N-SDU 를 받아 자신의 프로토콜 제어 정보 (PCI) 를 추가하여 N-PDU 를 생성하고, 이를 하위 계층 (N-1) 에 N-1-SDU 로 전달한다.
SDU 의 핵심은 계층 간 서비스 인터페이스의 명확한 분리다. 각 계층은 상위 계층에게 서비스를 제공하는 서비스 제공자 (service provider) 역할을 하며, 하위 계층의 서비스를 사용하는 서비스 사용자 (service user) 역할을 동시에 수행한다. 이러한 계층별 역할 분리는 프로토콜 독립성과 모듈화를 가능하게 한다.
SDU 와 PDU 의 구별은 네트워크 프로토콜 이해의 시작점이다. N-SDU 는 N 계층이 제공하는 서비스의 페이로드이며, N-PDU 는 N 계층의 프로토콜 헤더가 추가된 완전한 프로토콜 메시지다. 예를 들어, 전송 계층의 관점에서 애플리케이션 데이터는 T-SDU 이며, 이에 TCP/UDP 헤더가 추가되면 T-PDU(세그먼트/데이터그램) 가 된다. 이 T-PDU 는 다시 네트워크 계층에 N-SDU 로 전달된다.
기본 개념과 배경
이 섹션은 SDU 의 공식 정의, 주요 특성, 역사적 발전, 해결 문제, 흔한 오해, 필수 용어를 다루며 개념적 출발점을 정렬한다.
정의 (Definition)
SDU(Service Data Unit, 서비스 데이터 단위) 는 OSI 참조 모델에서 특정 계층 (N) 이 상위 인접 계층 (N+1) 으로부터 받아서 처리해야 할 데이터 단위를 의미한다. 각 계층은 상위에서 전달받은 SDU 를 자신만의 헤더를 추가하여 PDU 로 변환 후 하위 계층으로 전송한다.
ISO/IEC 7498-1 표준에서는 SDU 를 " 서비스 사용자가 서비스 제공자에게 전달하는 정보의 단위이며, 서비스 제공자가 투명하게 (transparently) 전달해야 하는 데이터 " 로 정의한다.
각 계층은 자신만의 SDU 를 가지며, 계층 번호 N 을 접두사로 붙여 N-SDU 로 표기한다.
예시:
- L7-SDU (Application Layer SDU): 응용 계층 데이터
- L4-SDU (Transport Layer SDU): 전송 계층이 세션 계층으로부터 받는 데이터
- L3-SDU (Network Layer SDU): 네트워크 계층이 전송 계층으로부터 받는 데이터
- L2-SDU (Data Link Layer SDU): 데이터 링크 계층이 네트워크 계층으로부터 받는 데이터
특징 (Characteristics)
SDU 는 각 계층이 하위 계층에 전달하는 실제 데이터이며, PDU 의 페이로드 역할을 한다. 데이터는 계층마다 캡슐화·분할·조합되어 전달된다.
SDU 의 주요 특징:
- 투명성 (Transparency): SDU 는 서비스 제공 계층에서 내용이 해석되거나 수정되지 않고 그대로 전달되어야 한다. 각 계층은 SDU 를 불투명한 (opaque) 데이터로 취급한다.
- 서비스 경계 (Service Boundary): SDU 는 계층 간 서비스 인터페이스의 경계를 정의한다. 서비스 액세스 포인트 (SAP, Service Access Point) 를 통해 전달된다.
- 크기 가변성: SDU 의 크기는 상위 계층이 결정하며, 하위 계층은 이를 수용해야 한다. 단, 하위 계층의 MTU(Maximum Transmission Unit) 제약으로 인해 분할 (segmentation) 또는 단편화 (fragmentation) 가 발생할 수 있다.
- 계층 독립성: 각 계층의 SDU 는 다른 계층의 구현이나 프로토콜과 독립적이다. 이는 프로토콜 스택의 모듈화를 가능하게 한다.
구별점:
- SDU vs PDU: SDU 는 서비스 단위, PDU 는 프로토콜 단위. N-PDU = N-PCI + N-SDU
- SDU vs ICI: ICI(Interface Control Information) 는 계층 간 제어 정보, SDU 는 실제 페이로드
등장 배경 (Background)
SDU 개념은 1970 년대 후반 ISO(International Organization for Standardization) 가 OSI 참조 모델을 개발하면서 체계화되었다. 이전의 네트워크 시스템들은 계층 간 경계가 불명확하여 프로토콜 간 상호운용성과 독립적 개발이 어려웠다.
역사적 맥락:
- 1977-1984: ISO 는 이기종 시스템 간 통신을 위한 표준화된 참조 모델 필요성을 인식
- 1978: Hubert Zimmermann 이 OSI 7 계층 모델의 초기 설계 제안
- 1984: ISO 7498 표준으로 OSI 참조 모델 공식 발표, SDU/PDU 개념 정립
- 1994: ISO/IEC 7498-1 개정판에서 SDU 정의 정교화
발전 과정:
초기에는 단순히 " 계층 간 데이터 " 로만 인식되었으나, 점차 서비스 추상화 (service abstraction) 와 캡슐화 (encapsulation) 원칙의 핵심으로 자리잡았다.
TCP/IP 프로토콜 스위트의 실용적 성공으로 인해 OSI 모델의 엄격한 계층 구조는 완전히 구현되지 않았지만, SDU/PDU 개념은 네트워크 교육과 프로토콜 설계의 기본 원리로 남아있다.
해결하려는 문제 (Problem)
SDU/PDU 개념 도입 이전, 각 계층간 데이터 인계 방식이 모호하여 네트워크 오류, 성능 저하, 문제 진단이 어려웠다.
이를 계층별로 명확히 분리함으로써 트러블슈팅, 데이터 추적, 성능 개선, 혼선 방지에 도움을 제공한다.
SDU 개념 도입 효과
| 문제 영역 | Before (부재 시) | After (적용 시) |
|---|---|---|
| 인터페이스 명확성 | 계층 간 인터페이스가 임의적이고 불명확 | 명확한 서비스 경계와 책임 분리 |
| 변경 영향 범위 | 프로토콜 변경 시 인접 계층까지 영향 | 프로토콜 독립성으로 계층별 독립 개발 |
| 복잡성 관리 | 서비스와 프로토콜의 혼재로 인한 복잡성 | 서비스 추상화로 구현 세부 은폐 |
| 결합도/재사용성 | 계층 간 의존성↑ → 낮은 재사용성 | 계층 간 계약 (contract) 명시화로 재사용성↑ |
| 상호운용성/검증 | 상호운용성 검증의 어려움 | 표준화된 인터페이스로 상호운용성 확보·검증 용이 |
구체적 문제 해결 예시:
| 문제 영역 | Before | After (SDU 적용) |
|---|---|---|
| 프로토콜 교체 | 전체 스택 재설계 필요 | 해당 계층만 수정 |
| 디버깅 | 경계 불명확으로 어려움 | SAP 기준 명확한 추적 |
| 성능 최적화 | 계층 간 간섭 발생 | 독립적 최적화 가능 |
| 표준 준수 | 해석의 모호성 | 명확한 규격 기준 |
흔한 오해 (Misconceptions)
오해 1: SDU 와 PDU 는 같은 개념이다
오해: SDU 와 PDU 를 동의어로 사용하거나, 단순히 " 데이터 단위 " 로만 이해한다.
원인:
- 두 용어 모두 “Data Unit” 을 포함하여 혼동
- 일부 교육 자료에서 구별 없이 사용
- 실무에서 PDU 용어가 더 자주 사용됨
반례:
- SDU 는 상위 계층이 넘겨주는 ’ 순수 데이터 ‘, PDU 는 해당 계층이 직접 정의·생성하는 전용 데이터 단위 (헤더·트레일러 포함) 다.
| |
올바른 개념:
- N-SDU: N 계층이 받는 서비스 데이터 (상위 계층의 PDU)
- N-PDU: N 계층이 생성하는 프로토콜 데이터 (N-PCI + N-SDU)
- 관계: N-PDU = N-PCI + N-SDU, 그리고 N-PDU 는 (N-1)-SDU 가 됨
각 계층의 SDU 가 다음 계층에서 헤더·트레일러 등 제어 정보를 추가해 PDU 로 변환된다는 점을 명확히 인지해야 한다.
오해 2: SDU 는 항상 단일 PDU 로 매핑된다
오해: 하나의 SDU 는 항상 하나의 PDU 가 된다고 생각한다.
원인:
- 단순화된 교육 자료의 1:1 매핑 예시
- MTU/MSS 개념의 미이해
- 실제 프로토콜의 복잡성 간과
반례:
Segmentation (분할):
- 큰 L4-SDU (10,000 bytes) → 여러 개의 L3-PDU 로 분할
- TCP 에서 큰 애플리케이션 데이터를 MSS 크기로 분할
Fragmentation (단편화):
- L3 에서 큰 IP 패킷이 작은 MTU 링크를 만나면 단편화
- 하나의 L3-PDU 가 여러 개의 L2-SDU 로 나뉨
Concatenation (연결):
- 작은 여러 SDU 를 하나의 PDU 로 결합 (효율성)
- ATM 에서 여러 AAL5 SDU 를 하나의 셀 그룹으로 결합
올바른 개념: SDU 와 PDU 의 매핑은 M:N 관계이며, 계층의 세그멘테이션/리어셈블리 메커니즘에 따라 결정된다.
오해 3: 모든 PDU 는 ’ 패킷 ’ 이다
오해: ’ 패킷 ’ 이라는 용어를 모든 계층의 PDU 에 적용해도 무방하다.
원인: 교육이나 실무에서 데이터 단위를 일괄적으로 ’ 패킷 ’ 으로 지칭하는 관례.
반례: 네트워크 계층만 ’ 패킷 ‘, 전송 계층은 ’ 세그먼트 ‘, 데이터링크 계층은 ’ 프레임 ‘, 물리 계층은 ’ 비트 ’ 등 각기 구분 필요.
올바른 개념: 각 계층별 데이터 단위 (PDU) 의 명칭을 정확히 사용하여 문제 분석·트러블슈팅의 정확도를 높인다.
오해 4: 모든 계층이 명시적 SDU/PDU 를 가진다
오해: OSI 7 계층 모든 레벨에서 SDU/PDU 가 명확히 구분된다.
원인:
- 이론적 OSI 모델과 실제 구현 (TCP/IP) 의 차이
- 계층 융합 (layer blending) 현상
- 응용 계층의 다양성
반례:
- Physical Layer: 비트 스트림으로 작동하여 명시적 SDU 개념이 약함
- Application Layer: HTTP, SMTP 등 각 프로토콜마다 데이터 단위가 상이
- TCP/IP 모델: OSI 의 상위 3 계층 (Session, Presentation, Application) 이 단일 Application Layer 로 통합
올바른 개념: SDU/PDU 는 계층 간 인터페이스를 이해하기 위한 개념적 모델이며, 실제 구현은 프로토콜마다 다르다. 중요한 것은 " 서비스 경계 " 와 " 캡슐화 원칙 " 의 이해다.
핵심 개념 정의·용어 정합
사전 지식 (Prerequisites):
- OSI 7 계층 참조 모델 기본 이해
- 프로토콜과 서비스의 차이
- 캡슐화 (Encapsulation) 개념
핵심 용어 관계도:
graph TD
A[상위 계층 N+1] -->|N-SDU 전달| B[계층 N]
B -->|N-PCI 추가| C[N-PDU 생성]
C -->|N-1 SDU로 전달| D[하위 계층 N-1]
E[Service] -.제공.-> B
F[Protocol] -.사용.-> B
style A fill:#e1f5ff
style B fill:#fff4e1
style D fill:#e1f5ff
style C fill:#ffe1e1
계층 N 은 상위 계층 (N+1) 으로부터 N-SDU 를 서비스 인터페이스를 통해 받는다.
계층 N 은 자신의 프로토콜 제어 정보 (N-PCI, 헤더/트레일러) 를 N-SDU 에 추가하여 N-PDU 를 생성한다.
이 N-PDU 는 하위 계층 (N-1) 에게 (N-1)-SDU 로 전달된다. 각
계층은 상위에 서비스를 제공하고, 하위의 서비스를 사용하는 이중 역할을 수행한다.
핵심 용어 비교표:
| 용어 | 정의 | 역할 | 예시 (TCP/IP) |
|---|---|---|---|
| SDU | 서비스 데이터 단위 | 계층 간 페이로드 | HTTP 요청 → TCP 의 SDU |
| PDU | 프로토콜 데이터 단위 | 헤더 포함 완전 메시지 | TCP 세그먼트 (헤더 + 데이터) |
| PCI | 프로토콜 제어 정보 | 프로토콜 헤더/트레일러 | TCP 헤더 (20 bytes) |
| SAP | 서비스 액세스 포인트 | 계층 간 인터페이스 | Port 번호 (TCP/UDP) |
| ICI | 인터페이스 제어 정보 | 서비스 요청 파라미터 | 우선순위, QoS 플래그 |
요약 표: 계층별 SDU→PDU 명칭 대응
| 계층/도메인 | 상위가 내리는 SDU | 하위/동일 계층 PDU 명칭 |
|---|---|---|
| OSI L3(네트워크) | NSDU | NPDU(패킷) |
| OSI L2(데이터링크) | DL‑SDU | DL‑PDU(프레임) |
| IEEE 802.11 MAC | MSDU | MPDU, A‑MPDU(집계) |
| 3GPP RLC | RLC‑SDU | RLC‑PDU(UM/AM/TM) |
| 3GPP PDCP | PDCP‑SDU | PDCP‑PDU |
| ATM AAL5 | AAL5‑SDU | AAL5‑PDU |
| 6LoWPAN | IPv6 SDU | LoWPAN PDU(fragment 가능) |
프로토콜 구조 및 계층의 역할
SDU 가 어떻게 각 계층 간에 전달되고 처리되는지, 네트워크 구조에 따라 구체적으로 캡슐화되는 과정을 설명한다.
핵심 개념 요약
- SDU (Service Data Unit): (N+1) 계층이 N 계층에 전달하는 의미 보존 데이터 단위. 캡슐화의 " 입력 “.
- PDU (Protocol Data Unit): N 계층이 SDU 에 **PCI(헤더/트레일러)**를 부가해 만든 전송 단위.
- 관찰 포인트
- 세그멘테이션: 주로 전송계층 (L4) 이 SDU(바이트 스트림) 를 MSS에 맞춰 여러 세그먼트로 나눔.
- 단편화 (프래그먼트): 네트워크계층 (L3) 이 MTU를 넘는 IP 패킷을 조각으로 나눔 (IPv4 라우터/호스트 가능, IPv6 라우터 불가).
- 현실 세계: OSI L5/L6 는 독립 구현이 드뭄. 표현 (Presentation) 기능은 TLS/코덱/직렬화 등이 맡고, 세션 (Session) 은 애플리케이션/프레임워크가 담당하는 경우가 일반적.
OSI 7 계층에서의 SDU
각 OSI 계층마다 상위 계층이 전달한 SDU 는 하위 계층에서 헤더/트레일러를 덧붙여 PDU 로 변환되며, 이 과정에서 캡슐화 (Encapsulation) 가 반복된다.
PDU 최대 크기 (MTU) 를 넘으면 분할되어 다수 PDU로 전송 후 수신 측에서 재조립된다.
이 과정에서 오류/혼잡/재전송 정책은 해당 계층의 PDU 단위로 적용되며 SDU 의미는 보존된다.
물리 계층에서는 최종적으로 비트스트림으로 전송되어 모든 제어 정보가 해체된다.
계층별 SDU 특성
| 계층 | 이 계층이 받는 SDU (상위→하위) | 이 계층이 생성하는 PDU | 일반 크기/제약 | 대표 프로토콜·데이터 | 실무 비고 |
|---|---|---|---|---|---|
| L7 응용 | 응용 메시지/객체 (예: HTTP 메시지, RPC 호출) | APDU 또는 응용 메시지 | 응용 정의 (수 B ~ MB+) | HTTP, DNS, gRPC, SMTP | L5/L6 기능을 자체 포함하는 경우 많음 |
| L6 표현 | L7 APDU/메시지 | PPDU | 가변 (인코딩/암복호 영향) | ASN, XDR, 역할상 TLS | 엄밀히 TLS 는 L4.5~L7 사이지만 표현 기능(암·무결성) 수행 |
| L5 세션 | L6 PPDU | SPDU | 가변 | NetBIOS Session, RPC | 현대 TCP/IP 에선 분리 구현 드묾 |
| L4 전송 | L7 데이터 바이트 스트림 | TCP Segment / UDP Datagram / SCTP PDU | TCP MSS 기준 (예: 1460 IPv4, 1440 IPv6) | TCP, UDP, SCTP | 세그멘테이션/흐름/혼잡/재전송 |
| L3 네트워크 | L4 PDU | IP Packet | Path MTU(IPv6 ≥1280) | IPv4/IPv6, ICMP, IPsec | IPv4: 라우터/호스트 단편화, IPv6: 라우터 단편화 금지 |
| L2 데이터링크 | L3 Packet | Frame | 이더넷 IP MTU 1500(프레임 1518: H14+F4) | Ethernet, 802.11, PPP | VLAN(+4)·QinQ(+8)·무선 오버헤드 고려 |
| L1 물리 | L2 Frame(비트열) | 심볼/비트 스트림 | 라인 코딩·대역폭 제약 | 전기/광/무선 신호 | SDU 개념 미약(비트 전송) |
주의: 표의 “MTU 1500” 은 IP MTU(L3 페이로드 상한) 를 의미. 이더넷 프레임 전체는 헤더 14B + FCS 4B 가 더해져 1518B(프리앰블/IFG 제외).
SDU/PDU 명칭 매핑
| OSI 계층 | 이 계층의 SDU 명칭 | 이 계층의 PDU 명칭 (OSI) | TCP/IP 현실 용어 (주요 예) | 주요 기능 |
|---|---|---|---|---|
| L7 응용 | 데이터/메시지 | APDU | HTTP 메시지, RPC 메시지, DNS 질의/응답 | 응용 로직, 포맷 |
| L6 표현 | L7 APDU | PPDU | 직렬화 (ASN, JSON), 압축, TLS 레코드* | 표현/암·무결성 |
| L5 세션 | L6 PPDU | SPDU | (대부분 응용/프레임워크 내부) | 세션 관리/동기화 |
| L4 전송 | L7 데이터 | 세그먼트/데이터그램 | TCP 세그먼트 / UDP 데이터그램 | 신뢰/흐름/혼잡 제어 |
| L3 네트워크 | L4 PDU | 패킷 | IPv4/IPv6 패킷 | 라우팅/주소 |
| L2 데이터링크 | L3 패킷 | 프레임 | 이더넷/802.11/PPP 프레임 | 프레이밍/MAC |
| L1 물리 | L2 프레임 (비트열) | 비트/심볼 | 전송 비트스트림 | 매체 신호 |
- TLS 는 엄밀히 OSI 계층에 정확히 대응하지 않지만, 표현 계층 역할(암호화·무결성·레코드화) 을 수행하므로 현업 관용상 L6 성격으로 설명하는 경우가 많다.
캡슐화·역캡슐화
SDU 가 계층을 통과하며 PDU 로 변환되고 다시 SDU 로 추출되는 과정을 설명한다.
각 OSI 계층마다 상위 계층이 전달한 SDU 는 하위 계층에서 헤더/트레일러를 덧붙여 PDU 로 변환되며, 이 과정에서 캡슐화 (Encapsulation) 가 반복된다.
캡슐화: N 계층은 (N+1)-SDU 를 받아 **N-PCI(헤더/트레일러)**를 붙여 N-PDU 생성 → (N-1) 계층에 (N-1)-SDU로 넘김.
- 캡슐화 (Encapsulation) 과정:
- 서비스 요청: 상위 계층 (N+1) 이 N 계층에 데이터 전송 요청
- SDU 수신: N 계층이 N-SDU 를 SAP 을 통해 수신
- PCI 추가: N 계층이 자신의 프로토콜 헤더 (N-PCI) 를 SDU 에 추가
- PDU 생성: N-PCI + N-SDU = N-PDU
- 하위 전달: N-PDU 를 하위 계층 (N-1) 에 (N-1)-SDU 로 전달
역캡슐화: 수신 측에서 각 계층이 자신의 헤더만 해석/제거하여 상위 SDU 를 복원.
- 계층 독립성: 각 계층은 자신의 헤더만 이해하고 상위 SDU 내용은 불투명하게 취급 (투명성 원칙).
- 오프로딩 주의: TSO/GSO/GRO 가 켜져 있어도 온와이어 크기는 MTU 를 준수 (NIC 가 물리 전송 전에 분할).
- 역캡슐화 (De-encapsulation) 과정:
- PDU 수신: 하위 계층으로부터 N-PDU 수신
- PCI 제거: N 계층이 자신의 헤더 (N-PCI) 파싱 및 제거
- SDU 추출: N-SDU = N-PDU - N-PCI
- 서비스 전달: N-SDU 를 상위 계층에 (N+1)-SDU 로 전달
- 처리 완료: 상위 계층이 데이터 처리
간단 캡슐화 예
- L7 SDU 200B →
- L4: +TCP 20B ⇒ 세그먼트 220B →
- L3: +IPv4 20B ⇒ 패킷 240B →
- L2: +Eth 14B, +FCS 4B ⇒ 프레임 258B → L1 전송
캡슐화 체인 예시 (HTTP over TCP/IP over Ethernet):
| |
캡슐화 시퀀스 다이어그램:
sequenceDiagram
participant App as Application (L7)
participant Trans as Transport (L4)
participant Net as Network (L3)
participant L2 as Data Link (L2)
App->>Trans: L4-SDU (200B)
Note over Trans: + TCP Header (20B) → L4-PDU 220B
Trans->>Net: L3-SDU = L4-PDU (220B)
Note over Net: + IP Header (20B) → L3-PDU 240B
Net->>L2: L2-SDU = L3-PDU (240B)
Note over L2: + Ethernet Header (14B) + FCS (4B) → L2-PDU 258B
L2->>L2: L2-PDU (258B) → Physical Bits
L2->>Net: L3-SDU (240B)
Note over Net: - Ethernet Header / FCS
Net->>Trans: L4-SDU (220B)
Note over Trans: - IP Header (20B)
Trans->>App: App Data (200B)
Note over Trans: - TCP Header (20B)
송신 측에서는 각 계층이 헤더를 추가하며 데이터가 " 성장 " 한다 (캡슐화). 수신 측에서는 반대로 각 계층이 자신의 헤더를 제거하며 원본 데이터를 복원한다 (역캡슐화). 각 계층은 자신의 헤더만 해석하고, 페이로드 (SDU) 는 불투명하게 취급한다. 이는 계층 간 독립성의 핵심이다.
분할과 재조립 (Segmentation & Reassembly)
큰 SDU 가 여러 PDU 로 나뉘고 다시 합쳐지는 과정을 다룬다.
PDU 최대 크기 (MTU) 를 넘으면 분할되어 다수 PDU로 전송 후 수신 측에서 재조립된다. 이 과정에서 오류/혼잡/재전송 정책은 해당 계층의 PDU 단위로 적용되며 SDU 의미는 보존된다.
물리 계층에서는 최종적으로 비트스트림으로 전송되어 모든 제어 정보가 해체된다.
- 세그멘테이션 (L4): MSS 기반 분할. TCP 는 시퀀스/ACK/재전송으로 완전성 보장.
- 단편화 (L3): MTU 초과 시 IP 조각. IPv4: DF=0 이면 라우터/호스트 조각 가능, DF=1 이면 ICMP Frag Needed로 PMTUD 유도. IPv6: 라우터 단편화 금지, 호스트가 Fragment 헤더 사용.
- 실무 권장: PLPMTUD 활성화 + MSS 클램핑으로 블랙홀 회피, IPv6 는 ICMPv6 PTB 허용 필수.
분할이 필요한 이유
- 하위 계층의 MTU(Maximum Transmission Unit) 제약
- L2(예: 이더넷) MTU 변화는 상위 L3 SDU 처리에 직접 영향. 터널링 시 헤더 중첩을 고려해 효과적 MTU 재산정 필요.
- 네트워크 전송 효율성과 오류 복구
- 버퍼 크기 제한
분할 메커니즘 예시 (TCP Segmentation):
| 단계 | 설명 | 크기 |
|---|---|---|
| 1. 응용 데이터 | 웹 페이지 HTML | 10,000 bytes |
| 2. L4-SDU | 전송 계층이 받은 데이터 | 10,000 bytes |
| 3. MSS 확인 | Maximum Segment Size (일반적으로 1460 bytes) | - |
| 4. 분할 | 10,000 / 1460 ≈ 7 개 세그먼트 생성 | 각 ≤1460 bytes |
| 5. TCP PDU | 각 세그먼트에 TCP 헤더 (20B) 추가 | 각 ≤1480 bytes |
| 6. 전송 | 7 개의 L3-SDU 로 네트워크 계층에 전달 | - |
재조립 메커니즘:
- 순서 번호 (Sequence Number): TCP 헤더의 시퀀스 번호로 순서 보장
- 버퍼링: 수신 측에서 세그먼트를 버퍼에 저장
- 완전성 확인: 모든 세그먼트 도착 확인 후 재조립
- 타이머: 누락 세그먼트 재전송 요청
분할/재조립 코드 예시 (Python, 개념적):
| |
큰 SDU 는 하위 계층의 제약으로 인해 여러 작은 PDU 로 나뉜다. 각 PDU 는 순서 정보를 포함하여 수신 측에서 올바른 순서로 재조립될 수 있다. 이 과정은 전송 효율과 오류 복구의 균형을 맞춘다.
핸드셰이크 및 플로우 제어
SDU/PDU 변환과정에서 핸드셰이크, 흐름 제어, 세그멘테이션, 협상 과정 등을 설명한다.
세그멘테이션 및 패딩
데이터가 최대 PDU 크기를 초과할 경우 분할 (세그멘테이션), 크기가 부족할 경우 패딩이 추가된다.
- 대용량 SDU 는 여러 개의 PDU 로 분할되어 전송된다.
- 작은 SDU 는 패딩 (bit filler) 등이 추가되어 PDU 를 완성시킨다.
- 실제 구현에서는 MTU(Maximum Transmission Unit) 나 SDU 크기 조절을 통해 최적화한다.
핸드셰이크와 협상
- 일부 프로토콜 (예: TCP, Oracle DB 등) 은 SDU 크기·협상, 버퍼 크기 조정 (서버 - 클라이언트 간 negotiation) 을 통해 성능을 최적화한다.
- 예시: Oracle ODP.NET, Oracle DB 는 세션 연결 시 클라이언트, 서버가 각각 SDU 사이즈 협상하며, 최종 값은 더 작은 쪽으로 결정됨.
서비스 인터페이스와 SAP
SDU 가 전달되는 서비스 액세스 포인트 (SAP), 서비스 프리미티브, 인터페이스 제어 정보 (ICI) 를 다룬다.
서비스 액세스 포인트 (SAP)
SAP 의 역할, 주소 지정, 실제 구현 예시를 설명한다.
SAP 정의
서비스 액세스 포인트 (Service Access Point) 는 특정 계층이 상위 계층에게 서비스를 제공하는 논리적 인터페이스다. SAP 은 고유한 주소 (SAP Address) 로 식별되며, 이를 통해 여러 상위 계층 엔티티가 동일 하위 계층 서비스를 공유할 수 있다.
계층별 SAP 구현 예시
| 계층 | SAP 이름 | 주소 예시 | 실제 구현 |
|---|---|---|---|
| Transport | TSAP | Port 번호 (16-bit) | TCP/UDP Port (80, 443, 53 등) |
| Network | NSAP | IP 주소 (32-bit/128-bit) | IPv4/IPv6 주소 |
| Data Link | LSAP | MAC 주소 (48-bit) | Ethernet MAC, DSAP/SSAP (LLC) |
| Physical | PhySAP | 물리 포트 번호 | 이더넷 포트, 시리얼 포트 |
SAP 주소 지정 예시 (웹 서버 접속)
| |
SAP 멀티플렉싱 (Multiplexing)
graph TD
subgraph "상위 계층 N+1"
A1[엔티티 A]
A2[엔티티 B]
A3[엔티티 C]
end
subgraph "계층 N 서비스"
SAP1[SAP-1]
SAP2[SAP-2]
SAP3[SAP-3]
N[N-Layer Service Provider]
end
A1 -->|N-SDU| SAP1
A2 -->|N-SDU| SAP2
A3 -->|N-SDU| SAP3
SAP1 --> N
SAP2 --> N
SAP3 --> N
style N fill:#fff4e1
여러 상위 계층 엔티티가 각각 고유한 SAP 을 통해 동일한 하위 계층 서비스를 사용한다. 예를 들어, 하나의 컴퓨터에서 여러 애플리케이션 (웹 브라우저, 이메일 클라이언트, 메신저) 이 각각 다른 포트 번호 (TSAP) 를 사용하여 TCP 서비스를 공유한다. 이는 멀티플렉싱의 핵심이다.
서비스 프리미티브 (Service Primitives)
계층 간 서비스 요청과 응답을 나타내는 프리미티브 유형을 다룬다.
서비스 프리미티브 4 가지 유형
| 프리미티브 | 약어 | 방향 | 설명 |
|---|---|---|---|
| Request | .req | User → Provider | 서비스 요청 |
| Indication | .ind | Provider → User | 서비스 도착 알림 |
| Response | .res | User → Provider | 요청에 대한 응답 |
| Confirm | .cnf | Provider → User | 요청 처리 완료 확인 |
서비스 유형에 따른 프리미티브 조합
비확인 서비스 (Unconfirmed Service):
예시: UDP 데이터그램 전송
확인 서비스 (Confirmed Service):
예시: TCP 세그먼트 전송 (ACK 포함)
프리미티브와 SDU 전달 시퀀스 (확인 서비스)
sequenceDiagram
participant SU as Service User (송신)
participant SP as Service Provider (N계층)
participant RU as Service User (수신)
SU->>SP: N-DATA.req(N-SDU, params)
Note over SP: SDU 캡슐화<br/>N-PDU 생성
SP->>RU: N-DATA.ind(N-SDU, params)
Note over RU: SDU 처리
RU->>SP: N-DATA.res(ACK)
SP->>SU: N-DATA.cnf(ACK)
서비스 프리미티브는 계층 간 상호작용의 명시적 계약을 정의한다. Request 는 서비스 사용자가 시작하고, Indication 은 서비스 제공자가 상대방에게 알린다. Response 와 Confirm 은 확인이 필요한 서비스에서만 사용된다. SDU 는 Request 와 Indication 에 실려 전달된다.
인터페이스 제어 정보 (ICI)
SDU 와 함께 전달되는 제어 정보의 역할과 예시를 다룬다.
ICI(Interface Control Information) 정의
ICI 는 서비스 프리미티브와 함께 전달되는 파라미터로, SDU 자체는 아니지만 서비스 처리에 필요한 제어 정보를 포함한다. ICI 는 계층 간 인터페이스에서만 사용되고 하위 계층으로 전달되지 않는다.
ICI Vs PCI 비교
| 구분 | ICI | PCI |
|---|---|---|
| 정의 | 인터페이스 제어 정보 | 프로토콜 제어 정보 |
| 위치 | SAP 인터페이스 | PDU 헤더/트레일러 |
| 범위 | 인접 계층 간 | 동일 계층 피어 간 |
| 전달 | 하위로 전달 안 됨 | 네트워크를 통해 전달 |
| 예시 | 우선순위, QoS 플래그 | TCP 헤더, IP 헤더 |
예시
ICI 파라미터 예시:
| |
ICI 흐름 예시 (QoS 요청):
| |
ICI 는 계층 간 수직 인터페이스에서만 존재하며, 각 계층은 상위 ICI 를 자신의 PCI 와 하위 ICI 로 변환한다. 예를 들어, 응용 계층의 " 긴급 " 플래그는 TCP 의 URG 플래그 (PCI) 로, 그리고 IP 의 ToS 필드 (PCI) 로, 최종적으로 이더넷의 우선순위 태그 (PCI) 로 매핑된다. ICI 는 네트워크를 통해 전송되지 않는다.
성능 최적화 및 트러블슈팅
Section Overview: SDU 처리 성능 이슈, MTU 최적화, 디버깅 방법을 다룬다.
4.1 MTU 와 MSS 최적화
Detail Overview: 최대 전송 단위 설정이 SDU 처리 성능에 미치는 영향을 다룬다.
MTU (Maximum Transmission Unit):
- 데이터 링크 계층이 한 번에 전송할 수 있는 최대 프레임 크기
- 일반적인 이더넷 MTU: 1500 bytes
- Jumbo Frame: 9000 bytes (데이터센터 환경)
MSS (Maximum Segment Size):
- TCP 가 한 세그먼트에 담을 수 있는 최대 데이터 크기
- 일반적으로 MSS = MTU - IP Header (20) - TCP Header (20) = 1460 bytes
MTU/MSS 불일치로 인한 문제:
| 시나리오 | 문제 | 증상 | 해결책 |
|---|---|---|---|
| 큰 SDU + 작은 MTU | 과도한 분할 | 높은 오버헤드, 지연 증가 | Path MTU Discovery, MTU 조정 |
| MTU 블랙홀 | ICMP 차단으로 PMTUD 실패 | 연결 중단, 타임아웃 | MSS 하드코딩, TCP MSS Clamping |
| IPv6 터널 | 터널 오버헤드로 유효 MTU 감소 | 재전송 증가 | 터널 MTU 명시 설정 |
| VPN | 암호화 헤더로 MTU 감소 | 성능 저하 | VPN MTU 튜닝 |
Path MTU Discovery (PMTUD) 과정:
sequenceDiagram
participant Client as 클라이언트
participant R1 as 라우터1<br/>(MTU 1500)
participant R2 as 라우터2<br/>(MTU 1400)
participant Server as 서버
Client->>R1: IP 패킷 (1500B, DF=1)
R1->>R2: IP 패킷 (1500B)
R2-->>Client: ICMP Fragmentation Needed<br/>(MTU=1400)
Note over Client: MTU를 1400으로 조정
Client->>R1: IP 패킷 (1400B, DF=1)
R1->>R2: IP 패킷 (1400B)
R2->>Server: IP 패킷 (1400B)
Server-->>Client: 응답
도식 해설:
클라이언트는 초기에 최대 MTU(1500) 로 패킷을 전송한다. 경로 중간의 라우터가 더 작은 MTU 를 가지면 ICMP 메시지를 보내 클라이언트에게 알린다. 클라이언트는 MTU 를 조정하여 재전송한다. 이 과정으로 경로 상의 최소 MTU 를 찾아 최적화한다. 단, ICMP 가 차단되면 이 메커니즘이 실패한다.
MTU 최적화 실습 (Linux):
| |
코드 예시: TCP Socket MSS 설정 (Python):
| |
[RF:#29, #30, #31]
4.2 SDU 처리 오버헤드 분석
Detail Overview: 계층별 헤더 오버헤드와 캡슐화 비용을 정량화한다.
계층별 오버헤드 (전형적인 경우):
| 계층 | 헤더 크기 | 트레일러 | 총 오버헤드 | 오버헤드 비율 (100B SDU 기준) |
|---|---|---|---|---|
| L7 (HTTP) | ~200B (요청 라인 + 헤더) | 0 | 200B | 200% |
| L4 (TCP) | 20B (옵션 없음) ~ 60B | 0 | 20-60B | 20-60% |
| L3 (IPv4) | 20B (옵션 없음) | 0 | 20B | 20% |
| L2 (Ethernet) | 14B | 4B (FCS) | 18B | 18% |
| L1 (물리) | 0 (프리앰블 제외) | 0 | 0 | 0% |
| 총합 | ~254B | 4B | ~258B | 258% |
페이로드 효율성 분석 (작은 SDU 의 경우):
효율성 개선 전략:
Nagle 알고리즘 (TCP):
- 작은 세그먼트를 버퍼링하여 큰 세그먼트로 결합
- 효과: 오버헤드 감소, 지연 증가 (트레이드오프)
Header Compression (ROHC, RFC 5795):
- IP/TCP/UDP 헤더를 압축 (40B → 1-3B)
- 효과: 무선 환경에서 대역폭 절약
Jumbo Frames (Ethernet):
- MTU 를 1500B → 9000B 확대
- 효과: 대용량 전송 시 오버헤드 비율 감소
오버헤드 시각화 (크기별 비교):
graph LR
A[SDU<br/>10B] --> B[Total<br/>68B]
C[SDU<br/>100B] --> D[Total<br/>158B]
E[SDU<br/>1000B] --> F[Total<br/>1058B]
G[SDU<br/>1460B<br/>(MSS)] --> H[Total<br/>1518B<br/>(Ethernet)]
style A fill:#ffcccc
style C fill:#ffddcc
style E fill:#ffffcc
style G fill:#ccffcc
도식 해설:
작은 SDU 일수록 상대적 오버헤드가 크다. 10 bytes SDU 는 총 68 bytes 가 되어 680% 오버헤드가 발생한다. 반면 MSS 에 가까운 1460 bytes SDU 는 총 1518 bytes 로 약 4% 오버헤드만 발생한다. 따라서 대용량 데이터 전송 시 큰 SDU 를 사용하는 것이 효율적이다.
[RF:#32, #33]
4.3 디버깅과 트러블슈팅
Detail Overview: SDU 관련 문제 진단 및 해결 방법을 다룬다.
일반적인 SDU 문제 유형:
| 문제 | 증상 | 원인 | 진단 방법 | 해결책 |
|---|---|---|---|---|
| SDU 손실 | 데이터 누락, 재전송 | 버퍼 오버플로, 라우팅 | Wireshark, tcpdump | 버퍼 크기 증가, QoS |
| SDU 순서 뒤바뀜 | 데이터 깨짐, 재조립 실패 | 멀티패스, 재전송 | Sequence 번호 분석 | TCP 사용, 재정렬 로직 |
| SDU 중복 | 중복 데이터 | 재전송 타임아웃 | Duplicate ACK 분석 | 타임아웃 튜닝, 중복 제거 |
| SDU 분할 과다 | 성능 저하 | MTU 불일치 | PMTUD 로그, ICMP | MTU 조정, MSS Clamping |
| SDU 블랙홀 | 연결 끊김 | ICMP 차단, 방화벽 | traceroute, MTR | MSS 하드코딩, VPN MTU |
Wireshark 를 이용한 SDU 추적:
Python 을 이용한 SDU 모니터링:
| |
트러블슈팅 체크리스트:
- MTU/MSS 검증: 경로 상의 모든 장비 MTU 확인, PMTUD 작동 확인
- 헤더 분석: Wireshark 로 각 계층 헤더 크기 확인, 예상치와 비교
- 분할/재조립: 분할된 패킷 비율 측정, 과도한 분할 시 MTU 조정
- 순서 확인: TCP 시퀀스 번호 연속성 확인, 재정렬 발생 빈도 측정
- 타이밍: RTT, 재전송 타임아웃, 큐잉 지연 측정
- 버퍼: 송수신 버퍼 크기 확인, 오버플로 로그 점검
- QoS: ToS/DSCP 필드 설정 확인, 우선순위 적용 여부 검증
[RF:#34, #35, #36]
Section 5: 성능 최적화 및 트러블슈팅
Section Overview: 네트워크 실무에서 SDU 크기, PDU 구조, 계층별 문제 진단 및 최적화 방안을 다룬다.
5.1 SDU 크기 조정 및 네트워크 성능
Detail Overview: SDU 크기가 전송 효율, 패킷 드랍률, 네트워크 레이턴시 등에 직접 영향.
- Oracle DB 등에서는 SDU 크기 조절을 통한 네트워크 성능 최적화가 일반적.
- SDU 조정에 실패하면, 패킷 드랍·네트워크 느려짐·에러율 증가 등 실무 문제 발생.
[8][6]
5.2 실무 트러블슈팅
- SDU/PDU 분류와 캡슐화 과정을 정확히 이해하면 레이어별 트러블 발생시 데이터 손실 위치, 패킷 분실 원인 규명, 성능 최적화에 용이하다.
- 각 계층의 PDU 레이아웃·헤더 정보 분석은 실전 트러블슈팅에 필수.
[3][4][2]
실무 적용 및 베스트 프랙티스
프로토콜 설계 시 SDU 고려사항, 성능 튜닝, 보안 측면을 다룬다.
프로토콜 설계 가이드
새로운 프로토콜 설계 시 SDU 처리 원칙을 다룬다.
SDU 설계 원칙
명확한 서비스 경계:
- 상위/하위 계층과의 인터페이스를 명시적으로 정의
- SAP 주소 공간 설계
- ICI 파라미터 최소화 (복잡도 감소)
투명성 보장:
- SDU 내용을 해석하거나 수정하지 않음
- End-to-End 원칙 준수
- 중간 노드의 SDU 불투명성
효율적 크기 관리:
- 적절한 최소/최대 SDU 크기 정의
- 분할/재조립 메커니즘 설계
- 오버헤드 최소화
에러 처리:
- SDU 손실, 순서 뒤바뀜, 중복에 대한 처리
- 재전송 정책
- 타임아웃 설정
프로토콜 스펙 예시 (의사 규격):
| |
계층 간 인터페이스 설계 (API):
| |
성능 튜닝 체크리스트
실무 환경에서 SDU 관련 성능을 최적화하는 방법을 정리한다.
성능 튜닝 체크리스트:
| 항목 | 확인 사항 | 권장 값/설정 | 영향 |
|---|---|---|---|
| MTU | 네트워크 경로의 최소 MTU | 1500 (WAN), 9000 (LAN) | 분할 최소화 |
| TCP 버퍼 | 송수신 버퍼 크기 | BDP 기반 (BDP = Bandwidth × RTT) | 처리량 향상 |
| Nagle 알고리즘 | 실시간 vs 처리량 | 실시간: OFF, 배치: ON | 지연 vs 효율 |
| TCP Window Scaling | 대용량 전송 시 윈도우 크기 | RFC 7323 활성화 | 고속 네트워크 |
| QoS/ToS | 트래픽 분류 및 우선순위 | DSCP 설정 (EF, AF, BE) | 지연/손실률 |
| Jumbo Frame | 데이터센터 내부 | MTU 9000 | 오버헤드 감소 |
| Header Compression | 무선/위성 링크 | ROHC, VJ Compression | 대역폭 절약 |
Linux 시스템 튜닝 예시:
| |
BDP (Bandwidth-Delay Product) 계산 도구:
| |
출력 예시:
보안 및 인증
SDU/PDU 변환 과정 및 전달 시 보안·인증 관련 주요 개념을 설명한다.
캡슐화와 보안
각 계층의 헤더/트레일러에는 에러 제어, 인증 정보, 암호화 데이터 등이 추가된다.
- SDU 가 PDU 로 변환될 때, 예를 들어 TLS, IPSec 과 같은 보안 프로토콜 계층에서 암호화 혹은 인증 데이터가 헤더/페이로드에 추가된다.
- 인증·무결성·에러 제어를 위해 각 계층에서 전달하는 데이터 단위에 고유 제어 정보가 추가되어, 오로지 상위 계층 데이터 (SDU) 만으로 통신 불가.
보안 고려사항
SDU 처리 시 보안 위협과 대응 방안을 다룬다.
SDU 관련 보안 위협:
| 위협 | 설명 | 영향 | 대응 방안 |
|---|---|---|---|
| SDU 스니핑 | 평문 SDU 도청 | 기밀성 침해 | TLS/IPSec 암호화 |
| SDU 변조 | 전송 중 데이터 조작 | 무결성 침해 | MAC, 디지털 서명 |
| SDU 재전송 공격 | 과거 SDU 재사용 | 인증 우회 | Nonce, Timestamp |
| SDU 플러딩 | 대량 SDU 전송으로 과부하 | 가용성 침해 | Rate Limiting, DDoS 방어 |
| SDU 단편화 공격 | 악의적 IP 단편화 | 방화벽 우회 | 단편화 재조립 검증 |
| SDU 크기 공격 | 비정상 크기 SDU | 버퍼 오버플로 | 크기 검증, 샌드박싱 |
TLS 를 통한 SDU 보호:
보안 강화 체크리스트:
- End-to-End 암호화: TLS 1.3, IPSec 사용
- 무결성 검증: HMAC, 디지털 서명 적용
- 재전송 방어: 시퀀스 번호, 타임스탬프, Nonce 사용
- Rate Limiting: 송신자당 SDU 전송률 제한
- 크기 검증: 최소/최대 SDU 크기 강제
- 단편화 제어: 불필요한 단편화 차단, 재조립 검증
- 로깅/모니터링: 비정상 SDU 패턴 탐지
코드 예시: SDU 크기 검증:
| |
Workshops
네트워크 애플리케이션 SDU/PDU 흐름 진단 실습
시나리오: 실시간 대용량 메시지 전송 환경 (예: DB 서버 - 클라이언트) 에서 각 계층의 SDU/PDU 흐름, MTU/SDU 사이즈 협상, 실제 패킷 구조 분석.
수행 절차:
| 단계 | 작업 | 담당 | 도구 | 소요 시간 |
|---|---|---|---|---|
| 1 | TCP/UDP 세션 생성 | 개발자 | Wireshark | 10 분 |
| 2 | SDU 크기 조정 (서버/클라이언트) | 인프라 | DB 설정, netstat | 20 분 |
| 3 | 패킷 캡처, PDU 헤더 확인 | 네트워크 | Wireshark | 20 분 |
| 4 | 오류/추적 분석 | 개발자 | 로그 분석 | 15 분 |
산출물:
- 패킷 구조 (헤더/페이로드 분리)
- SDU/PDU 변환 과정 분석 리포트
수용 기준 (AC):
- 헤더/페이로드 구분 명확
- SDU 사이즈 협상 과정 이해
- PDU 구조 (계층별) 분석
- 오류 추적 정확
OSI 모델 계층별 SDU/PDU 실습 및 트러블슈팅
시나리오: OSI 7 계층 환경에서 각 계층별 SDU/PDU 개념 실습, 문제 발생 구간 위치 추적 및 진단.
수행 절차:
| 단계 | 작업 | 담당 | 도구 | 소요 시간 |
|---|---|---|---|---|
| 1 | 계층별 SDU 정의 | 교육생 | 이론 정리 | 10 분 |
| 2 | 패킷 생성 및 캡슐화 실습 | 교육생 | Wireshark | 15 분 |
| 3 | MTU/SDU 협상 시뮬레이션 | 네트워크 | 시뮬레이터 | 10 분 |
| 4 | 오류/성능 문제 추적 | 교육생 | 로그 분석, 시뮬레이션 | 15 분 |
산출물:
- 계층별 SDU/PDU 개념 정의문
- MTU/SDU 협상 결과 리포트
수용 기준 (AC):
- 각 계층 SDU/PDU 구분 가능
- 협상 및 세그멘테이션 과정 명확
- 문제 추적 및 진단력 향상
TCP 스트림에서 SDU 추적하기
시나리오:
네트워크 관리자로서 특정 TCP 연결의 애플리케이션 데이터 (L4-SDU) 를 추출하여 분석해야 한다. Wireshark 와 Python 을 사용하여 패킷 캡처 파일 (PCAP) 에서 HTTP 요청/응답을 재구성한다.
수행 절차:
| 단계 | 작업 | 담당 | 도구 | 소요 시간 |
|---|---|---|---|---|
| 1 | 패킷 캡처 수행 | 관리자 | Wireshark, tcpdump | 5 분 |
| 2 | TCP 스트림 식별 | 분석가 | Wireshark (Follow TCP Stream) | 10 분 |
| 3 | SDU 추출 스크립트 작성 | 개발자 | Python, Scapy | 30 분 |
| 4 | HTTP 메시지 재구성 | 분석가 | 스크립트 실행 | 5 분 |
| 5 | 결과 검증 및 분석 | 팀 | 수동 검증 | 10 분 |
산출물:
- PCAP 파일: 캡처된 네트워크 트래픽
- Python 스크립트: SDU 추출 및 재구성 도구
- 재구성된 HTTP 메시지: 요청/응답 텍스트 파일
- 분석 보고서: 발견된 이상 패턴 문서
SDU 추출 스크립트 (Python + Scapy):
| |
수용 기준 (AC):
- PCAP 파일에서 TCP 스트림을 정확히 식별
- TCP 헤더를 제거하고 순수 페이로드 (SDU) 만 추출
- 클라이언트와 서버 방향을 올바르게 구분
- HTTP 요청/응답 메시지를 완전히 재구성
- 손실되거나 순서가 뒤바뀐 패킷 처리
MTU 최적화 실습
시나리오:
VPN 터널 환경에서 애플리케이션 성능이 저하되고 있다. 원인을 진단하고 MTU/MSS 설정을 최적화하여 성능을 개선한다. 실제 네트워크 환경 또는 가상 환경 (VM, Docker) 에서 실습한다.
수행 절차:
| 단계 | 작업 | 담당 | 도구 | 소요 시간 |
|---|---|---|---|---|
| 1 | 현재 MTU 확인 | 엔지니어 | ip link show, netstat -i | 5 분 |
| 2 | Path MTU Discovery 테스트 | 엔지니어 | ping -M do -s <size> | 10 분 |
| 3 | 최적 MTU 값 결정 | 엔지니어 | 바이너리 서치 | 10 분 |
| 4 | MTU 설정 변경 | 관리자 | ip link set, sysctl | 5 분 |
| 5 | MSS Clamping 설정 (필요 시) | 관리자 | iptables | 5 분 |
| 6 | 성능 측정 (전/후) | 엔지니어 | iperf3, netperf | 15 분 |
| 7 | 결과 분석 및 문서화 | 팀 | 스프레드시트, 보고서 | 10 분 |
산출물:
- 현재 상태 진단 보고서: MTU 값, PMTUD 결과, 성능 메트릭
- 최적 MTU 값: 경로별 권장 MTU
- 설정 변경 스크립트: 자동화된 MTU 설정 도구
- 성능 개선 측정 결과: Before/After 처리량, 지연, 재전송률
MTU 최적화 스크립트 (Bash):
| |
수용 기준 (AC):
- Path MTU Discovery 로 경로 상 최소 MTU 정확히 식별
- MTU 설정 변경 후 단편화 발생하지 않음
- MSS Clamping 적용 시 SYN 패킷에 올바른 MSS 옵션 포함
- 성능 측정 결과 처리량 향상 또는 지연 감소 확인
- 설정 변경 스크립트가 재부팅 후에도 유지되도록 영구 적용
Final Summary
SDU(Service Data Unit) 는 OSI 참조 모델에서 계층 간 서비스 인터페이스를 통해 전달되는 데이터 단위로, 각 계층이 상위 계층에게 제공하는 투명한 페이로드이며, PDU(Protocol Data Unit) 와 함께 캡슐화 원칙의 핵심을 이루어 프로토콜 독립성과 모듈화를 가능하게 하는 네트워크 아키텍처의 기본 개념이다.
SDU 는 1984 년 ISO 7498 표준에서 OSI 참조 모델의 일부로 공식 정의되었으며, 계층화된 네트워크 아키텍처에서 인접 계층 간 서비스 경계를 명확히 하기 위해 도입되었다. 각 계층 (N) 은 상위 계층 (N+1) 으로부터 N-SDU 를 받아 자신의 프로토콜 제어 정보 (PCI) 를 추가하여 N-PDU 를 생성하고, 이를 하위 계층 (N-1) 에 (N-1)-SDU 로 전달한다.
SDU 의 핵심 특징은 투명성 (transparency) 으로, 각 계층은 SDU 의 내용을 해석하거나 수정하지 않고 불투명한 데이터로 취급한다. 이는 계층 간 독립성을 보장하고 프로토콜 교체 및 독립적 개발을 가능하게 한다. SDU 는 PDU, PCI, SAP, ICI 와 함께 OSI 모델의 캡슐화 메커니즘을 구성한다.
SDU 처리에서 가장 중요한 트레이드오프는 효율성과 오버헤드 간의 균형이다. 작은 SDU 는 실시간성은 높지만 상대적 헤더 오버헤드가 크며 (10 bytes SDU 시 680% 오버헤드), 큰 SDU 는 효율적이나 분할 (segmentation) 과 재조립 (reassembly) 의 복잡성이 증가한다. MTU 와 MSS 설정은 네트워크 경로의 제약과 응용의 요구사항을 동시에 고려해야 하며, Path MTU Discovery(PMTUD) 가 ICMP 차단으로 실패할 경우 MTU 블랙홀 현상이 발생할 수 있다. 또한 Nagle 알고리즘은 작은 SDU 를 결합하여 오버헤드를 줄이지만 지연을 증가시켜, 실시간 애플리케이션에서는 비활성화가 필요하다. 보안 측면에서는 SDU 의 암호화 (TLS/IPSec) 가 기밀성을 보장하지만 추가 오버헤드와 처리 지연을 초래한다.
OSI 모델의 SDU 개념은 이론적으로 명확하나 실제 TCP/IP 구현에서는 계층 융합 (layer blending) 과 최적화로 인해 엄격한 SDU/PDU 구분이 모호해지는 경우가 많다. 예를 들어, TLS 는 프레젠테이션 계층 역할을 하지만 실제로는 애플리케이션 계층 라이브러리로 구현된다. 또한 QUIC 과 같은 현대 프로토콜은 전송 계층과 세션 계층 기능을 통합하여 기존 SDU 모델로는 설명이 어렵다. 향후 학습 과제로는 (1) TCP/IP 와 OSI 모델 간 SDU 매핑 심화, (2) 소프트웨어 정의 네트워킹 (SDN) 에서의 SDU 처리 방식, (3) QUIC, HTTP/3 등 차세대 프로토콜의 데이터 단위 개념, (4) 네트워크 가상화 환경 (NFV, 컨테이너) 에서의 SDU 최적화 기법을 탐구할 것을 권장한다.
Learning Guide
| 단계 | 목표 (Outcome) | 추천 자료 (Seed 기반) | 과제 (Task) | 평가 기준 (Rubric) | 실습 포함 |
|---|---|---|---|---|---|
| 기초 | OSI 모델 이해 및 SDU/PDU 구별 | ISO/IEC 7498-1 표준, 네트워크 기초 교재 | SDU 와 PDU 정의 정리, 계층별 명칭 암기, 간단한 캡슐화 예시 작성 | 용어를 정확히 설명 가능, 계층별 SDU 명칭 식별 가능 | (선택) |
| 응용 | 실제 프로토콜에서 SDU 식별 및 추적 | Wireshark 가이드, TCP/IP Illustrated | Wireshark 로 TCP 스트림 분석, HTTP 요청/응답 SDU 추출, Python 스크립트로 SDU 파싱 | 패킷 캡처에서 SDU 를 정확히 추출, 계층별 캡슐화 단계를 도식화 | 필수 (Workshop 1) |
| 실무 | SDU 최적화 및 성능 튜닝 | RFC 1191 (PMTUD), 리눅스 네트워크 튜닝 가이드 | MTU/MSS 최적화 프로젝트, VPN 환경 성능 개선, TCP 버퍼 크기 조정 | 성능 측정 결과 개선 확인, 최적화 전/후 비교 문서화, 팀에 공유 | 필수 (Workshop 2) |
| 심화 | 프로토콜 설계 및 SDU 보안 강화 | RFC 8446 (TLS 1.3), QUIC 표준 | 새로운 프로토콜 설계 (SDU/SAP 정의 포함), 보안 위협 분석 및 대응 방안 구현, QUIC 의 SDU 개념 연구 | 프로토콜 스펙 작성, 보안 검증 테스트 통과, 최신 프로토콜 트렌드 분석 발표 | (선택) |
실습 1: TCP 스트림에서 SDU 추출 (응용 단계)
- 목표: Wireshark 와 Python(Scapy) 을 사용하여 PCAP 파일에서 애플리케이션 계층 SDU 를 추출하고 HTTP 메시지를 재구성한다.
- 도구: Wireshark, Python, Scapy 라이브러리
- 산출물: SDU 추출 스크립트, 재구성된 HTTP 요청/응답 파일
- 평가: TCP 헤더를 제거하고 순수 페이로드만 추출, 방향 (클라이언트/서버) 구분 정확성
실습 2: MTU 최적화 프로젝트 (실무 단계)
- 목표: VPN 또는 터널 환경에서 Path MTU Discovery 를 수행하고, 최적 MTU/MSS 를 설정하여 성능을 개선한다.
- 도구: Linux 명령어 (
ping,ip,iptables), iperf3, 네트워크 시뮬레이터 (GNS3/Packet Tracer) - 산출물: MTU 진단 보고서, 최적화 스크립트, 성능 개선 측정 결과
- 평가: PMTUD 성공률, 단편화 제거 여부, 처리량 향상 또는 지연 감소 확인
Terminology
| Term EN (ko, abbr) | 정의 | 역할/맥락 | 관련 개념 | Flags |
|---|---|---|---|---|
| Service Data Unit (SDU, 서비스 데이터 단위) | (N+1) 계층이 N 계층에 전달하는 의미 보존 데이터 단위 | 상→하 전달 단위, 캡슐화 입력 | PDU, SAP, Payload | core |
| Protocol Data Unit (PDU, 프로토콜 데이터 단위) | N 계층이 SDU 에 **PCI(헤더/트레일러)**를 부가해 만든 전송 단위 | 동계층 피어 간 교환 단위 | SDU, PCI, Encapsulation | core |
| Protocol Control Information (PCI) | PDU 에 추가되는 제어 정보 (주소/길이/플래그 등) | 프로토콜 동작 (라우팅/무결성/흐름) | Header, Trailer | core |
| Encapsulation / De-encapsulation (캡슐화/역캡슐화) | SDU 에 PCI 를 추가해 PDU 로 포장 / 수신 시 헤더 제거해 SDU 복원 | 계층 간 전달 메커니즘 | Tunneling, Overlay | core |
| Payload (페이로드) | PDU 내부의 사용자 데이터 (상위 계층 SDU) | 실전 업무 데이터 | SDU, PDU | core |
| Header / Trailer (헤더/트레일러) | PDU 앞/끝에 붙는 제어 정보 영역 (예: 주소, FCS) | 오류 검출·라우팅·식별 | PCI, Checksum, FCS/CRC | core |
| Segmentation (세그멘테이션) | 큰 **SDU(주로 L4 데이터)**를 여러 PDU 로 분할 | 전송계층 분할, MSS 기준 | Reassembly, MSS | perf |
| Reassembly (재조립) | 분할/단편화된 단위를 수신 측에서 원 SDU 로 복원 | 수신 지연·버퍼 영향 | Segmentation, Fragmentation | perf |
| Fragmentation (단편화) | IP 패킷이 MTU 초과 시 L3 에서 조각화 | MTU 불일치 대응 (성능 페널티) | DF, PMTUD | L3 |
| Maximum Transmission Unit (MTU) | 링크가 한 번에 운반 가능한 IP 패킷 최대 크기 (IP MTU) | 분할/단편화 기준, 경로 호환성 | MSS, PMTUD, Jumbo | perf |
| Maximum Segment Size (MSS) | TCP 세그먼트 페이로드 최대값 (보통 MTU−IP−TCP) | TCP 분할 기준·단편화 회피 | MTU, TCP 옵션 | perf |
| PMTUD / PLPMTUD | 경로 최소 MTU 동적 탐지 (ICMP / 상위계층 Probe) | 블랙홀 회피·최대 크기 결정 | DF, ICMP PTB | perf |
| DF (Don’t Fragment) | IPv4 헤더 플래그 (단편화 금지) | PMTUD 유도·보호 | Fragmentation | L3 |
| Service Access Point (SAP) | 계층 경계의 논리 인터페이스 | SDU 가 통과하는 접점·멀티플렉싱 | TSAP(포트), NSAP | std |
| TSAP / NSAP | 전송/네트워크 계층 SAP; 현대 TCP/IP 에선 포트/IP에 대응 | 멀티플렉싱·디멀티플렉싱 기준 | SAP, Port, IP | std |
| Interface Control Information (ICI) | 서비스 프리미티브와 함께 전달되는 제어 파라미터 | 서비스 요청/응답 메타데이터 | Primitive, SAP | std |
| Service Primitive (프리미티브) | Request/Indication/Response/Confirm | 서비스 인터페이스 추상화 | SAP, ICI | std |
| Multiplexing / Demultiplexing | 상위 다중 흐름→하위 하나 / 하위 하나→상위 다중 | 자원 공유·흐름 분배 | SAP, Port, 5-tuple | core |
| Transparency (투명성) | SDU 내용이 서비스 제공 계층에서 해석/변경되지 않음 | 계층 독립성·모듈성 | Encapsulation | principle |
| Layering (계층화) | 기능을 독립 계층으로 분리하는 설계 원칙 | 모듈화·추상화·재사용성 | OSI Model, TCP/IP | principle |
| End-to-End Principle (종단 간 원칙) | 기능은 가능한 한 종단에 배치 | 중간 노드 단순화 | Transparency | principle |
| BDP (Bandwidth-Delay Product) | 경로에 체류 가능한 데이터량 B×RTT | TCP 버퍼/윈도우 설정 기준 | TCP Window, RWIN | perf |
| Nagle Algorithm / TCP_NODELAY | 작은 세그먼트 결합 / 즉시 전송 옵션 | 오버헤드↔지연 트레이드오프 | Segmentation, Latency | perf |
| Jumbo Frame | MTU ≥ 9000 인 이더넷 프레임 | DC 내부 처리량/CPU 절감 | MTU 일관성, PMTUD | perf |
| Header Compression (ROHC/VJ) | IP/TCP/UDP 헤더 압축 | 저대역폭·무선 최적화 | ECN, 링크 특성 | perf |
| TLS (TLS Record) | 상위 계층 데이터의 암·무결성 (레코드 단위) | 보안·오버헤드 (≈21B) | QUIC, IPsec | sec |
| IPsec (ESP/AH) | L3 보안 (터널/트랜스포트) | MTU 오버헤드·MSS 조정 | PMTUD, MSS Clamp | sec |
| MSDU / MPDU (802.11) | MAC 상위 SDU / MAC PDU | Wi-Fi 전송 단위 | A-MSDU, A-MPDU | 802.11 |
| A-MSDU / A-MPDU | 여러 MSDU 를 하나 MPDU 로 / 여러 MPDU 를 묶어 전송 | 헤더 절감 / 재전송 효율 | MSDU, MPDU | 802.11 |
| PDCP SDU / RLC SDU (3GPP) | 상위→PDCP / PDCP→RLC 로 전달 SDU | LTE/NR 스택 단위 | PDCP/RLC PDU | 3gpp |
| AAL5 SDU (ATM) | AAL5 가 운반하는 상위 SDU | ATM 계열 적응 계층 | AAL5 PDU | atm |
| 6LoWPAN SDU | 저전력 PAN 에서의 IPv6 SDU(링크 관점) | IoT 적응/단편화 | 6LoWPAN Fragment | iot |
| APDU / TPDU | 응용/전송 계층 PDU 명칭 (문맥 의존) | PDU 용어 구분 | Segment, PDU | note |
References
- Service data unit (Wikipedia)
- The OSI Model: A Comprehensive Overview (dev.to)
- Difference Between SDU and PDU (scribd)
- PDU and SDU Explained (rfwireless-world.com)
- What Are Protocol Data Units And Why Do They Matter (vervecopilot.com)
- Configuring Session Data Unit (oracle.com)
- SDU (oracle.com)
- 이동 통신 시스템에서 대용량 서비스 데이터 유닛… (patents.google.com)
- SDUs and PDUs in 5G(NR) (olaxwifi.com)
- 기술용어해설종합 (ktword.co.kr)
- ISO/IEC 7498-1:1994 Information technology - Open Systems Interconnection - Basic Reference Model
- RFC 1122: Requirements for Internet Hosts - Communication Layers
- RFC 1191: Path MTU Discovery
- RFC 8200: Internet Protocol, Version 6 (IPv6) Specification
- RFC 793: Transmission Control Protocol
- Computer Networks (5th ed., Tanenbaum & Wetherall)
- Computer Networking: A Top-Down Approach (8th ed., Kurose & Ross)
- TCP/IP Illustrated, Volume 1: The Protocols (Stevens)
- OSI Reference Model — Zimmermann (1980), IEEE Transactions on Communications
- Wireshark User’s Guide — Following Protocol Streams
- Linux Advanced Routing & Traffic Control HOWTO — MTU and Path MTU Discovery
- Cisco — Understanding and Configuring the IP MTU
- RFC 4821: Packetization Layer Path MTU Discovery
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3
- RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport
- Information technology — OSI — Conventions for the definition of OSI services (X.210)
- Open Systems Interconnection — Basic Reference Model (X.200 | ISO/IEC 7498-1)
- OSI Network Service Definition (X.213)
- RFC 4944 — Transmission of IPv6 Packets over IEEE 802.15.4 Networks
- RFC 4717 — ATM over MPLS Networks
- RFC 2363 — PPP over FUNI
- ETSI TS 124 007 — 3GPP: Layer 3; General aspects
- ETSI TS 138 322 V18.2.0 — 5G NR; RLC protocol
- ETSI TS 36 323 — LTE; PDCP protocol
- IEEE 802.1 — Ambiguity in the MAC Service (802.1AC)
- IEEE 802.1ACea — Progress / Understanding 802.1AC (MSDU 언급)
- Cisco — Understanding MTU on ATM AAL5
- Cisco — Any Transport over MPLS (AToM, SDU mode)
- Cisco Wireless Controller — A-MSDU / A-MPDU 설정 가이드
- HPE Aruba — AirWave 8.x CLI Reference Guide
- Huawei — LTE Standards Evolution / 5G ToB Service Experience White Paper
- ARIB — 3GPP TS 36.509 Annex (참조집)
- Standards iTeh — ETSI TS 136 322 V15.4.0 Preview
- 3GPP — Specification 38.322 (RLC)