核心内容摘要
ex
1 引言互联网的基石互联网之所以能够将全球数十亿台设备连接在一起核心在于网络层Network Layer提供的主机到主机Host-to-Host的通信服务。
而在网络层中网际协议版本4Internet Protocol version 4, IPv4无疑是历史上最成功、应用最广泛的协议。
尽管 IPv6 正在逐步普及但 IPv4 依然构成了当今互联网通信的逻辑基础。
本章将深入剖析 IPv4 的核心机制从数据报的结构到地址管理再到为了延续其寿命而诞生的 NAT 技术以及辅助其工作的配套协议簇。
2 IPv4 数据报分组在网络层传输的数据单元被称为数据报Datagram或分组Packet。
IPv4 是一种无连接的、尽最大努力交付Best Effort的协议。
这意味着网络在传输数据前不需要建立专用通路且不保证数据一定无丢失、有序到达这种设计极大地降低了网络的复杂性。
1 数据报格式IPv4 数据报由**首部Header和数据部分Payload**组成。
首部包含了路由和处理所需的全部控制信息。
2 关键字段解析版本Version占 4 位指明协议版本对于 IPv4 该字段值为 4。
首部长度IHL占 4 位单位为 32 位字4字节。
由于 IPv4 首部可能包含可选字段其长度可变最小值为 5即 20 字节最大值为 15即 60 字节。
生存时间Time To Live, TTL占 8 位。
这是一个防止数据报在网络环路中无限循环的计数器。
每经过一个路由器TTL 值减 1。
当 TTL 减为 0 时路由器丢弃该包并向源主机发送 ICMP 超时消息。
协议Protocol占 8 位。
指明数据部分是何种协议数据单元例如 TCP值为
UDP值为 17或 ICMP值为 1。
它是网络层与传输层解复用的关键。
源地址与目的地址各占 32 位记录通信双方的逻辑地址。
3 IPv4 编址体系IPv4 地址是互联网上主机的唯一标识符。
它由 32 位二进制数构成通常采用**点分十进制Dotted Decimal**表示法例如
192.
168.
1.
1192.
168.
1.
1192.
168.
1。
1 历史演进分类编址Classful Addressing在互联网发展的早期1981年 RFC 791 发布时IP 地址被僵化地分为五类A、B、C、D、E。
这种分类方法基于 IP 地址的前几位比特A 类地址以0开头前 8 位为网络号。
适用于超大型网络每个网络可容纳224−22^{24}-2224−2台主机。
B 类地址以10开头前 16 位为网络号。
适用于中型网络。
C 类地址以110开头前 24 位为网络号。
适用于小型局域网每个网络仅容纳 254 台主机。
局限性分类编址导致了严重的地址浪费。
例如一个需要 500 个 IP 的企业申请 C 类不够仅 254 个申请 B 类又太浪费65534 个这导致 B 类地址迅速耗尽促使了后续子网划分技术的诞生。
2 子网划分Subnetting与子网掩码为了提高 IP 地址利用率网络管理员可以在内部将一个大的网络划分为多个较小的子网Subnet。
其核心原理是借用主机号的一部分作为子网号。
为了让路由器区分哪部分是网络号哪部分是主机号引入了**子网掩码Subnet Mask**的概念。
原理子网掩码也是 32 位由一串连续的1和后续连续的0组成。
运算将 IP 地址与子网掩码进行**按位与AND**运算结果即为该 IP 所属的网络地址。
Network AddressIP Address Subnet Mask \text{Network Address} \text{IP Address} \;\\; \text{Subnet Mask}Network AddressIP AddressSubnet Mask
3 无分类编址 CIDR 与路由聚集随着互联网的爆炸式增长分类编址彻底被废除取而代之的是无分类域间路由Classless Inter-Domain Routing, CIDR。
CIDR 记法不再区分 A/B/C 类而是使用斜线记法/n表示前nnn位是网络前缀。
例如
192.
168.
0/
24192.
168.
0/
24192.
168.
0/24。
路由聚集Route AggregationCIDR 允许将多个连续的前缀较长的路由合并为一个前缀较短的路由这也称为超网 Supernetting。
应用这大大减少了骨干网路由器的路由表项数Table Size减轻了路由器的负担是互联网能够扩展到今天规模的
关键技术之一。
4 地址短缺的救星NAT 协议理论上IPv4 只有约 43 亿个地址早在 2011 年左右 IANA 就已耗尽了所有地址池。
之所以今天我们还能使用 IPv4主要归功于网络地址转换Network Address Translation, NAT。
1 私有地址RFC 1918为了配合 NAT标准定义了三段保留的私有地址这些地址只能在局域网内部使用不能在公网上路由
10.
0.
0.
010.
0.
0.
010.
0.
0~
10.
255.
255.
25510.
255.
255.
25510.
255.
255.
255172.
16.
0.
0172.
16.
0.
0172.
16.
0~
172.
31.
255.
255172.
31.
255.
255172.
31.
255.
255192.
168.
0.
0192.
168.
0.
0192.
168.
0~
192.
168.
255.
255192.
168.
255.
255192.
168.
255.
2
2 NAT 工作原理NAT 通常运行在连接局域网和公网的路由器上。
最常见的形式是网络地址端口转换NAPT。
意义NAT 使得一个机构或家庭只需申请一个公网 IP即可让成百上千台设备同时上网极大地延缓了 IPv4 地址耗尽的速度。
5 IPv4 的配套协议簇IPv4 协议本身只负责数据传输它需要一系列辅助协议来完成地址解析、配置管理和错误报告。
1 地址解析协议ARP在数据链路层如以太网设备通信依赖的是 48 位的 MAC 地址而不是 32 位的 IP 地址。
ARPAddress Resolution Protocol的作用就是解决“已知 IP 地址求 MAC 地址”的问题。
工作机制主机 A 广播 ARP 请求“谁是
192.
168.
1.
1192.
168.
1.
1192.
168.
1请告诉我你的 MAC 地址。
”局域网内所有主机收到请求只有
192.
168.
1.
1192.
168.
1.
1192.
168.
1的持有者单播回复其 MAC 地址。
主机 A 将结果存入ARP 缓存表以便下次直接使用。
2 动态主机配置协议DHCP在大型网络或家庭网络中手动为每台设备配置 IP 是不现实的。
DHCPDynamic Host Configuration Protocol实现了即插即用。
工作流程DORADiscover新加入的设备广播“有没有 DHCP 服务器”OfferDHCP 服务器回复“有我可以给你提供 IP
192.
168.
1.
100192.
168.
1.
100192.
168.
100。
”Request设备确认“好的我想要这个 IP。
”Acknowledge服务器确认并正式分配同时下发子网掩码、网关和 DNS 服务器地址。
3 网际控制报文协议ICMP由于 IP 协议没有差错报告机制ICMPInternet Control Message Protocol充当了“网络诊断员”的角色。
ICMP 报文被封装在 IP 数据报的数据部分中传输。
差错报告当路由器因拥塞丢包、TTL 耗尽或目的不可达时会向源主机发送 ICMP 差错报文。
实际应用Ping利用 ICMP 回送请求Echo Request和回送回答Echo Reply来测试连通性。
Traceroute或 Linux 下的traceroute利用 TTL 逐步增加导致路由器发送“时间超过”报文的原理来探测数据包经过的路径。
6
总结与展望IPv4 协议簇的设计体现了计算机网络分层解耦的智慧。
通过 IP 地址屏蔽底层物理网络的差异通过 ARP 桥接逻辑与物理地址通过 DHCP 实现自动化配置通过 NAT 解决地址短缺问题IPv4 构建了一个健壮的全球互联网络。
然而随着物联网IoT和移动互联网的发展IPv4 地址彻底枯竭的隐患已不可忽视。
虽然 NAT 延长了其寿命但也破坏了端到端通信原则。
未来向拥有海量地址空间21282^{128}2128的IPv6过渡是互联网发展的必然趋势。
但在相当长的一段时间内IPv4 将与 IPv6 共存继续支撑着我们的数字生活。