null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
PDU — 프레임, 패킷, 세그먼트의 차이
#network
#pdu
#frame
#packet
#segment
@devpc
|
2026-05-04 01:59:39
|
GET /api/v1/nodes/412?nv=1
History:
v1 (2026-05-04) (Latest)
0
Views
1
Calls
# PDU — 프레임, 패킷, 세그먼트의 차이 ## 계층마다 데이터 단위가 다른 이유 이더넷 통신을 공부하다 보면 "패킷을 전송한다", "프레임을 캡처한다", "세그먼트를 재조합한다" 는 표현이 섞여 나온다. 이것들은 같은 데이터를 가리키는 것처럼 보이지만, 엄밀히는 **어느 계층에서 바라보느냐에 따라 다른 이름을 가진다.** 이 개념을 **PDU(Protocol Data Unit)** 라 한다. --- ## 계층별 PDU 이름 ``` ┌──────────────────────────────────────────────────────┐ │ TCP/IP 모델 OSI 7계층 PDU 이름 │ ├──────────────────┬────────────────┬──────────────────┤ │ Application │ 7. Application │ │ │ │ 6. Presentation│ Data (Message) │ │ │ 5. Session │ │ ├──────────────────┼────────────────┼──────────────────┤ │ Transport │ 4. Transport │ Segment (TCP) │ │ │ │ Datagram (UDP) │ ├──────────────────┼────────────────┼──────────────────┤ │ Network (IP) │ 3. Network │ Packet │ ├──────────────────┼────────────────┼──────────────────┤ │ Network Access │ 2. Data Link │ Frame │ │ (Ethernet) │ 1. Physical │ Bit │ └──────────────────┴────────────────┴──────────────────┘ ``` --- ## 캡슐화 (Encapsulation) 데이터가 상위 계층에서 하위 계층으로 내려가면서 각 계층의 헤더가 붙는다. 이것을 **캡슐화(Encapsulation)** 라 한다. ``` Application Data ↓ +TCP Header TCP Segment ↓ +IP Header IP Packet ↓ +Ethernet Header + FCS Ethernet Frame ↓ Physical Bits (전선 위) ``` 반대로 수신 시에는 하위 계층부터 헤더를 벗기며 올라간다(역캡슐화). --- ## 구체적인 크기 각 헤더의 크기를 알면 전체 프레임 크기를 계산할 수 있다. | 계층 | 헤더/트레일러 크기 | |------|----------------| | 이더넷 헤더 | 14 bytes (Dst MAC 6 + Src MAC 6 + EtherType 2) | | IP 헤더 | 20 bytes (기본, 옵션 없음) | | TCP 헤더 | 20 bytes (기본, 옵션 없음) | | FCS (이더넷 트레일러) | 4 bytes | | **총 오버헤드** | **58 bytes** | 1500 bytes MTU(Maximum Transmission Unit) 기준: ``` 실제 전송 가능한 TCP payload = 1500 - 20(IP) - 20(TCP) = 1460 bytes ``` 임베디드에서 큰 데이터를 전송할 때 MTU를 초과하면 IP 단편화(Fragmentation)가 발생한다. 가능하면 단편화를 피하는 것이 좋다. --- ## Wireshark에서 보이는 PDU Wireshark는 기본적으로 L2 이더넷 프레임 단위로 캡처한다. 계층별로 펼쳐보면 헤더가 구분되어 나타난다. ``` Frame 1: 74 bytes Ethernet II Destination: 00:0c:29:...(VMware) Source: aa:bb:cc:... Type: IPv4 (0x0800) Internet Protocol Version 4 Source: 192.168.0.10 Destination: 192.168.0.1 Protocol: TCP (6) Transmission Control Protocol Source Port: 52341 Destination Port: 80 ... ``` 임베디드 개발에서 "패킷이 제대로 왔는지" 디버깅할 때, Wireshark에서 각 계층을 순서대로 확인하는 습관이 중요하다. --- ## 정리 "프레임", "패킷", "세그먼트"는 같은 데이터의 다른 이름이 아니라, 각 계층이 처리하는 **서로 다른 조각**이다. Wireshark 분석, 소켓 API 설계, lwIP 디버깅 모두 이 계층 개념을 기반으로 동작한다. 계층을 헷갈리면 디버깅 방향이 틀린다.
// COMMENTS
Newest First
ON THIS PAGE