目录
[1、为什么不能太短?------最小帧长限制(64 字节)](#1、为什么不能太短?——最小帧长限制(64 字节))
[2、为什么不能太长?------最大帧长限制(通常 1518 字节)](#2、为什么不能太长?——最大帧长限制(通常 1518 字节))
[二、为什么知道 IP 还不够?必须知道 MAC 才能发帧?](#二、为什么知道 IP 还不够?必须知道 MAC 才能发帧?)
[三、ARP 协议:IP ↔ MAC 的桥梁](#三、ARP 协议:IP ↔ MAC 的桥梁)
[ARP 报文关键字段:](#ARP 报文关键字段:)
[四、为什么 ARP 缓存表项不能永久有效?](#四、为什么 ARP 缓存表项不能永久有效?)
[解决方案:设置 TTL(Time To Live)](#解决方案:设置 TTL(Time To Live))
[五、关于私有 IP、NAT 与端口唯一性](#五、关于私有 IP、NAT 与端口唯一性)
[私有 IP 特点:](#私有 IP 特点:)
[正向代理 vs 反向代理:](#正向代理 vs 反向代理:)
一、以太网数据帧的长度:越长越好?还是越短越好?
核心结论:单个以太网数据帧既不能太长,也不能太短!必须有上限和下限。
这是因为在以太网的设计中,需要在传输效率、可靠性、公平性 以及冲突控制之间取得平衡。
1、为什么不能太短?------最小帧长限制(64 字节)
-
目的:确保冲突检测机制(CSMA/CD,用于传统共享式以太网)有效。
-
在早期的半双工以太网(如同轴电缆或集线器 HUB 环境)中,发送方需在发送完整个帧之前能检测到是否发生冲突。
-
如果帧太短,发送完成时可能已离开冲突窗口,无法感知碰撞 → 导致错误数据被接收。
-
IEEE 802.3 规定 :以太网帧(含帧头和 FCS)最小为 64 字节(其中数据部分至少 46 字节,不足则填充 PAD)。
-
即使在现代全双工交换式以太网中(无冲突),该限制仍保留以保持向后兼容性。
2、为什么不能太长?------最大帧长限制(通常 1518 字节)
-
标准以太网 MTU (Maximum Transmission Unit):1500 字节 IP 数据包,加上 14 字节以太网头 + 4 字节 FCS = 1518 字节。
-
原因包括:
-
公平性:若某主机发送超长帧,会长时间占用信道,导致其他主机无法及时发送数据。
-
错误代价高:帧越长,一旦出错(如 CRC 校验失败),重传的数据量越大,效率越低。
-
缓冲区限制:早期网卡和交换机内存有限,难以处理任意长度的帧。
-
延迟敏感应用需求:语音、视频等实时业务要求低延迟,大帧会增加排队和传输延迟。
-
-
补充说明 :存在 Jumbo Frame(巨帧,可达 9000+ 字节),但需全链路设备支持,主要用于高性能数据中心内部,不适用于普通局域网或互联网。
3、帧数量:越多越好?还是越少越好?
-
在总数据量固定的前提下,帧数量越少越好。
-
每个帧都有固定开销(帧头 14B + FCS 4B + 帧间隙 12B ≈ 30B)。
-
若使用大量小帧传输大数据,有效载荷占比显著降低 → 带宽利用率下降 。示例:传输 1500B 数据
-
使用 1 个标准帧:开销约 30B,效率 ≈ 98%
-
使用 150 个 10B 小帧:开销 ≈ 4500B,效率仅 ≈ 25%
-
-
建议:在不超过 MTU 的前提下,应尽量让帧"满载"(接近 1500B 的 IP payload)。
二、为什么知道 IP 还不够?必须知道 MAC 才能发帧?
关键点:网络分层模型决定了通信方式。
-
IP 地址 :用于跨网络(端到端)寻址,由网络层(Layer 3)处理。
-
MAC 地址 :用于同一局域网内(逐跳)的物理寻址,由数据链路层(Layer 2)处理。
真正在物理线缆上传输的是"以太网帧",而帧头必须包含目标 MAC 地址!
因此:
-
即使你知道目标 IP 是
192.168.1.100, -
但如果你不知道它对应的 MAC 地址,
-
就无法构造出合法的以太网帧 → 数据根本无法发出!
三、ARP 协议:IP ↔ MAC 的桥梁
ARP(Address Resolution Protocol)作用:在同一个局域网(广播域)内,通过目标 IP 地址查询其对应的 MAC 地址。
ARP 报文关键字段:
| 字段 | 长度 | 说明 |
|---|---|---|
| 硬件类型 | 2B | 1 = 以太网 |
| 协议类型 | 2B | 0x0800 = IPv4 |
| HLEN / PLEN | 各1B | 硬件地址长=6,协议地址长=4 |
| 操作码 OP | 2B | 1 = 请求,2 = 应答 ← 判断类型的关键! |
| 发送方 MAC | 6B | 自己的 MAC |
| 发送方 IP | 4B | 自己的 IP |
| 目标 MAC | 6B | 请求时填 00:00:00:00:00:00 |
| 目标 IP | 4B | 要查询的 IP |
工作流程:
-
主机 A 想发数据给
192.168.1.100,查本地 ARP 缓存无记录。 -
A 广播 ARP 请求(以太网目的 MAC =
FF:FF:FF:FF:FF:FF)。 -
局域网所有主机收到,只有 IP=
192.168.1.100的主机会响应。 -
B 回复 ARP 应答(单播,目的 MAC=A 的 MAC)。
-
A 收到后,更新 ARP 缓存,并开始发送数据帧。
任何主机都可能收到 ARP 请求或应答,处理时先看 OP 字段判断类型!
四、为什么 ARP 缓存表项不能永久有效?
永久缓存的问题:
-
设备更换网卡 → MAC 变了,但缓存仍是旧值 → 数据发错。
-
IP 地址重新分配(如 DHCP 租期到期)→ 原 IP 被新设备使用,但缓存指向旧设备。
-
主机离线/关机 → 缓存条目无效,浪费内存。
-
安全风险:恶意节点可注入虚假 ARP 条目,若永不过期,危害持久。
解决方案:设置 TTL(Time To Live)
-
通常:未使用的条目 15~60 秒过期;正在使用的可维持数分钟。
-
过期后自动重新发起 ARP 查询,确保映射关系最新。
动态网络环境要求缓存具有"时效性"!
五、关于私有 IP、NAT 与端口唯一性
私有 IP 特点:
-
范围 :
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 -
可在不同内网重复使用,但在同一内网中必须唯一。
NAT(网络地址转换):
-
不仅替换源 IP(内网 IP → 公网 IP)
-
还常通过 PAT(Port Address Translation)替换源端口,实现多台内网设备共享一个公网 IP。
唯一性保证:
| 场景 | 唯一键 |
|---|---|
| 内网进程标识 | 私有 IP + 端口号 |
| 全球互联网通信 | 公网 IP + 端口号 |
示例 :公司内两台电脑分别用 192.168.1.10:80 和 192.168.1.11:80 访问百度服务器。路由器经 NAT 转换后,对外表现为:
-
WAN_IP:50001 → baidu:80 -
WAN_IP:50002 → baidu:80
→ 通过不同端口区分不同内网连接。
六、代理与内网穿透技术(通用场景)
正向代理 vs 反向代理:
| 类型 | 用户视角 | 典型用途 |
|---|---|---|
| 正向代理 | 客户端配置代理服务器 | 缓存加速、访问控制 |
| 反向代理 | 服务端部署(如 Nginx) | 负载均衡、SSL 终止、隐藏后端结构 |
内网穿透(打洞):
目标:使公网用户能够访问位于私有网络内部的服务(如家庭 NAS、IoT 设备)。
常见方法:
-
中转代理:通过公网服务器转发流量(如 FRP、ngrok)。
-
UPnP / NAT-PMP:自动在路由器上创建端口映射(依赖设备与 ISP 支持)。
-
P2P 打洞:双方通过 STUN/TURN 协议协商建立直连(如 WebRTC)。
**注意:**部分网络环境可能限制入站连接或关闭 UPnP 功能,影响穿透成功率。
七、局域网规模:主机越多越好?还是越少越好?
主机太多的问题:
-
广播风暴:ARP、DHCP 等广播帧泛滥,占用大量带宽。
-
ARP 表膨胀:交换机和主机内存压力增大。
-
安全边界模糊:任意主机可监听广播流量,潜在攻击面扩大。
解决方案:划分广播域
-
使用 VLAN (虚拟局域网)或 三层交换机/路由器 分割网络。
-
每个子网形成独立广播域 → 减少干扰,提升安全与性能。
建议:一个子网(如 /24 网段)主机数 ≤ 254,实际部署中常进一步缩小规模。
八、工作在数据链路层的设备
| 设备 | 工作层级 | 功能 |
|---|---|---|
| 网桥(Bridge) | L2 | 连接两个网段,基于 MAC 地址转发 |
| 交换机(Switch) | L2(多数) | 多端口网桥,学习 MAC 表,隔离冲突域 |
| 无线 AP | L2 | 将无线设备接入有线局域网 |
交换机通过 MAC 地址表 实现帧的智能转发:只将帧发送至目标端口(除非是未知单播或广播帧)。
总结:核心思想提炼
-
以太网帧设计是工程权衡的结果:→ 设有最小/最大长度,兼顾效率、可靠性和公平性。
-
IP 不等于可通信:→ 必须通过 ARP 获取目标 MAC 地址,才能构造有效的数据帧。
-
缓存要有时效:→ 网络是动态变化的,永久映射会失效甚至带来安全风险。
-
唯一性靠"IP+端口"组合:→ 内网靠私有 IP + 端口,公网靠公网 IP + 端口。
-
网络规模需合理控制:→ 通过 VLAN 或路由器划分广播域,避免"大杂烩"式局域网。
-
穿透与代理是应用层解决方案:→ 当底层网络受限时,可通过协议设计或中转机制实现连通性。