📚 네트워크 · 패킷 분석 › 01. TCP/IP 구조 이해 — 26편
이전 글: 25. Decapsulation · 다음 글: 27. Ethernet Frame

1. 개념

PDU(Protocol Data Unit) 는 한 계층의 프로토콜이 상대편 같은 계층과 주고받는 데이터 단위입니다. 각 계층의 PDU는 그 계층의 헤더(필요하면 트레일러)와 위 계층에서 받은 데이터로 이루어집니다.

이때 위 계층에서 내려받은 데이터를 그 계층 입장에서 SDU(Service Data Unit) 라고 부릅니다. 관계를 식으로 쓰면 다음과 같습니다.

N계층 PDU = N계층 헤더 (+ 트레일러) + N계층 SDU
N계층 SDU = (N+1)계층 PDU

즉 TCP 세그먼트(4계층 PDU)는 IP 입장에서 SDU가 되고, IP가 헤더를 붙이면 IP 패킷(3계층 PDU)이 됩니다. 이 과정 자체는 24. Encapsulation에서 다뤘으므로, 이 글은 각 단위의 이름과 쓰임에 집중합니다.


2. 동작 원리

계층별 PDU 이름은 다음과 같이 부르는 것이 일반적입니다.

계층 (TCP/IP 기준)PDU 이름포함 범위이 시리즈의 해당 글
응용데이터 / 메시지응용 프로토콜 데이터 (예: HTTP 요청)—
전송 (TCP)세그먼트(Segment)TCP 헤더 + 데이터29. TCP Segment
전송 (UDP)데이터그램(Datagram)UDP 헤더 + 데이터30. UDP Datagram
인터넷패킷(Packet)IP 헤더 + 세그먼트/데이터그램28. MTU와 IP 단편화 — 큰 패킷이 쪼개질 때
네트워크 접근프레임(Frame)Ethernet 헤더 + 패킷 + FCS27. Ethernet Frame
물리비트(Bit)0과 1의 신호—
응용     [ 데이터 ]
            ↓
전송     [TCP][ 데이터 ]                          = 세그먼트
            ↓
인터넷   [IP][TCP][ 데이터 ]                      = 패킷
            ↓
접근     [Eth][IP][TCP][ 데이터 ][FCS]            = 프레임
            ↓
물리     0101 1100 ...                            = 비트

3. 주요 특징

  • 용어는 문서마다 조금씩 다릅니다. IP 표준 문서(RFC 791)는 IP 단위를 "datagram"이라고 부르고, 일상적으로는 모든 단위를 "패킷"이라고 부르기도 합니다. Wireshark 화면에서도 캡처된 한 줄은 계층과 관계없이 "packet" 또는 "frame"으로 표시됩니다. 정확한 의미가 필요할 때는 "몇 계층 단위인가" 를 함께 밝히는 것이 안전합니다.
  • PDU 하나가 아래 계층 PDU 하나와 1:1이 아닐 수 있습니다.
    • IP 패킷이 MTU보다 크면 여러 조각(fragment)으로 나뉘어 여러 프레임이 됩니다.
    • 응용 데이터 하나(예: 큰 파일)는 여러 TCP 세그먼트로 나뉩니다.
    • 반대로 여러 응용 메시지가 한 세그먼트에 함께 담기기도 합니다.
  • 크기 제한도 계층마다 다릅니다. 이더넷 프레임의 페이로드는 최대 1500바이트(MTU), TCP 세그먼트의 데이터는 MSS 이하, IPv4 패킷은 최대 65,535바이트입니다.

4. 예시

예시(값은 환경마다 다름): 3,000바이트 HTTP 응답을 MTU 1500 이더넷 구간으로 보낼 때 PDU의 수는 계층마다 다릅니다(TCP 옵션 없음 가정).

