대표적인 2계층 통신 프로토콜인 이더넷의 패킷 구조는 다음과 같다.
Preamble (7byte) |
SFD (1byte) |
목적 MAC (6byte) |
송신 MAC (6byte) |
Type (2byte) |
Data | FCS (4byte) |
- Preamble: 56bit의 0과 1이다. 수신 측 하드웨어에 프레임 받을 준비를 시키려는 목적으로 붙어 있다.
- SFD: Start Frame Delimeter의 약자로, 이더넷 프레임이 시작됨을 나타낸다. 이 부분의 값은 항상 10101011이다. Preamble과 SFD는 1계층과 관련된 내용으로, 2계층 헤더에는 포함되지 않는 것으로 본다.
- 목적 MAC: 프레임을 받을 노드의 MAC 주소다. MAC 주소는 16진수로 표현되는 2계층 주소인데, 이에 대한 내용은 이곳에 정리해 두었다.
- 송신 MAC: 프레임을 보내는 노드의 MAC 주소다.
- Type: Type은 두 가지 의미를 가질 수 있다. 값이 1500(dec)이하면 data의 길이로 해석되고, 1536(dec)이상이면 data의 프로토콜 유형으로 해석된다. 대표적인 type으로는 0800(hex) - IP, 86DD(hex) - IPv6, 0806(hex) - ARP가 있다.
- Data: 프레임이 담고 있는 데이터로, IP 패킷으로 생각할 수 있다.
- FCS: Frame Check Sequence의 약자로, 이것을 통해 간단한 오류 검출을 한다. 먼저 송신 노드에서 이더넷 헤더의 값들을 정해진 다항식에 대입하여 FCS를 구한다. 수신 노드는 같은 다항식에 헤더 값들을 대입하여 송신측에서 보낸 FCS와 일치하는지 확인한다. 불일치하는 경우 해당 프레임은 무시된다.
더 자세한 내용은 802.3-1028 - IEEEE Standard for Ethernet (doi: 10.1109/IEEESTD.2018.8457469) 118-123쪽에서 확인할 수 있다. DOI를 Sci-hub에 입력하면 무료 조회가 가능하다.
예시로 다음과 같은 이더넷 패킷을 분석해 보자. Preamble과 SFD는 생략되었다.
88 36 6c 91 25 2a 2c fd a1 72 a8 d4 08 00 45 00
00 28 6a 3a 40 00 80 06 14 ba c0 a8 0a 03 34 6d
7c 13 08 e9 01 bb 41 d0 49 f0 91 69 99 e3 50 10
01 00 71 f7 00 00
일단 16진수 한 자리가 4bit이므로 두 자리는 8bit, 즉 1byte다. 그러면 위 프레임을 다음과 같이 나누어 분석할 수 있다.
88 36 6c 91 25 2a 2c fd a1 72 a8 d4 08 00 45 00
00 28 6a 3a 40 00 80 06 14 ba c0 a8 0a 03 34 6d
7c 13 08 e9 01 bb 41 d0 49 f0 91 69 99 e3 50 10
01 00 71 f7 00 00
항목 | 길이 | 내용 | 해석 |
목적 MAC | 6byte | 88 36 6c 91 25 2a | 88:36:6c:91:25:2a |
송신 MAC | 6byte | 2c fd a1 72 a8 d4 | 2c:fd:a1:72:a8:d4 |
Type | 2byte | 08 00 | IPv4 |
FCS | 4byte | 71 f7 00 00 | 1912012800 (dec) |
2c:fd:a1:72:a8:d4 MAC을 가진 노드가 88:36:6c:91:25:2a MAC을 가진 노드로 보내는 IPv4 패킷이라는 것을 알 수 있다.
'네트워크' 카테고리의 다른 글
ARP 패킷의 구조 (0) | 2025.04.17 |
---|---|
IP 패킷의 구조 (1) | 2025.04.09 |
스패닝 트리 프로토콜 STP (0) | 2025.03.28 |
DNS 계층 구조 (0) | 2025.02.20 |
두 스위치에 나눠져 있는 VLAN을 trunk로 연결하기 (1) | 2025.01.31 |