二三层转发原理1.二层转发原理首先搭建环境,拓扑图如下PC1的IP地址为192.168.1.2,将其连接至交换机的F0/4口。PC2的IP地址为192.168.1.1将其连接至交换机的F0/5口。1)ARP请求过程在PC1上发起一个ICMP请求回应报文,类型字段为8,代码字段为0。目标IP地址是PC2,由于PC1查找自己的ARP缓存表里没有PC2IP对应的MAC地址,于是发起一个ARP请求报文,请求PC2的IP对应的MAC地址。值得注意的是,在发起的ARP请求报文段里,ARP报文部分的目的MAC地址为全0。而在帧头部的信息里,MAC地址为广播地址。PC1将这个帧封装好后从接口发送出去,交换机接收到这个帧以后,检查帧的头部信息,发现帧的头部信息里面,源MAC地址在交换机自己的MAC表里没有查到,于是首先进行学习,将此帧的源MAC地址添加到自己的MAC表里然后交换机检查帧头部的目的MAC地址是一个广播地址,于是在除收到这个帧接口以外的每个接口进行转发。于是这个帧会从F0/4口转发出去。PC2会收到这个帧,PC2检查这个帧的目的MAC地址是一个广播地址。然后进行依次的解封装,在帧类型位发现这是一个ARP报文,在ARP的报文信息里发现了目的IP地址是PC2自己的IP地址,并且发现在报文里的源MAC地址和源IP地址在自己的ARP表里没有,于是在自己的ARP表里添加PC1的IP与MAC的对应关系项,然后又发现了OP位是一个ARP请求回应的报文类型。于是重新封装一个ARP回应报文,在ARP的报文信息里,源MAC是自己,经过查找自己的ARP表,将PC1对应的MAC地址添加到目的MAC中进行封装,然后从接口把这个帧发送出去给交换机。交换机收到这个请求,发现此帧的源MAC在自己MAC表里没有。于是进行学习,在自己的MAC地址表里添加了对应项,然后根据接口的VID和帧头部信息里的目的MAC为索引在自己的MAC地址表里进行查找,找到了对应的表项,于是将这个帧从F0/5接口转发出去。PC1收到这个帧,在目的MAC里找到了自己的MAC地址,可以确认这个帧是发给自己的,然后继续解封装,在OP字段里发现这是个ARP回应,目的IP是自己,源IP是PC2,于是将PC2对应的IP和MAC添加到自己的ARP表里2)ICMP请求回应过程现在PC1已经获得了PC2的MAC地址,那么现在把刚开始放入缓存中的ICMP报文取出,将目的MAC置为PC2的MAC地址,并且把这个包发送出去,报文如下:交换机接收到这个帧,检查帧头部信息,发现源MAC在自己的MAC表里有,然后根据接口的VID和帧头部信息里的目的MAC为索引在自己的MAC地址表里进行查找,查到了对应的表项,于是把这个帧从F0/5口发送出去。PC2接收到这个帧,发现目的MAC是自己,于是接收这个帧并进行顺序解封装,在IP报文里发现这是一个ICMP的请求回应报文。于是自己重新封装一个ICMP的回应请求,类型字段为0,代码字段为0。源IP是自己,目的IP是PC1的IP,源MAC是自己,经过ARP表查询,将目的MAC置为PC1的MAC,将这个包发送出去。报文如下:交换机收到这个帧,查找源MAC,由于在自己的MAC地址表里有对应项,然后根据接口的VID和帧头部信息里的目的MAC为索引在自己的MAC地址表里进行查找,查到了对应的表项,于是从F0/4把这个包发送出去。PC1收到这个包,发现目的MAC是自己,于是收下这个帧,进行二层的解封装,然后取出报文中的目的IP查找路由表发现是本身地址于是进行三层的解封装,最后在ICMP报头的序列号字段里发现了和刚才发给PC2的序列号是一致的,于是确认了这个ICMP回应是自己刚才发给PC2的ICMP请求。2.三层转发原理首先搭建环境,拓扑图如下PC1连接交换机的F0/4口,交换机的F0/5口连接路由器的eth10口,路由器的eth11口连接PC2,PC1的地址为192.168.1.2,PC2的地址为192.168.2.2,eth10接口IP为192.168.1.1Eth11接口配置为192.168.2.11)PC2PINGPC1PC2开始封装一个ICMP请求回应报文,当封装IP报头的时候,发现目的IP和自己不属于同一个网段(PC2把目的IP地址和自己的子网掩码进行与运算算出网段号,在把自己的IP地址和自己的子网掩码进行与运算算出网段号,发现是不一致的,所以认为对方和自己不属于同一个网段。2)PC2把这段报文交给网关处理由于不处于同一个网段,PC2会继续封装报文,在封装帧的时候目的MAC寻找自己的ARP表里网关的MAC地址,发现没找到,于是把这段报文缓存起来。3)PC2向网关发起一个ARP请求PC2向网关发起一个ARP请求,寻求网关的MAC地址。顺序进行封装,ARP报文里,目的MAC为空,源IP为自己,目的IP为网关的IP,帧头部里,目的MAC为广播地址,源MAC为自己的MAC。路由器的eth11口收到这个请求,查看到帧头部信息里的目的是一个广播帧,于是收下这个帧但不进行转发,依次解封装,在ARP报文里发现源MAC和对应的源IP地址在自己的ARP表里没有,于是就在自己的ARP表里添加一项此帧的对应IP和MAC。由于查看到OP字段是一个ARP请求,目的IP是自己,于是路由器发起一个ARP回应给PC2,目的MAC是PC2的MAC地址,进行封装。PC2接收到这个地址,查看帧的头部,目的MAC是自己,于是收下这个帧并进行解封装,知道这个帧是从网关发来的ARP回应,于是在自己的ARP表里添加网关对应的MAC,然后将刚才的ICMP报文从缓存里取出,将帧头部的目的MAC置换为网关的MAC地址,并发送出去。路由器接到这个地址,查看到目的MAC是自己的MAC地址,于是接收下来并进行解封装。把IP首部中的目的IP和自己路由表里的路由条目进行对比,找到了该IP对应的目的网络号和出站接口,重新进行二层的封装,而目的IP和源IP都不发生变化。但是在封装目的MAC的时候,路由器在查找自己的ARP表里没有找到对应于PC1的IP,于是将此帧缓存起来。发起一个ARP请求报文去寻找PC1的MAC地址4)路由器发起ARP请求寻找PC1的MAC地址路由器在发起的ARP请求报文里目的MAC为空,源MAC为eth10口的MAC,源IP为eth10口的IP,在帧头部,源MAC为eth10口的MAC,目的MAC为一个广播,从eth10口发送出去,交换机接收到这个帧,首先检查源MAC是否在自己的MAC地址表里,发现没有,于是就进行学习,将此帧的源MAC记录在自己的MAC地址表里,然后检查目的MAC是一个广播帧,于是就把这个帧从除接收此帧的接口外的所有接口进行广播。这个帧会从F0/4口发送出去,PC1会接收到此帧,由于目的MAC是一个广播地址,于是接收这个帧并进行解封装,在ARP报文里,发现源MAC和对应的源IP在自己的ARP表里没有,于是将对应的IP和MAC地址添加到自己的ARP表里,由于ARP报文里的OP字段是一个ARP请求报文,于是它会马上发起一个ARP回应报文,目的MAC是路由器eth10的MAC地址,源MAC是自己,目的IP是eth10的IP,源ip是自己,将这个帧发送给交换机。交换机收到这个帧以后,首先检查源MAC是否在自己的MAC地址表里,发现没有,于是进行学习。将此帧的MAC地址添加到自己的MAC地址表里。然后根据接口的VID和帧头部信息里的目的MAC为索引在自己的MAC地址表里进行查找,查到了对应的表项,于是把这个帧从F0/5接口转发出去,路由器收到这个帧以后,发现目的MAC是自己,于是进行解封装,在ARP报文里发现这是一个ARP回应报文,目的IP是自己,源IP和源MAC在自己的ARP表里没有,于是将PC1的IP和对应的MAC在自己的ARP表里存起来。并将刚才的ICMP请求的目的MAC置为PC1的MAC地址从eth10口发送出去。源MAC为eth10的地址,目的MAC为PC1的MAC,目的IP和源IP都不发生变化。交换机收到这个帧以后,检查源MAC,发现在自己的MAC地址表里有,于是不进行学习,然后根据接口的VID和帧头部信息里的目的MAC为索引在自己的MAC地址表里进行查找,于是从F0/4口进行转发。PC1收到这个帧以后发现目的MAC是自己,于是进行解封装,在IP报文段里发现这是一个来自PC2的ICMP回应请求。于是发起一个ICMP的回应报文,同样在计算目标IP和自己是否是同一个网段的时候,发现不同,于是将这个包交给网关。目的IP是PC2的IP,源IP是自己的IP,经过查询自己的ARP表,将网关的MAC置为自己的目的MAC,源MAC为自己。将这个帧发送出去。交换机接收到这个帧以后,发现源MAC在自己的MAC表里有,于是不进行学习,然后根据接口的VID和帧头部信息里的目的MAC为索引在自己的MAC地址表里进行查找,查到了对应的表项,于是把这个帧从F0/5口发送出去,路由器接收到这个请求,发现目的MAC是自己,于是顺序解封装,把目的IP和自己的路由表里的每一项进行对比。发现了对应的表项,于是将此帧重新封装,查找ARP表,将目的MAC替换为PC2的MAC地址,源MAC替换为eth11的接口MAC地址,源IP,目的IP不发生变化,把这个帧发送出去。PC2接到这个请求,发现目的MAC地址是自己,于是顺序解封装,在IP报文段里发现了是一个ICMP的回应。最后路由的ARP表为:ICMP回应报文为:这时候源MAC为路由器eth11的接口MAC。交换机最后的MAC地址表