📚 네트워크 · 패킷 분석 › 01. TCP/IP 구조 이해 — 27편
이전 글: 26. PDU란 무엇인가 · 다음 글: 28. MTU와 IP 단편화 — 큰 패킷이 쪼개질 때
Ethernet Frame(이더넷 프레임) 은 유선 LAN에서 사용하는 네트워크 접근 계층의 PDU입니다. IP 패킷(또는 ARP 메시지)을 담아 같은 링크 안에서 한 NIC에서 다른 NIC로 전달하는 단위이며, 라우터를 지날 때마다 새로 만들어집니다.
MAC 주소 자체와 ARP는 06. MAC Address란 무엇인가와 31. Ethernet 프레임과 MAC 주소 · ARP 동작 원리에서, Wireshark의 eth.* 필드 해석과 VLAN 태그 분석은 112. Ethernet 프레임 필드 분석 — eth.src·eth.dst·eth.type로 읽는 2계층 증거에서 다룹니다. 이 글은 프레임의 전체 구조와 크기 규칙에 집중합니다.
회선 위를 지나가는 프레임은 다음 순서로 구성됩니다(Ethernet II 기준).
|← 캡처에 보이지 않음 →|←──────────── 캡처에 보이는 부분 ────────────→|← 보통 보이지 않음 →|
+----------+-----+--------+--------+------+------------------------+-----+ +-----+
| Preamble | SFD | 목적지 | 출발지 | Type | Payload | FCS | | IFG |
| 7바이트 | 1 | MAC 6 | MAC 6 | 2 | 46 ~ 1500바이트 | 4 | | 12 |
+----------+-----+--------+--------+------+------------------------+-----+ +-----+
|←──── 헤더 14바이트 ────→|
| 구성 요소 | 크기 | 역할 |
|---|---|---|
| Preamble | 7바이트 | 수신 측이 신호 타이밍을 맞추기 위한 반복 비트 패턴 |
| SFD (Start Frame Delimiter) | 1바이트 | 프레임 시작 표시 |
| 목적지 MAC | 6바이트 | 이 링크에서 받을 NIC (브로드캐스트·멀티캐스트 가능) |
| 출발지 MAC | 6바이트 | 이 링크에서 보낸 NIC |
| Type (EtherType) | 2바이트 | 페이로드의 프로토콜 (IPv4 0x0800, ARP 0x0806, IPv6 0x86DD) |
| Payload | 46~1500바이트 | 위 계층 PDU. 46바이트보다 짧으면 패딩으로 채움 |
| FCS | 4바이트 | CRC-32 오류 검출값 |
| IFG (Inter-Frame Gap) | 12바이트 시간 | 프레임 사이에 두는 최소 간격 (프레임의 일부는 아님) |
목적지 MAC이 출발지 MAC보다 앞에 오는 이유는, 수신 NIC가 첫 6바이트만 보고 "내 프레임인가"를 빨리 판단할 수 있게 하기 위해서입니다.
최소·최대 크기: 목적지 MAC부터 FCS까지를 프레임 크기로 볼 때 다음 규칙이 있습니다.
| 구분 | 크기 | 비고 |
|---|---|---|
| 최소 프레임 | 64바이트 | 헤더 14 + 페이로드 46 + FCS 4. 모자라면 패딩 추가 |
| 최대 프레임 (일반) | 1518바이트 | 페이로드 1500 = MTU |
| 최대 프레임 (802.1Q 태그) | 1522바이트 | VLAN 태그 4바이트 추가 |
| 점보 프레임 | 장비 설정에 따름 (흔히 MTU 9000) | 표준 외 확장. 구간 전체가 지원해야 함 |
예시(값은 환경마다 다름): 크기가 서로 다른 세 프레임의 구성입니다(FCS 제외, 캡처 기준 길이).
| 프레임 | 헤더 | 페이로드 | 패딩 | 캡처 길이 |
|---|---|---|---|---|
| ARP Request (수신 측 캡처) | 14 | ARP 28 | 18 | 60 |
| TCP SYN (옵션 포함) | 14 | IP 60 | 0 | 74 |
| 최대 크기 데이터 | 14 | IP 1500 | 0 | 1514 |
실습 예시: 본인 소유 VM에서 인터페이스의 MTU와 프레임 관련 오류 카운터를 확인합니다. 명령은 Rocky Linux와 Ubuntu가 같습니다.
ip link show ens160 # mtu 1500, link/ether(내 MAC)
ip -s link show ens160 # RX/TX packets, errors, dropped
sudo ethtool -S ens160 | head -30 # 드라이버가 제공하는 상세 통계 (항목 이름은 드라이버마다 다름)
ethtool이 없으면 Rocky는 sudo dnf install -y ethtool, Ubuntu는 sudo apt install -y ethtool로 설치합니다.
출력 예시(값은 환경마다 다름):
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP ...
link/ether 00:0c:29:11:22:33 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
8812345 61234 0 0 0 120
brd ff:ff:ff:ff:ff:ff는 이 링크의 브로드캐스트 MAC이고, errors가 계속 증가한다면 케이블·NIC·듀플렉스 설정 같은 물리·링크 문제를 먼저 의심합니다.
흔적이 남는 곳
ip -s link, ethtool -S 통계관제자가 확인할 질문
오탐 주의