路由交换中的帧封装
交换功能是指路由器在一个接口接收数据包并将其从另一个接口转发出去的过程。交换功能的重要责任是将数据包封装成适用于传出数据链路的正确数据帧类型。
对于从一个网络传入,以另一个网络为目的地的数据包,路由器会进行哪些处理?路由器主要执行以下三个步骤:
1.
通过删除第
2
层帧头和帧尾来解封第
3
层数据包。
2.
检查
IP
数据包的目的
IP
地址以便从路由表中选择最佳路径。
3.
将第
3
层数据包封装成新的第
2
层帧,并将该帧从送出接口转发出去。
在第
3
层
IP
数据包从一台路由器转发到下一台路由器的过程中,除生存时间
(TTL)
字段发生变化外,该
IP
数据包的其它字段均保持不变。当路由器收到一个
IP
数据包时,它会将该数据包的
TTL
减一。如果减一后得到的
TTL
值为零,则路由器将丢弃该数据包。
TTL
用于防止
IP
数据包由于路由环路或网络中其它异常状况而在网络上永无休止地传输。
由于
IP
数据包是解封自第
2
层帧并再次封装成新的第
2
层帧,所以数据链路目的地址和源地址将随数据包从一台路由器转发到下一台路由器而不断发生变化。第
2
层数据链路源地址代表出站接口的第
2
层地址。第
2
层目的地址代表下一跳路由器的第
2
层地址。如果下一跳是最终目的设备,则第
2
层目的地址将是该设备的第
2
层地址。
数据包很有可能会被封装成与收到时不同的另一种第
2
层帧。例如,路由器从快速以太网接口上收到封装为以太网帧格式的数据包,然后将其封装成
PPP
帧格式通过串行接口转发出去。
请记住,在数据包从源设备到最终目的设备的传输过程中,第
3
层
IP
地址始终不会发生变化。但是,随着每台路由器不断将数据包解封、然后又重新封装成新数据帧,该数据包的第
2
层数据链路地址在每一跳都会发生变化。
数据包从源到目的地的传输过程
步骤 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
进程。