新手咨询:为何Switch属layer2设备?OSI数据封装逻辑疑问
核心认知偏差说明
你产生疑惑的根源是两个基础理解错误:一是搞反了OSI模型的封装嵌套逻辑,二是误以为二层帧头是端到端永久携带的,不清楚数据转发过程中二层头逐链路封装、逐链路拆除的规则。
正确的OSI封装顺序
OSI模型从上到下封装时,每一层都会把上一层传递的完整内容作为自身载荷,再加上本层的头部,封装顺序是从高层往低层逐层添加头部,越低层的头部封装时间越晚、位置越靠外:
- L7(应用层)产生原始业务数据,依次向下传递给表示层、会话层、传输层
- L4(传输层)添加TCP/UDP头部,封装为数据段,向下传递给网络层
- L3(网络层)添加源IP、目的IP头部,封装为数据包,向下传递给数据链路层
- L2(数据链路层)添加源MAC、目的MAC头部和帧尾校验位,封装为数据帧,向下传递给物理层
- L1(物理层)把完整数据帧转换为光电比特流,通过传输介质发送出去
注意:二层头部是在三层头部封装完成后才添加的,不存在二层头比三层头更早封装的情况
「设备工作在某一层」的实际含义
这个描述不是指设备只具备对应层级的功能,而是指设备做转发决策时,最高会解析到哪一层的头部:
- 二层交换机:收到比特流还原为数据帧后,只会读取二层帧头里的MAC地址,对照自身MAC地址表选择转发端口,全程不会拆开帧头查看内部三层的IP内容,因此被归为二层设备
- 路由器:收到数据帧后会先拆掉二层帧头和帧尾,读取内部三层包头的目的IP,对照路由表选择转发路径,因此被归为三层设备
- 调制解调器(Modem):不会解析任何层级的协议头部,只做光电信号、数模信号转换,把比特流从一种传输介质适配到另一种传输介质,因此被归为一层设备
逐段拆解你提到的组网流量过程
你列出的典型组网路径为 PC → 二层交换机 → 路由器 → Modem,客户端向外发送流量的完整交互逻辑如下:
- PC侧完成全流程封装:七层到三层的内容封装完成后,由于访问外网的流量需要发给默认网关(即路由器直连PC的接口),PC会在二层头部填入自身网卡MAC作为源MAC、路由器直连接口MAC作为目的MAC,封装为完整数据帧后转成比特流发给交换机
- 交换机收到比特流还原为数据帧,读取目的MAC地址,对照MAC地址表发现该MAC对应连接路由器的端口,直接把完整的、未做任何修改的帧从对应端口转发给路由器,全程不触碰三层IP内容
- 路由器收到数据帧后,先拆除二层帧头和帧尾(这组二层头只在PC到路由器这段链路上有效,到路由器侧就直接作废丢弃),读取内部三层数据包的目的IP,查路由表确认流量需要从连接Modem的接口发往运营商下一跳。此时路由器会在出接口本地重新封装新的二层帧头:源MAC填自身连接Modem接口的MAC,目的MAC填Modem对接的运营商接口MAC,封装为新的数据帧后转成比特流发给Modem
- Modem收到比特流后直接做信号转换,把以太网信号适配为运营商线路支持的传输信号发往互联网,全程不拆解帧、包结构
你猜测的「路由器需要反向传回交换机获取二层头部」完全不成立:每一段链路的二层帧头都是由链路的发送端在本地封装的,只在当前链路上生效,传过链路后就会被对端拆除,根本不会端到端传递,路由器转发时完全可以自行封装新的二层头,不需要向交换机获取。
最后补充一个小的认知修正:你标注的PC(layer7,6,5,4)并不准确,PC是完整实现OSI全部七层功能的设备,它自带的网卡就负责二层、一层的封装解封装工作,不是只具备四层以上的功能。
内容的提问来源于stack exchange,提问作者A Lone Loser
相关产品推荐
相关产品推荐

