理解数据如何在网络上传输是网络技术的基础。这个旅程,通常被称为数据包路径(packet path),涉及不同协议和硬件之间的协同工作。让我们在两种常见场景中追踪数据包路径:在本地网络内通信和与外部网络通信。
本地网络内的数据包路径
当设备向同一本地网络上的另一个设备发送数据包时,过程相对直接。
- 首先,发送主机通过将其与自身的 IP 地址和子网掩码进行比较,检查目标 IP 地址是否在同一子网内。
- 要发送数据包,主机需要四个关键信息:源 IP、目标 IP、源 MAC 地址和目标 MAC 地址。最初,主机不知道目标主机的 MAC 地址。
- 主机使用地址解析协议(ARP)来查找缺失的信息。它在本地网络上广播一个 ARP 请求,询问哪个设备拥有目标 IP 地址。相应的设备会回复其 MAC 地址。
- 知道了目标 MAC 地址后,数据包就完全寻址完毕,可以直接发送到本地网络上的目标主机。
外部网络的数据包路径
当数据包的目标是本地网络外的设备时,该过程涉及路由器来转发数据包。
- 发送主机确定目标 IP 地址不在其本地网络上。由于 ARP 广播仅限于本地网络,主机无法直接发现最终目标的 MAC 地址。
- 主机查阅其路由表。由于没有针对外部 IP 的特定路由,它使用默认路由,该路由指向默认网关(路由器)。数据包使用原始的源 IP 和目标 IP 地址准备就绪。但是,目标 MAC 地址设置为默认网关的 MAC 地址。如果不知道网关的 MAC 地址,主机使用 ARP 来查找它。
- 一旦数据包到达路由器,路由器会检查目标 IP 地址并查阅其自身的路由表,以确定数据包路径上的下一跳。然后,路由器会重写数据包的 MAC 地址:源 MAC 变为路由器的 MAC,目标 MAC 变为下一跳的 MAC。这个过程在路径上的每台路由器上重复。
- 当数据包最终到达连接到目标本地网络的路由器时,该路由器使用 ARP 查找最终主机的 MAC 地址并交付数据包。
- 在整个旅程中,数据包头中的源和目标 IP 地址保持不变。只有 MAC 地址在每跳时都会更新。