Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

为什么还需要 IP

复习

  • 交换机:通过转发表把帧定向送到目的端口
  • 无线网络:无线接入点协调设备发送,应对隐藏节点
  • 协议分层与封装:协议分层把通信问题拆成互相协作的职责

TL;DR

  • MAC 地址只适合本地链路,无法体现网络位置
  • IP 地址让彼此独立的网络可以互相连接
  • “网络部分 + 主机部分”的层次结构,让路由器可以按范围转发

正文

  我们已经用 MAC 地址和交换机把局域网玩得很顺了。那为什么还要再发明一套地址?直接用 MAC 地址走遍天下,不行吗?

  不行,而且原因很实际。

平铺的地址,撑不起全世界

  交换机只认识本地端口,它不知道世界上每张网卡的位置。设想一下:如果全球所有的设备都只靠 MAC 地址通信,那么每一台路由器都得保存“全世界所有网卡的去向”这样一张表。

  这张表会有多大?几乎是全世界设备的总数。而且任何一台设备换个位置,这张表就得更新。平铺的地址没有层次,也就无法汇总,规模一大就彻底崩了。

  这就像一个国家的邮政系统,如果每个地址都必须精确到“某个人现在站在哪里”,而没有“省—市—街道”的层次,分拣和投递根本无法进行。

给地址加上层次

  IP 的做法,是给地址引入层次:把地址分成网络部分和主机部分。

  • 网络部分说明“你在哪个网络”
  • 主机部分说明“你是这个网络里的哪一台”

  这样一来,路由器就不必记住每一台主机,它只需知道“发往某个网络,该走哪条路”。同一网络里的大量设备,被聚合成一条路由记录。用层次换来了可扩展性,这正是上一章那道“平铺地址撑不住”的题的解。

  所以,IP 地址和 MAC 地址并不冲突,它们分工不同:一个负责端到端地指明“去哪个网络的哪台机器”,一个负责在每一跳的本地链路上“交给哪张网卡”。两者配合,才把本地网络接成了互联网。

  接下来,我们看看这个 IP 数据包长什么样。

思考题 1

为什么路由器不直接靠 MAC 地址把帧送往全世界?

思考题 2

IP 用“网络部分 + 主机部分”的层次来解决扩展问题。这和现实中哪些寻址方式很像?

小结

知识点

  • MAC 地址没有网络位置信息,不适合全球路由
  • IP 为跨网络交付提供可聚合的层次地址
  • 路由器按网络范围转发,而非记住每台主机

参考资料

  1. Wikipedia(zh):IP地址:为网络接口分配的可路由地址
  2. Wikipedia(zh):路由器:在不同网络之间转发数据包的设备

思考题答案(仅供参考)

思考题 1

  MAC 地址没有体现网络位置,全球转发表会难以扩展:路由器不得不记住每一台设备的去向,且任何变动都要更新。缺少层次,就无法把大量地址聚合成少量路由记录,规模一大就难以维护。

思考题 2

  和电话区号、邮政地址都很像。电话号码用区号先定位到一片区域,再定位到具体号码;信件先用“省—市—街道”定位到范围,再落到具体门牌。它们都先缩小范围、再精确到个体,从而让整个系统可扩展。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

![](https://raw.githubusercontent.com/TinySnow/computer-science-guide-resources/master/computer-science-guide/cover/计算机网络/为什么还需要 IP.png)

设计师 | 南国微雪