前言
大家好,欢迎阅读本博客,我们将从宏观上对交换机、路由器的数据转发过程进行深刻探索,以及总结路由器、交换机在进行数据转发时的工作原理,希望大家能有所收获
一、拓扑以及地址规划
如图所示,PC1的IP地址为192.168.1.1 网关为192.168.1.254。PC2的IP地址为192.168.2.1 网关为192.168.2.254 现在我们来探索数据是如何从PC1传到PC2的
二、数据转发
1.PC1
PC1会封装源IP 目的IP 源MAC 目的MAC
那么我们思考一下 PC1封装的目的MAC地址是谁的呢?
当主机发送报文时,会检查目标IP和自己是否在同一网段。如果在,则封装目标IP所对应的MAC地址;如果不在,则封装网关IP所对应的MAC地址
很明显PC1和PC2不在同一网段,所以封装的是网关的MAC地址
那么怎么获取到网关的MAC地址呢?
首先PC1会查看自己的ARP缓存表,如果没有网关IP所对应的MAC地址,则通过ARP协议请求获取。通过广播请求,单播回传获取到MAC地址后,加入自己的ARP缓存表中(老化时间20分钟)
报文封装好后,变成比特流,传到SW1
此时报文为源IP和目的IP分别为PC1和PC2的IP地址 因为MAC地址比较冗长 这里用设备名称或端口-MAC代替
D-MAC:R1-G1-MAC 表示的就是 目的MAC为R1的G1口的MAC
2.SW1
数据到达SW1后,交换机会怎么处理呢?我们先来复习一下
MAC地址表的学习方式:交换机会对收到的数据帧,将该数据帧的源MAC和接受该数据帧的接口进行绑定,形成MAC条目。
例如;PC1的数据帧到达SW1,会形成“PC1-MAC G1”的MAC条目
交换机又是如何利用MAC地址表来转发数据的呢?这里要分情况讨论
针对已知单播帧:根据MAC地址表对应接口转发
针对未知单播帧、多播帧以及广播帧:交换机会进行泛洪操作
泛洪是指除源接口之外,向所有接口转发一份数据的行为
数据到达SW1后,SW1不知到R1-G1-MAC在哪里,所以会进行泛洪操作,收到回复后会记录条目
3.R1/R2/R3
同样的,我们在探索路由器的转发流程之前,也先来复习一下路由器的工作原理:
当路由器收到报文时,如何判断是否接收该报文呢?
要看目标MAC地址是否为接口的MAC地址,如果是,则接收报文并解封装到第三层
然后路由器会判断报文的目标IP是否为自身接口上的IP地址:如果是则直接解封装交给高层处理(设备的控制平面);如果不是则判断是否为直连网段,如果是直连网段,则直接查询接口的ARP表,封装目标IP所对应的MAC地址;如果不是,则查询路由下一跳的接口IP所对应的MAC地址
数据到达R1-G1口,会接收报文 ,目标IP不是自身接口IP,则查询路由表,发现也不是直连接口,则根据路由表,将报文从G2口转发出去。
此时报文为注意:整个数据转发过程,如果没有经过NAT设备,源IP和目的IP保持不变,变的是链路层信息
报文到达R2,和R1相同,不在赘述
报文到达R3,R3接收报文,查询路由表发现是直连接口,直接封装目标IP所对应的MAC 此时报文为
数据到达SW2,进行泛洪从G2口转发给PC2
至此,完整的数据转发流程梳理完毕
最后主机在接收数据帧时,针对单播数据,PC会接收目标MAC为自己的MAC,目标IP为自己IP地址的报文。针对多播(组播),PC会判断自己是否加入了对应的组播组中。针对广播,PC会直接交给高层处理
总结
以上就是今天要讲的内容,本文仅仅简单从宏观上介绍了数据转发流程的基础,希望大家有所收获