Network系列:数据通信原理实验(四)
数据通信原理实验
1. 拓扑图
2. 二层交换原理
2.1 广播帧
广播帧处理行为:交换机不会去查MAC地址表,直接对该广播帧执行泛洪操作。
实验开始
初始状态下,交换机并不知道所连接主机的MAC地址,所以MAC地址表为空。查看PC3的ARP表,也是空的。
此时PC3 ping PC4,看模拟器抓包。
PC3:172.16.3.3
PC4:172.16.3.4
PC3构造ICMP请求数据包
Ping进程启动下一个Ping请求,Ping进程创建ICMP Echo Request消息,并将其发送到较低的进程。未指定源IP地址。设备将其设置为端口的IP地址。
此时本地ARP表发现没有IP和MAC的对应信息,所以进行构造ARP包来请求对端IP的MAC地址。
PC3构造ARP包
ARP进程构造对目标IP地址的请求,设备将PDU封装到以太网帧中。由于PC3本地ARP表没有对应表项,所以此时的目的MAC是广播地址(FF:FF:FF:FF:FF:FF)
PC3发送ARP请求
此时交换机的MAC表中不存在这个帧源MAC地址。交换机将此帧的源MAC作为新的MAC条目添加到其表中。交换机处理帧,广播帧为目标MAC地址。交换设备从以太网帧中解封装PDU,发现该帧为ARP帧。交由ARP进程处理它。
交换机查看MAC地址表
已成功学习PC3发送的ARP包中的以太网帧的源MAC(也就是PC3的MAC),这时再看看交换机如何处理。
交换机对广播帧的处理
这是一个广播帧,交换机不会去查MAC地址表,直接对该广播帧执行泛洪操作,交换机将该帧发送到同一VLAN中除接收端口外的所有端口。(发送到f0/2、f0/24)
R3、PC4接受到帧后的处理
R3接收到一个广播帧,设备从以太网帧中解封装PDU。该帧为ARP帧。ARP进程处理它,但ARP请求的目标IP地址与接收端口的IP地址不匹配,ARP进程丢弃帧。
PC4接收到一个广播帧,帧的目标MAC地址与接收端口的MAC地址匹配,设备从以太网帧中解封装PDU。该帧为ARP帧,ARP进程处理它。ARP请求的目标IP地址与接收端口的IP地址匹配,ARP进程用接收到的信息更新ARP表。
查看PC4的ARP表
已成功学习到PC3的MAC
PC4进行ARP回复
此时ARP进程用接收端口的MAC地址回复请求,设备将PDU封装到以太网帧中。
交换机处理PC4的ARP回复
交换机的MAC表中不存在帧源MAC地址,交换机将此帧的源MAC作为新的MAC条目添加到其表中。同时这是一个单播帧,交换机在其MAC表中查找目标MAC地址。
交换机查看MAC地址表
已成功学习到PC4的MAC地址,同时也拥有PC3的MAC地址,可以直接进行转发。
交换机对PC4发来的帧进行处理
交换机查询MAC地址表得知目的MAC是与f0/1口绑定,所以将帧从该端口发送出去。
PC3接收交换机转发PC4的应答ARP帧
帧的目标MAC地址与接收端口的MAC地址匹配,设备从以太网帧中解封装PDU。该帧为ARP应答帧,ARP进程处理它。ARP进程用收到的信息更新ARP表,ARP进程取出并发送等待此ARP回复的缓冲包。
ARP进程从缓冲区中取出此数据包并重新发送,设备将PDU封装到以太网帧中。
PC3发送ICMP请求数据包
交换机接收到PC3发送的数据包,在交换机的MAC表中找到该帧的源MAC地址,与MAC表中相同所以不需要重新学习。然后这是一个单播帧,交换机在其MAC表中查找目标MAC地址(当然此时MAC表也有PC4的MAC)。
再看看交换机出站PDU详细信息
PC4接收交换机转发的ICMP请求数据包
数据包的目标IP地址与设备的IP地址匹配,设备对数据包进行反封装。数据包是ICMP数据包,ICMP进程处理它,
ICMP进程接收到回显请求消息。
再看看PC4出站PDU详细信息,已成功反封装IP数据包以及以太网帧。ICMP进程通过将ICMP类型设置为Echo Reply来回复Echo Request,ICMP进程发送回显回复。
交换机对PC4发来的ICMP回复数据包进行处理
当然,MAC地址表中有PC3的MAC地址,所以直接执行转发!
但此时交换机MAC地址表会有哪些表项呢?有没有什么变化?下面查看一下,多了R3的g0/1接口的MAC地址,从交换机f0/24接口接收到的!那是为什么?
因为期间R3向交换机发送ospf数据包,当交换机第一次从f0/24接口接收到来自R3的数据包,拆开以太网帧发现MAC地址表没有该帧的源MAC地址和接口的对应表项,此时进行添加该帧里的源MAC地址和接收接口绑定条目。
PC3接收交换机转发PC4的ICMP回复数据包
数据包的目标IP地址与设备的IP地址匹配,设备对数据包进行反封装。数据包是ICMP数据包,ICMP进程处理它。
ICMP进程接收到回显回复消息,Ping进程收到Echo Reply消息。
查看PC3的ping程序,成功ping通!
2.2 未知单播帧
交换机在MAC地址表中查不到这个帧的目的MAC地址,则交换机对该单播帧执行泛洪操作。
实验开始
在刚从上面的基础上,先清空S1交换机的MAC地址表,切换至模拟模式。
此时PC3 ping PC4,看模拟器抓包,直接构造ICMP请求数据包,因为PC3本地MAC表有PC4的IP和MAC地址对应条目,所以不需要进行ARP请求。
PC3:172.16.3.3
PC4:172.16.3.4
PC3构造ICMP请求数据包
Ping进程启动下一个Ping请求,Ping进程创建ICMP Echo Request消息,并将其发送到较低的进程。未指定源IP地址,设备将其设置为端口的IP地址。下一跳IP地址是单播,ARP进程在ARP表中查找它,下一跳IP地址在ARP表中。ARP进程将该帧的目标MAC地址设置为表中的地址,设备将PDU封装到以太网帧中。
交换机对未知单播帧的处理
交换机拆到二层,发现帧源MAC地址不在MAC地址表上,交换机将该帧的源MAC作为新的MAC条目添加到其表中。同时这是一个单播帧,交换机在其MAC表中查找目标MAC地址,此时肯定是PC4的MAC地址的(目标MAC地址)。
所以接下来看看交换机要出站的信息,帧的目标MAC地址不在MAC表中。交换机将帧泛洪发送到同一VLAN中的所有端口,接收端口除外(也就是泛洪给f0/2、f0/24)。
R3接收交换机的泛洪单播帧
帧的目标MAC地址与接收端口的MAC地址不匹配,设备将丢弃帧。
PC4接收交换机的泛洪单播帧
有没有发现这和前面的广播帧有小许不同,交换机同样操作是泛洪,但是这个是泛洪单播帧,目标MAC是在PC3有具体的对应条目的。
后续
后面就跟前面一样,数据包的目标MAC和本地接口MAC符合。PC4对该数据包进行解封装,目标IP和本地接口IP匹配,将数据包丢给ICMP进程进行处理。进行逆封装,ICMP进程发送回显回复数据包。发送到交换机上,交换机学习该帧中的源MAC(PC4的MAC)和对应接口形成的条目加入到MAC表中,在交换机MAC表中查询目标MAC(PC3)所对应的接口,进行转发操作。PC3接收到后进行处理,后续不在赘述。
3. IP路由原理
PC1、PC3 两者不在一个网络中,那数据包是如何封装和传递的呢?下面进行PC1 ping PC3试试
图中R1、R2、R3已运行ospf在area 0区域中
PC1开始Ping
Ping进程启动下一个Ping请求,Ping进程创建ICMP Echo Request消息,并将其发送到较低的进程。未指定源IP地址,设备将其设置为端口的IP地址。目标IP地址172.16.3.3不在同一子网中,设置默认网关,设备将下一跳设置为默认网关。
图中IP包已经正常的封装,二层没封装是因为PC1的ARP表没有对应网关IP和MAC的对应条目,所以才会创建一个ARP请求。
请求网关IP的MAC地址
R1进行处理ARP请求
R1的出站信息
PC1处理ARP回复
将该ARP应答帧中的源MAC添加到本地ARP表项中,此时就请求到网关地址的MAC了。
PC1的ARP表
PC1重新进行ping
ping创建ICMP Echo Request消息,封装本端IP和目的IP,发现目的IP与本端IP不在同一个网络。此时二层封装目的MAC为网关MAC(因为ARP表有网关IP和MAC的对应表项,不需要进行ARP请求)
详细PDU信息
R1对PC1发送来的数据包进行处理
首先R1对该数据包进行解封装,拆到二层,帧的目的MAC地址和接收端口g0/1的MAC地址匹配,继续送往上层。拆到三层,对目的IP进行路由表查询,这个数据包需要转发到哪里。
查看路由表,有去往该目的IP网络的路由条目,下一跳地址为1.1.1.3
所以此时R1的操作,路由表查找到目标IP地址的路由条目,通过1.1.1.3可以到达目的地网络,设备减少数据包上的TTL。同时查找ARP表,对二层重新封装源MAC和目的MAC。
R1的出站PDU信息,已经完成重新封装,下一步发送往交换机。
交换机接收R1路由转发的数据包进行处理
交换机拆开二层,查询MAC地址表有该帧中的目的MAC,所以下一步从f0/3接口转发出去。
交换机的入站和出站信息
R3对交换机转发的数据包进行处理
R3此时的操作,对该数据包进行解封装,拆到二层,帧的目的MAC地址和接收端口g0/0的MAC地址匹配,继续送往上层。拆到三层,对目的IP进行路由表查询,这个数据包需要转发到哪里。查看路由表,有去往该目的IP网络的路由条目,为直连网络,出接口为g0/1。
所以此时R3的操作,路由表查找到目标IP地址的路由条目,通过直连接口g0/1可以到达目的地网络,设备减少数据包上的TTL。同时查找ARP表,对二层重新封装源MAC和目的MAC。
R3的出站PDU信息,已经完成重新封装,下一步发送往交换机。
交换机接收R3路由转发的数据包进行处理
交换机拆开二层,查询MAC地址表有该帧中的目的MAC,所以下一步从f0/1接口转发出去。
PC3接收交换机转发的数据包进行处理
数据包的目的IP地址与接口IP地址匹配,PC3对数据包进行反封装进行回复。
实验结束
后续数据包的路由转发步骤与前面的相似,不再赘述。