数据包从源到目的地的传输过程
步骤1:PC1 需要向PC2 发送一个数据包
PC1 将IP 数据包封装成以太网帧,并将其目的MAC 地址设为R1 FastEthernet 0/0 接口的MAC 地址。
PC1 是如何确定应该将数据包转发至R1 而不是直接发往PC2?这是因为PC1 发
现源IP 地址和目的IP 地址位于不同的网络上。
PC1 通过对自己的IP 地址和子网掩码执行AND 运算,从而了解自身所在的网络。
同样,PC1 也对数据包的目的IP 地址和自己的子网掩码执行AND 运算。
如果两次运算结果一致,则PC1 知道目的IP 地址处于本地网络中,无需将数据包转发到默认网关(路由器)。
如果AND 运算的结果是不同的网络地址,则PC1 知道目的IP 地址不在本地网络中,因而需要将数据包转发到默认网关(路由器)。
注:如果数据包目的IP 地址与PC1 子网掩码进行AND 运算后,所得到的结果并非PC1 计算得出的自己所在的网络地址,该结果也未必就是实际的远程网络地址。
在PC1 看来,只有当掩码和网络地址相同时,目的IP 地址才属于本地网络。
远程网络可能使用不同的掩码。
如果目的IP 地址经过运算后得到的网络地址不同于本地网络地址,则PC1 无法知道实际的远程网络地址,它只知道该地址不在本地网络上。
PC1 如何确定默认网关(路由器R1)的MAC 地址?PC1 会在其ARP 表中查找默认网关的IP 地址及其关联的MAC 地址。
如果该条目不存在于ARP 表中会发生什么情况?PC1 会发出一个ARP 请求,然后路由器R1 作出ARP 回复。
步骤2:路由器R1 收到以太网帧
1. 路由器R1 检查目的MAC 地址,在本例中它是接收接口FastEthernet 0/0 的MAC 地址。
因此,R1 将该帧复制到缓冲区中。
2. R1 看到“以太网类型”字段的值为0x800,这表示该以太网帧的数据部分包含IP 数据包。
3. R1 解封以太网帧。
4. 由于数据包的目的IP 地址与路由器R1 的所有直连网络均不匹配,R1 将求助于路由表来确定数据包的路由方式。
R1 搜索路由表中的条目,看看其中是否存在网络地址和子网掩码的组合能否构成目的IP 地址所在的网络。
在本例中,路由表存在192.168.4.0/24 网络的路由条目。
数据包的目的IP 地址为192.168.4.10,这是该网络中的主机IP 地址。
R1 到192.168.4.0/24 网络的路由的下一跳IP 地址为192.168.2.2,送出接口为FastEthernet 0/1。
这表示IP 数据包将封装到一个新的以太网帧中,其目的MAC 地址为下一跳路由器的IP 地址对应的MAC 地址。
由于送出接口连接的是以太网,R1 必须将下一跳IP 地址解析为目的MAC 地址。
5. R1 在其FastEthernet 0/1 接口的ARP 缓冲区中查找下一跳IP 地址
192.168.2.2。
如果该条目不在ARP 缓冲区中,R1 会从FastEthernet 0/1 接口发出一个ARP 请求。
R2 以ARP 回复应答。
收到ARP 回复后,R1 便使用192.168.2.2 条目及相关MAC 地址更新其ARP 缓冲区。
6. IP 数据包被封装到新的以太网帧中,并从R1 的FastEthernet 0/1 接口发出。
步骤3:数据包到达路由器R2
1. 路由器R2 检查目的MAC 地址,在本例中它是接收接口FastEthernet 0/0 的MAC 地址。
因此,R1 将该帧复制到缓冲区中。
2. R2 看到“以太网类型”字段的值为0x800,这表示该以太网帧的数据部分包含IP 数据包。
3. R2 解封以太网帧。
4. 由于数据包的目的IP 地址与路由器R2 的所有接口地址均不匹配,R2 将查询其
路由表来确定数据包的路由方式。
R2 使用与R1 相同的过程在路由表中搜索数据包的目
的IP 地址。
R2 的路由表中有到192.168.4.0/24 的路由,下一跳IP 地址为192.168.3.2 且送出接口为Serial 0/0/0。
因为送出接口不是以太网,所以R2 不需要将下一跳的IP 地址解析为目的MAC 地址。
当接口为点对点串行连接时,R2 将IP 数据包封装成适合送出接口(HDLC、PPP 等)使用的数据链路帧格式。
在此情况下,第2 层封装为PPP;因此,数据链路目的地址将设
置为广播地址。
请记住,串行接口没有MAC 地址。
5. IP 数据包封装成新的数据链路帧(PPP),然后通过serial 0/0/0 送出接口发送出去。
步骤4:数据包到达R3
1. R3 接收并将数据链路PPP 帧复制到缓冲区中。
2. R3 解封数据链路PPP 帧。
3. R3 在路由表中搜索数据包的目的IP 地址。
路由表的搜索结果显示,该地址所在的网络为R3 的直连网络。
这表示该数据包可以直接发往目的设备,不需要将其发往另一台路由器。
因为送出接口是直连的以太网,所以R3 需要将数据包的目的IP 地址解析为目的MAC 地址。
4. R3 在其ARP 缓存中搜索数据包的目的IP 地址192.168.4.10。
如果该条目不在ARP 缓冲区中,R3 会从FastEthernet 0/0 接口发出一个ARP 请求。
PC2 用其自身的MAC 地址回复ARP 应答。
R3 用条目192.168.4.10 及ARP 应答中返回的MAC 更新其ARP 缓存。
5. IP 数据包被封装到新的数据链路(以太网)帧中,并从R3 的FastEthernet 0/0 接口发出。
步骤5:封装有IP 数据包的以太网帧到达PC2
1. PC2 检查目的MAC 地址,发现该地址与接收接口的MAC 地址(PC2 的以太网网卡)匹配。
因此PC2 将数据帧的剩余部分复制到缓冲区中。
2. PC2 看到“以太网类型”字段的值为0x800,这表示该以太网帧的数据部分包含IP 数据包。
3. PC2 解封以太网帧并将IP 数据包传递至操作系统的IP 进程。