分享

网络七层模式流量转发:二、三层转发原理

 昵称11935121 2018-08-20

基础知识:osi七层模型、vlan、arp、icmp、路由表、arp表、mac地址表

介绍相关概念

Mac地址:总长48 bit二进制地址,如00-0c-29-2f-21-2b,分为三类。

功能:作为数据链路层唯一的身份标识,来标识设备的物理地址。

原理:mac在出厂时以由厂商烧录到网卡中或者路由器接口中,全球唯一。

Mac地址表:包括mac地址信息,端口信息,vlan等,工作在数据链路层。

功能:给数据包的二层转发提供依据。

原理:依据二层数据帧头部源mac和接收端口信息,更新mac地址表,通过将目的mac与mac地址表的条目进行匹配,匹配成功,则从相应端口转发,不匹配则广播出去。

Vlan:处在同一vlan内的主机属于同一个广播域。

Arp:地址解析协议,工作在网络层。

功能:可以通过此协议来获取目标ip的mac地址。

原理:发送一个arp请求包,如果目的ip收到这个请求包,就会回复一个arp回应包,然后根据回应包的ip字段的源mac信息,获取到目的ip的mac信息,获取来的mac可以完成上层协议报文的封装。

Icmp:Internet控制报文协议,工作在网络层。

功能:主要用来检测网络通信故障和实现链路追踪,其中应用最多的例子是PING和traceroute。

二层转发原理:

交换机会从每个通过该接口的报文中学习mac信息,然后将mac信息对应接收到报文端信息记录到mac地址表中,根据报文中的目的mac信息,与mac表的条目进行匹配,成功的就从相应端口将报文转发出去。(具体举例过程参见附录)

三层转发原理:

当我们要跨网段进行通信的时候,就要借助三层转发原理了。

三层设备继承了二层设备mac地址学习的功能,会对每一个过往的数据包拆解,查看其报文相关字段,更新自己的mac地址表,而且它还具备arp表和路由表,也会通过对数据包的拆解,更新相关条目,三张表相结合用于实现跨网段通信。

当三层设备收到一个icmp报文,其目的mac是自己三层接口的mac地址时,这个时候就需要进行三层转发,首先三层设备会查找自己的硬件转发表,看是否有相关报文的缓存,如果没有,就去查找路由表,如果目的ip与路由表中的条目有匹配项,则三层设备会查找arp表,看是否有目的ip的mac地址,完成数据的二层重写,然后将数据包转发走。如果arp表中没有匹配项,则将会发送arp请求包来请求目的ip的mac,然后三层设备会收到一个涵盖目标ip主机mac的arp回应包,然后对回应包进行拆解读取ip头的源ip和源mac信息,然后记录到arp缓存表中,然后三层设备的第三层引擎会完成数据包的源mac和目的mac的重写,其第三层引擎还会对硬件交换组件进行程序化处理,通过创建mls条目,使得后续数据包的直接通过硬件转发表,实现源和目的mac的重写工作,然后将icmp报文通过相应出接口转发给目的ip主机,使得不同网段的pc实现了互通。(具体举例过程参考附录)

附录:

二层转发过程

网络七层模式流量转发:二、三层转发原理

pc1 ping pc2

1. pc1发送一个arp请求包(广播包),来请求pc2的mac地址,以太帧包头字段中,源mac为pc1,目的mac字段为全f。在ip包头中,源mac为pc1,源ip为pc1,目的mac字段全为0,目的ip为pc2。

网络七层模式流量转发:二、三层转发原理

2. 交换机从f0/1口收到该包,会根据数据包以太帧头的源mac字段以及接收数据包的接口信息,记录成mac地址表,然后根据数据包的目的mac为全f字段,所以讲将数据包从除了接收端口以外的其他端口泛洪出去。

3. pc2收到数据包,通过查看目的ip,发现是寻找自己的,它会回应一个arp回应包(单播包),arp包头中,源mac为pc2,源mac为pc2,目的mac为pc1,目的ip为pc1。

网络七层模式流量转发:二、三层转发原理

4. 交换机收到数据包之后,根据数据包相关信息,记录成mac地址表,来指引后续的数据包的转发。交换机通过拆解数据包的以太帧头,发现目的mac为pc1,通过查找mac地址表,将数据包中f0/1口发出。

5. pc1收到这个arp回应包之后,获取到了pc2的mac,就可以完成ping包的封装了,然后发送一个ping请求包到交换机,包的源mac、ip为pc1,目的mac、ip为pc2。

网络七层模式流量转发:二、三层转发原理

6. 同样交换机收到之后拆解帧头,查找mac地址表,指导数据包从f0/2口转发。

7. pc2收到ping请求包之后,发送一个ping回应包到pc1,源mac、ip为pc2,目的mac、ip为pc1。

网络七层模式流量转发:二、三层转发原理

