【TCP/IP 神奇之旅】——在不同以太网下的通信:IP 包闯荡天涯的故事

数据包在路由器中的通信过程


我们通过观察 P C 1 PC1 P C 2 PC2 的 IP 地址可以发现,这两台主机处于不同的以太网下。那么,它们之间是如何通信的呢?我们下面用图解的方式展示一下。
在这里插入图片描述
首先,在 PC1 所在的以太网内,连接可以大概表示成这样:
在这里插入图片描述
其中,R1 是这个以太网的出口路由器。其他的表示同样处于这个以太网下的其他设备。那么首先,我们需要找到这个出口路由器。这就属于上一篇 B l o g Blog 所讨论的内容了。也就是 PC1 首先发送一种类型为 ARP 的以太网帧。(或者说一个广播),发送给以太网中的所有主机,用于获取 R1 的 Mac 地址。

OK !R1 (出口路由器)的 Mac 地址获得了,接下来就真正开启了数据包出远门儿的历险了!


【Step1】首先,PC1 将IP 数据包封装成以太网帧,其源 IP 地址就是 PC1 的 IP:192.168.1.10、目标 IP 地址是主机 PC2 的IP 地址:192.168.4.10、源Mac 地址是主机 PC1 的 Mac地址:0A-10、目标 Mac 地址是 R1 的 Mac 地址00-10这里需要留意


【Step2】:R1 收到了帧,如下图所示:
在这里插入图片描述


【Step 3】R1剥离以太网帧的帧头,查看目的 IP 地址


【Step 4】既然需要路由器决定把这个数据包发送到哪里,先不说具体的目的地的门牌号,你起码也得发送到正确的省吧。就像一个发往广州的包裹,被物流公司活生生发往了山东,即使恰好山东也有门牌号是1001的住户,那不也是白忙活嘛!在 TCP/IP 的世界里面,网络号就相当于我们所属的地区。

这里,路由器里就像一个十字路口,有的路口通往广东省,有的路口通往山东省,有的路口通往云南省、、、因此,此时路由器 R1 需要通过目的 IP 地址和路由表表项里面子网掩码求出网络号

插曲:如何通过 IP 地址和子网掩码求出网络号?

  1. 将 IP 地址和子网掩码都转换为二进制表示
  2. 将二进制形式的 IP 地址和子网掩码做 “ 与 & ” 运算,将结果转回十进制就得到了网络号。

我们计算得到网络号是 192.168.4.0,刚好是R1路由表的第四项

在这里插入图片描述


【Step 5】查询下一条的 IP,并用 R2 的 Mac 地址封装成帧。(通过我们上文说过的 ARP 表,R1 就可以查询到 R2 的 Mac 地址)


【Step 6】R1 将以太网数据包从送出接口 “ Fa0/1" 转发出去。如下图所示:
在这里插入图片描述

扫描二维码关注公众号,回复: 11382464 查看本文章

【Step 7】还是类似的步骤,R2 接收到数据包,然后剥离以太网帧的头部,检查目标 IP 地址,和自己路由表的子网掩码做与运算得到网络号,查看对应的路径。
在这里插入图片描述


【Step 8】更新目标 Mac 地址(这里由于数据包将会通过串行连接发送,所以回使用广播目的地址 0x8F 作为目的 Mac 地址)。并且将重新封装成帧 (值得注意的是:由于这个地方是PPP连接,所以不需要在帧中加入源 Mac 地址)


【Step 9】将数据包从送出接口 S0/0/0 转发到 R3
在这里插入图片描述


【Step 10】R3 接收到 PPP 帧,剥离以 PPP 帧,查看目标 IP 地址


【Step 11】同样地,R3 也将会在自己的路由表下检测 目标 IP 地址。
在这里插入图片描述
我们发现 ,R3 的送出接口是直连送到目的 IP 的,那么更新成目的 Mac 地址,并重新封装成帧。(通过 R3的 ARP 表得知 PC2 的Mac 地址)


【Step 12】PC2 接收到数据帧,剥离帧之后检测一些上层的协议。


值得注意的是:在数据包的传输过程中,帧的源 Mac 地址和目标 Mac 地址是会改变的,但是始终不变的是 源 IP 地址和 目标 IP 地址。

另外,在本次的博客里面,我们只是了解了在两个以太网下的主机之间如何通信,其中涉及到了路由表,这是比较复杂的东西,它的构成方式也有几种,也涉及到了不少的协议。这将在后续给出讨论。


如果有表述不当的地方欢迎大家在评论区不吝指正!!

猜你喜欢

转载自blog.csdn.net/weixin_44586473/article/details/106268479