Loading

Network系列:数据通信原理实验(四)

数据通信原理实验

1. 拓扑图

image-20221008231306819


2. 二层交换原理

2.1 广播帧

广播帧处理行为:交换机不会去查MAC地址表,直接对该广播帧执行泛洪操作。


实验开始

初始状态下,交换机并不知道所连接主机的MAC地址,所以MAC地址表为空。查看PC3的ARP表,也是空的。

image-20221008232813019

image-20221009103826835


此时PC3 ping PC4,看模拟器抓包。

PC3:172.16.3.3

PC4:172.16.3.4

image-20221009104132392


PC3构造ICMP请求数据包

Ping进程启动下一个Ping请求,Ping进程创建ICMP Echo Request消息,并将其发送到较低的进程。未指定源IP地址。设备将其设置为端口的IP地址。


此时本地ARP表发现没有IP和MAC的对应信息,所以进行构造ARP包来请求对端IP的MAC地址。

image-20221009104459642


PC3构造ARP包

ARP进程构造对目标IP地址的请求,设备将PDU封装到以太网帧中。由于PC3本地ARP表没有对应表项,所以此时的目的MAC是广播地址(FF:FF:FF:FF:FF:FF)

image-20221009104814289


PC3发送ARP请求

此时交换机的MAC表中不存在这个帧源MAC地址。交换机将此帧的源MAC作为新的MAC条目添加到其表中。交换机处理帧,广播帧为目标MAC地址。交换设备从以太网帧中解封装PDU,发现该帧为ARP帧。交由ARP进程处理它。

image-20221009105420138


交换机查看MAC地址表

已成功学习PC3发送的ARP包中的以太网帧的源MAC(也就是PC3的MAC),这时再看看交换机如何处理。

image-20221009110150707


交换机对广播帧的处理

这是一个广播帧,交换机不会去查MAC地址表,直接对该广播帧执行泛洪操作,交换机将该帧发送到同一VLAN中除接收端口外的所有端口。(发送到f0/2、f0/24)

image-20221009110440219


R3、PC4接受到帧后的处理

R3接收到一个广播帧,设备从以太网帧中解封装PDU。该帧为ARP帧。ARP进程处理它,但ARP请求的目标IP地址与接收端口的IP地址不匹配,ARP进程丢弃帧。

image-20221009121543774


PC4接收到一个广播帧,帧的目标MAC地址与接收端口的MAC地址匹配,设备从以太网帧中解封装PDU。该帧为ARP帧,ARP进程处理它。ARP请求的目标IP地址与接收端口的IP地址匹配,ARP进程用接收到的信息更新ARP表。

image-20221009122007932


查看PC4的ARP表

已成功学习到PC3的MAC

image-20221009122432254


PC4进行ARP回复

此时ARP进程用接收端口的MAC地址回复请求,设备将PDU封装到以太网帧中。

image-20221009122745872


交换机处理PC4的ARP回复

交换机的MAC表中不存在帧源MAC地址,交换机将此帧的源MAC作为新的MAC条目添加到其表中。同时这是一个单播帧,交换机在其MAC表中查找目标MAC地址。

image-20221009123022722


交换机查看MAC地址表

已成功学习到PC4的MAC地址,同时也拥有PC3的MAC地址,可以直接进行转发。

image-20221009123253855


交换机对PC4发来的帧进行处理

交换机查询MAC地址表得知目的MAC是与f0/1口绑定,所以将帧从该端口发送出去。

image-20221009124041977


PC3接收交换机转发PC4的应答ARP帧

帧的目标MAC地址与接收端口的MAC地址匹配,设备从以太网帧中解封装PDU。该帧为ARP应答帧,ARP进程处理它。ARP进程用收到的信息更新ARP表,ARP进程取出并发送等待此ARP回复的缓冲包。

image-20221009124444993


ARP进程从缓冲区中取出此数据包并重新发送,设备将PDU封装到以太网帧中。

image-20221009124707601


PC3发送ICMP请求数据包

交换机接收到PC3发送的数据包,在交换机的MAC表中找到该帧的源MAC地址,与MAC表中相同所以不需要重新学习。然后这是一个单播帧,交换机在其MAC表中查找目标MAC地址(当然此时MAC表也有PC4的MAC)。

image-20221009125231094


再看看交换机出站PDU详细信息

image-20221009130235833


PC4接收交换机转发的ICMP请求数据包

数据包的目标IP地址与设备的IP地址匹配,设备对数据包进行反封装。数据包是ICMP数据包,ICMP进程处理它,

ICMP进程接收到回显请求消息。

image-20221009131642130


再看看PC4出站PDU详细信息,已成功反封装IP数据包以及以太网帧。ICMP进程通过将ICMP类型设置为Echo Reply来回复Echo Request,ICMP进程发送回显回复。

image-20221009131755939


交换机对PC4发来的ICMP回复数据包进行处理

当然,MAC地址表中有PC3的MAC地址,所以直接执行转发!

image-20221009132229377


但此时交换机MAC地址表会有哪些表项呢?有没有什么变化?下面查看一下,多了R3的g0/1接口的MAC地址,从交换机f0/24接口接收到的!那是为什么?

image-20221009132402268


因为期间R3向交换机发送ospf数据包,当交换机第一次从f0/24接口接收到来自R3的数据包,拆开以太网帧发现MAC地址表没有该帧的源MAC地址和接口的对应表项,此时进行添加该帧里的源MAC地址和接收接口绑定条目。

image-20221009132709017


PC3接收交换机转发PC4的ICMP回复数据包

数据包的目标IP地址与设备的IP地址匹配,设备对数据包进行反封装。数据包是ICMP数据包,ICMP进程处理它。