8. 交换机收到之后,拆解帧头,查找mac地址表,指导数据包从f0/1口转发。

9. pc1收到pc2发过来的ping回应包。

三层转发过程

网络七层模式流量转发:二、三层转发原理

pc1 ping pc3

1. pc1 在给pc3发送数据包的时候,会用自己ip地址和掩码进行与运算,用得到的网络地址跟pc3的网络地址做比对,判断是否处在同一网段内,如果在同一网段内,则发送一个包含pc3的ip地址的arp请求包(广播包),请求pc3的mac(用来完成icmp包的封装),如果不在同一网段内,则发出一个包含pc1网关ip地址的arp请求包,来请求pc1网关的mac。

网络七层模式流量转发:二、三层转发原理

2. 二层交换机1收到arp请求包之后,拆解数据包,根据以太帧头源mac和接收端口信息,更新mac表,然后根据目的mac查找自己的mac地址表,发现目的mac全f的广播包,则向除了接收端口以外的其他端口泛洪该报文,pc2收到该arp广播包之后,拆解数据包,根据目的ip跟自己的ip是否一致,决定回应或者丢弃该数据包。三层设备收到之后,拆解数据包,根据源ip和源mac更新arp表,根据源mac和接收端口信息更新mac表,之后发现目的ip是自己的ip,然后就发一个包含pc1网关mac的arp回应包(单播包)。

网络七层模式流量转发:二、三层转发原理

3. 二层交换机1收到arp回应包之后,拆解数据包,更新mac地址表(2中有表述),依据以太帧头目的mac查找mac地址表,将arp包从f0/1口发送出去。

4. pc1收到arp回应包之后,拆解数据包,根据发送者ip和mac更新arp表,然后发送一个icmp请求包。

网络七层模式流量转发:二、三层转发原理

5. 二层交换机1收到icmp请求包的时候,拆解数据包,更新mac地址表(2中有表述),依据以太帧头目的mac查找mac地址表,将数据包从f0/3口转发出去。

6. 三层设备收到icmp请求包的时候,拆解数据包,更新mac地址表,更新arp表,依据目的ip是不是自己三层接口的ip,判断是否三层转发。如果是则依据目的ip查找三层表项,发现匹配有直连路由,然后查找arp表,判断有没有匹配项,如果没有,则发送arp请求包(广播包)来获取pc3的mac。

网络七层模式流量转发:二、三层转发原理

7. 二层交换机2收到arp请求包之后,更新mac地址表,然后将广播包泛洪出去。

8. pc3收到arp请求包之后,拆解数据包,更新自己的arp表,然后发现目的ip是寻找自己的,然后回应一个包含自己mac的arp回应包(单播包)。

网络七层模式流量转发:二、三层转发原理

9. 三层设备收到arp回应包之后,拆解数据包,更新mac地址表和arp表,然后对icmp请求包进行二层重写操作,重写源和目的mac。源mac由pc1的mac替换成出接口的mac,目的mac由pc1网关的mac替换成pc3的mac,源、目的ip没有变化。然后将icmp包发从接口f0/6转发出去。三层设备会根据路由表和arp表建立相应表项,方便后续数据包执行第二层重写操作,后续的数据包来了之后不用再查找路由表转发,直接查找硬件转发表,进行转发,实现一次路由多次交换。

网络七层模式流量转发:二、三层转发原理

10. 二层交换机2收到icmp请求包之后,拆解数据包,更新mac地址表,根据mac地址表将数据从f0/8口转发出去。

11. pc3收到icmp请求包之后,拆解数据包,更新arp表,然后回复一个icmp回应包。

网络七层模式流量转发:二、三层转发原理

12. 二层交换机2收到icmp回应包之后,拆解数据包,更新mac地址表,根据mac地址表,将数据包从f0/7口转发出去。

13. 三层设备收到icmp回应包之后,拆解数据包,更新mac地址表,更新arp表,根据目的ip执行三层转发,根据硬件转发表,将数据包从f0/5发送出去。

网络七层模式流量转发:二、三层转发原理

14. 二层交换机1收到icmp回应包之后,拆解数据包,更新mac地址表,根据mac地址表,将数据包从f0/1口转发出去。

15. pc1收到icmp回应包之后,拆解数据包,更新自己的arp表。

总结:pc1的icmp请求包在经过三层设备时,源和目的ip字段没有改变,源mac和目的mac都改变了,源mac由pc1的mac改为经由三层设备出接口的mac地址,目的mac由pc1网关的mac改为经由三层设备下一跳ip的mac的地址。

pc3收到pc1发送的icmp请求包之后,pc3回应一个icmp回应包,此回应包在经过三层设备时,源和目的ip没有改变,源mac和目的mac都改变,源mac由pc3的mac改为经由三层设备出接口的mac,目的mac由pc3网关的mac,改为经由三层设备下一跳的mac地址。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多