계층단위개수크기
응용HTTP 응답13,000바이트
전송TCP 세그먼트3데이터 1460 + 1460 + 80
인터넷IP 패킷31500 + 1500 + 120
네트워크 접근이더넷 프레임31518 + 1518 + 138 (FCS 포함)

실습 예시: Wireshark에서 이 관계를 확인하는 방법입니다. 캡처된 한 줄(프레임) 안에서 계층별 길이 필드를 읽고, 여러 세그먼트로 나뉜 HTTP 응답은 마지막 세그먼트의 상세 창에 "[N Reassembled TCP Segments]" 항목으로 묶여 표시됩니다(Wireshark의 TCP 재조립 설정이 켜져 있을 때).

# tshark로 같은 정보를 필드로 확인 (Rocky: wireshark-cli, Ubuntu: tshark 패키지)
tshark -r sample.pcapng -Y "tcp.len > 0" \
  -T fields -e frame.number -e frame.len -e ip.len -e tcp.len

📷 [실습 화면 삽입 위치] Wireshark 상세 창에서 "Reassembled TCP Segments" 항목을 펼친 화면


5. 보안 관점

  • 단위가 나뉘는 지점은 탐지 우회의 지점이 될 수 있습니다. 공격 문자열을 여러 세그먼트나 IP 조각으로 나누면, 하나의 PDU만 보는 탐지는 패턴을 놓칠 수 있습니다. 그래서 IDS는 IP 조각 재조립과 TCP 스트림 재조립을 수행한 뒤 탐지합니다.
  • 재조립 방식의 차이: 조각이 겹치는 등 비정상적일 때 운영체제와 탐지 장비가 서로 다르게 재조립하면, 탐지 장비가 본 내용과 실제 서버가 받은 내용이 달라질 수 있습니다.
  • PDU 크기는 위장 여부의 단서입니다. 해당 프로토콜로서 비정상적인 크기(예: 매우 큰 DNS 메시지)는 확인 대상입니다.

6. SOC 관점

관제에서 PDU 개념이 가장 실용적으로 쓰이는 곳은 "이 로그는 무엇을 한 건으로 세는가" 를 구분할 때입니다.

데이터 출처한 건의 단위주의할 점
pcap (Wireshark)프레임 1개같은 연결도 수백 줄이 될 수 있음
방화벽 세션 로그연결(세션) 1개패킷 수·바이트 수는 필드로 따로 기록
NetFlow / IPFIX플로우 1개긴 연결은 여러 플로우 레코드로 나뉠 수 있음
IDS Alert탐지 조건을 만족한 패킷 또는 스트림한 연결에서 여러 Alert가 날 수 있음
웹 access logHTTP 요청 1개한 TCP 연결에 여러 요청이 있을 수 있음

관제자가 확인할 질문

  • "1,000건"이 패킷 1,000개인가, 연결 1,000개인가, 요청 1,000개인가?
  • 서로 다른 출처의 건수를 비교할 때 단위를 맞췄는가?

오탐 주의

  • 패킷 수가 많다고 공격인 것은 아닙니다. 큰 파일 전송은 연결 하나에 수많은 세그먼트를 만듭니다. 건수보다 연결 수·대상 수 같은 단위로 다시 집계해 봅니다.

7. 핵심 정리

  • PDU는 한 계층이 상대편 같은 계층과 주고받는 데이터 단위이며, 헤더와 SDU로 구성됩니다.
  • 계층별 이름은 데이터 → 세그먼트/데이터그램 → 패킷 → 프레임 → 비트입니다.
  • "패킷"은 넓은 의미로도 쓰이므로, 정확히 말할 때는 몇 계층 단위인지 밝힙니다.
  • 한 계층의 PDU가 아래 계층에서 여러 개로 나뉠 수 있고, 탐지 장비는 재조립 후 검사합니다.
  • 관제에서는 로그마다 "한 건"의 단위(프레임·세션·플로우·요청)가 다르다는 점을 먼저 확인합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글