Ethernet 的学习笔记

本文在涉及到 AI 生成内容的时候,会使用 [AIGC] 标签。

以太网帧

我在研究以太网帧过后发现,每个标准的以太网帧都包含一个 Header 以及一个长度可以为 0 的 Payload

Header 中又包含:

  • 源 Mac 地址、目标 Mac 地址(也是判断是否为广播的依据)以及帧的类型(IPV4、IPV6、ARP 等)

Payload 中包含:

  • 各个协议(IPV4、IPV6 等)的包

以下为图解

1
2
3
4
5
6
7
8
9
10
[ Ethernet Frame ]
├── Ethernet Header
└── Payload
├── IPv4 Packet
| ├── IPv4 Header
| └── Payload
├── IPv6 Packet
| ├── IPv6 Header
| └── Payload
└── ARP Packet

IPv4 包

IPv4 包中含一个 Header 和一个 Payload
Header 是整个包的前 20 个字节,其中包含了:

  • Version(版本)、Type of Service(服务类型)、IHL(头长度)、Total Length(总长度)、
  • Identification(分片 ID)、Flags(分片控制位)、Fragment Offset(当前分片在原始数据中的位置)、
  • TTL(存活时间)、Protocol(协议类型)、Header Checksum(校验和)、
  • Source IP Address(源 IP 地址)、
  • Destination IP Address(目标 IP 地址)、
  • Options(选项,此为可选)、
  • Payload(载荷)

以下为图解 [AIGC]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TTL | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在本项目里,我们只关注 Version、IHL、Total Length、TTL、Protocol、Source IP、Destination IP、Payload 这几个字段

IPv6 包

IPv6 包中同样包含一个 Header 和一个 Payload
Header 固定为 40 字节,常见字段包含:

  • Version(版本)、Traffic Class(流量类别)、Flow Label(流标签)、Payload Length(载荷长度)、
  • Next Header(下一头部/上层协议类型)、Hop Limit(跳数限制)、
  • Source Address(源 IPv6 地址)、
  • Destination Address(目标 IPv6 地址)、
  • Payload(载荷)

以下为图解 [AIGC]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class | Flow Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Length | Next Header | Hop Limit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Source Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Destination Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

在本项目里,我们只关注 Version、Payload Length、Next Header、Hop Limit、Source Address、Destination Address、Payload 这几个字段

Arp 包

ARP 包用于在局域网中根据 IP 地址查询对应的 MAC 地址。
ARP 报文由固定格式字段组成(无复杂可变头部),常见字段包含:

  • Hardware Type(硬件类型)、Protocol Type(协议类型)、
  • HLen(硬件地址长度)、PLen(协议地址长度)、Operation(操作码:请求/响应)、
  • Sender Hardware Address(发送方 MAC)、Sender Protocol Address(发送方 IP)、
  • Target Hardware Address(目标 MAC)、Target Protocol Address(目标 IP)

其中:

  • ARP Request:通常已知目标 IP,不知道目标 MAC(THA 常为全 0)
  • ARP Reply:返回目标 IP 对应的目标 MAC

以下为图解 [AIGC]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
0                   15 16                  31
+---------------------+---------------------+
| Hardware Type | Protocol Type |
+---------------------+---------------------+
| HLen | PLen | Operation |
+---------------------+---------------------+
| Sender Hardware Address (SHA) |
+-------------------------------------------+
| Sender Protocol Address (SPA) |
+-------------------------------------------+
| Target Hardware Address (THA) |
+-------------------------------------------+
| Target Protocol Address (TPA) |
+-------------------------------------------+

在本项目里,我们只关注 Hardware Type、Protocol Type、Operation、Sender Hardware Address、Sender Protocol Address、Target Hardware Address、Target Protocol Address 这几个字段


未完待续…