燃!七张图讲清楚二三层转发

2,759 阅读3分钟

1、 数据报文的下发和上送


燃!七张图讲清楚二三层转发

图1

如图1(采用简单的网络分层,非传统的OSI分层)所示,一个数据报文由应用层生成,封装数据,协议头,交给传输层处理,例如是TCP协议,此时封装TCP头,交给网络层处理,例如是IP协议,此时封装IP报文头,交给链路层处理,例如是以太协议,此时封装以太头,交给物理层处理。这个过程可以称之为数据报文的下发过程。

数据报文到达物理层后,根据特殊的标记,分发到相应的链路层处理,比如以太协议,以太协议根据协议号,再上送到不同的网络层处理,比如是IP协议,就将报文放到IP队列等待网络层处理。在网络层,还是以IP协议举例,解析IP头后,知道传输层协议是TCP,就交给TCP处理,TCP头剥掉后,就交给相应的应用层去处理了。这就是报文的上送过程。

总之,可以简单认为,报文的下发就是一层层的封头,报文的上送就是一层层的剥头。


2、 数据报文的转发


1. 二层交换

(1) 在一个二层网络内部(比如一个VLAN),将收到的帧选择适当的端口发出去。

(2) 通过MAC学习得到MAC与端口的对应信息,称之为FDB表。

(3) 对收到的包按目的MAC做交换,不修改帧里的源和目的MAC地址。

(4) 没有表项的帧在VLAN内做广播。

燃!七张图讲清楚二三层转发

图2


燃!七张图讲清楚二三层转发

图3


2. 三层转发

(1) 链路层收到一个以太网帧

(2) 检查校验和等参数是否合法

(3) 如果目的MAC地址不是我的,也不是组播和广播MAC,就进行二层转发

(4) 如果目的MAC地址是设备的MAC地址,则删除帧头,把数据部分按帧头里的协议类型交给上层协议处理(如IP)

(5) IP层收到IP包(就是以太网帧的数据)

(6) 检查校验和等参数是否合法

(7) 如果IP地址是接口IP地址之一,说明是本地报文,按IP头里的协议类型交上层协议处理(如TCP)

(8) 否则,用目的IP地址查转发表

(9) 由路由则交"出接口"对应的链路协议发出,没有路由则送cpu处理

(10) 链路协议(以太)得到这个要发出的IP包,以及出接口和下一跳IP地址信息

(11) 在IP包前面添加以太网帧头,源MAC地址是我的MAC地址,目的MAC地址是下一跳的MAC地址(用下一跳查ARP表得到),发出。

(12) 如果ARP表里没有找到下一跳IP地址,则需要发送ARP请求去解析这个IP,暂缓发送IP包或丢包。


燃!七张图讲清楚二三层转发

图4

燃!七张图讲清楚二三层转发

图5

燃!七张图讲清楚二三层转发

图6

燃!七张图讲清楚二三层转发

图7

发现更多精彩内容: