可结合另一篇转发流程介绍一起看看:二三层转发(1):流程详解_Python开发分享的博客-CSDN博客_三层转发流程
一. 二层转发数据包封装
前提条件:
1.源端与目的端在同一局域网内
2.源端没有目的端任何信息
源端:192.168.1.1/24
目的端:192.168.1.2/24
执行:192.168.1.1 ping 192.168.1.2
封装数据包 -->发送icmp包-->接收icmp回应
封装
ip层:目的ip为192.168.1.2;源ip为192.168.1.1
1.当主机存在多个源ip时是怎么选取源ip的呢?
主机根据目的IP结合自身所拥有的源ip和对应ip的掩码进行运算,找到与目的ip匹配的源ip
mac层:目的mac 192.168.1.2主机的mac;源Mac为:源主机接口192.168.1.1对应的mac
1.目的mac是怎么知道的?
当需要192.168.1.2的mac时,首先查询arp表,表中若没有,则由接口192.168.1.1发起arp请求,当目的主机收到请求后会回应arp请求所带信息就有自己的mac
二. 三层转发数据包封装
前提条件:
1.目的端与源端不在同一局域网内
源端:192.168.1.1/24
目的端:192.168.2.124
执行192.168.1.1 ping 192.168.2.1
封装
ip层:
1.路由查找:找路由表中与目标网络匹配的路由信息,找不到则走静态路由0.0.0.0 -- --
2.根据找到的路由信息,将路由对应的本机接口ip(192.168.1.1)作为源ip,ping的目的ip(192.168.2.1)作为目的ip封装
mac层:
1.本机接口ip(192.168.1.1)对应的mac作为yuan源
2.出口网关mac(192.168.1.2接口的mac)作为目的mac进行封装
三层交换机上报文的处理
交换机接口1收到报文:
1.检查目的mac为自己的mac所以交给ip层处理
2.ip层检查目的ip不为本接口局域网内,查询路由表,转给接口2处理
需要配置路由信息:(有的设备配置vlanif--subvlanif也行,有的设备开启路由功能即可)
交换机配置可参考:利用单个三层交换机实现不同vlan和不同网段之间互通(华为和cisco)_吴业亮的专栏-CSDN博客_同一交换机不同vlan互通
3.接口2封装ip层:ip层不变
4.接口2封装mac层:源mac:接口2的mac(192.168.2.2对应的mac),目的mac:pc2的mac(192.168.2.1对应的mac)
总结:
1.数据包无论在哪个地方,源Ip,目的ip不变(都为请求源和请求目的ip)
2.mac地址:为当前传输两端接口的mac地址(mac地址一直在变化)
3.vlan:vlan tag随交换机端口配置而剥离或增加