ICMP进程接收到回显回复消息,Ping进程收到Echo Reply消息。

image-20221009133033345


查看PC3的ping程序,成功ping通!

image-20221009133206831


2.2 未知单播帧

交换机在MAC地址表中查不到这个帧的目的MAC地址,则交换机对该单播帧执行泛洪操作。


实验开始

在刚从上面的基础上,先清空S1交换机的MAC地址表,切换至模拟模式。

image-20221009143719118


此时PC3 ping PC4,看模拟器抓包,直接构造ICMP请求数据包,因为PC3本地MAC表有PC4的IP和MAC地址对应条目,所以不需要进行ARP请求。

PC3:172.16.3.3

PC4:172.16.3.4

image-20221009144232976


PC3构造ICMP请求数据包

Ping进程启动下一个Ping请求,Ping进程创建ICMP Echo Request消息,并将其发送到较低的进程。未指定源IP地址,设备将其设置为端口的IP地址。下一跳IP地址是单播,ARP进程在ARP表中查找它,下一跳IP地址在ARP表中。ARP进程将该帧的目标MAC地址设置为表中的地址,设备将PDU封装到以太网帧中。

image-20221009144651821


交换机对未知单播帧的处理

交换机拆到二层,发现帧源MAC地址不在MAC地址表上,交换机将该帧的源MAC作为新的MAC条目添加到其表中。同时这是一个单播帧,交换机在其MAC表中查找目标MAC地址,此时肯定是PC4的MAC地址的(目标MAC地址)。

image-20221009145121725


所以接下来看看交换机要出站的信息,帧的目标MAC地址不在MAC表中。交换机将帧泛洪发送到同一VLAN中的所有端口,接收端口除外(也就是泛洪给f0/2、f0/24)。

image-20221009145430897


R3接收交换机的泛洪单播帧

帧的目标MAC地址与接收端口的MAC地址不匹配,设备将丢弃帧。

image-20221009145805748


PC4接收交换机的泛洪单播帧

有没有发现这和前面的广播帧有小许不同,交换机同样操作是泛洪,但是这个是泛洪单播帧,目标MAC是在PC3有具体的对应条目的。

image-20221009145949362


后续

后面就跟前面一样,数据包的目标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区域中

image-20221010092536960


PC1开始Ping

Ping进程启动下一个Ping请求,Ping进程创建ICMP Echo Request消息,并将其发送到较低的进程。未指定源IP地址,设备将其设置为端口的IP地址。目标IP地址172.16.3.3不在同一子网中,设置默认网关,设备将下一跳设置为默认网关。


图中IP包已经正常的封装,二层没封装是因为PC1的ARP表没有对应网关IP和MAC的对应条目,所以才会创建一个ARP请求。

image-20221010092938805


请求网关IP的MAC地址

image-20221010093448692


R1进行处理ARP请求

R1的出站信息

image-20221010093738792


PC1处理ARP回复

将该ARP应答帧中的源MAC添加到本地ARP表项中,此时就请求到网关地址的MAC了。

image-20221010093949718


PC1的ARP表

image-20221010094117153


PC1重新进行ping

ping创建ICMP Echo Request消息,封装本端IP和目的IP,发现目的IP与本端IP不在同一个网络。此时二层封装目的MAC为网关MAC(因为ARP表有网关IP和MAC的对应表项,不需要进行ARP请求)

image-20221010104000273


详细PDU信息

image-20221010104446702


R1对PC1发送来的数据包进行处理

首先R1对该数据包进行解封装,拆到二层,帧的目的MAC地址和接收端口g0/1的MAC地址匹配,继续送往上层。拆到三层,对目的IP进行路由表查询,这个数据包需要转发到哪里。

image-20221010110432307


查看路由表,有去往该目的IP网络的路由条目,下一跳地址为1.1.1.3

image-20221010110145108


所以此时R1的操作,路由表查找到目标IP地址的路由条目,通过1.1.1.3可以到达目的地网络,设备减少数据包上的TTL。同时查找ARP表,对二层重新封装源MAC和目的MAC。

image-20221010111033966


R1的出站PDU信息,已经完成重新封装,下一步发送往交换机。

image-20221010110812571


交换机接收R1路由转发的数据包进行处理

交换机拆开二层,查询MAC地址表有该帧中的目的MAC,所以下一步从f0/3接口转发出去。

image-20221010112138145


交换机的入站和出站信息

image-20221010111912930


R3对交换机转发的数据包进行处理

R3此时的操作,对该数据包进行解封装,拆到二层,帧的目的MAC地址和接收端口g0/0的MAC地址匹配,继续送往上层。拆到三层,对目的IP进行路由表查询,这个数据包需要转发到哪里。查看路由表,有去往该目的IP网络的路由条目,为直连网络,出接口为g0/1。

image-20221010113223038


所以此时R3的操作,路由表查找到目标IP地址的路由条目,通过直连接口g0/1可以到达目的地网络,设备减少数据包上的TTL。同时查找ARP表,对二层重新封装源MAC和目的MAC。

image-20221010113533900


R3的出站PDU信息,已经完成重新封装,下一步发送往交换机。

image-20221010113642634


交换机接收R3路由转发的数据包进行处理

交换机拆开二层,查询MAC地址表有该帧中的目的MAC,所以下一步从f0/1接口转发出去。

image-20221010114006085


PC3接收交换机转发的数据包进行处理

数据包的目的IP地址与接口IP地址匹配,PC3对数据包进行反封装进行回复。

image-20221010114224671


实验结束

后续数据包的路由转发步骤与前面的相似,不再赘述。

image-20221010114647268

posted @ 2023-09-17 11:06  YinJayChen  阅读(43)  评论(0编辑  收藏  举报