ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

《网络是怎样连接的》第三章精读:物理层信号、交换机转发与路由选路

《网络是怎样连接的》第三章精读:物理层信号、交换机转发与路由选路 1. 从网线插上就能上网说起第三章到底在讲什么很多人翻《网络是怎样连接的》这本书前两章看得挺顺到了第三章突然卡住——不是因为难而是因为这一章开始往下钻了。前两章讲的是从浏览器发出请求、经过协议栈、到达局域网这一路的宏观流程读者还能靠生活经验脑补第三章则一头扎进了信号在网线、光纤、无线电波里到底是怎么跑的以及交换机、路由器这些设备内部到底在干什么。抽象层级一下子降到了电气特性和硬件转发逻辑很多人就在这里掉队了。我最初读这一章时也有同样的感受明明知道数据从A传到B但书里开始讲电压、光脉冲、双绞线为什么要拧、MAC地址表怎么学习脑子里的模型就开始打架。后来我换了个思路——把第三章当成拆快递来看前面几章讲的是快递单怎么填、怎么送到分拣中心第三章讲的是包裹在传送带上怎么被识别、怎么被分流、怎么被装车。这个类比一建立整章的脉络就清楚了。第三章的核心其实就三件事第一信号如何在物理介质上表示0和1第二局域网内的交换机如何根据MAC地址把帧送到正确的端口第三路由器如何在不同网络之间做转发决策。这三件事层层递进从电信号到二层转发再到三层转发构成了数据真正动起来的完整链条。关键词可以概括为物理层信号编码、双绞线与光纤、MAC地址与交换机转发、路由表与最长前缀匹配、ARP解析。这篇笔记适合两类人一类是正在读这本书、卡在第三章需要一份人话版梳理的读者另一类是已经工作、但发现自己对数据包到底怎么从网卡出去始终只有模糊印象的开发者。我会把书里的核心逻辑拆开补上书中一笔带过但实际很关键的细节再分享几个我踩过的理解坑。读完之后你至少能对着一个抓包结果说清楚这个帧从网卡到交换机再到路由器每一步发生了什么。2. 信号是怎么变成0和1的物理层的编码逻辑2.1 双绞线为什么要拧差分信号与抗干扰书里提到网线是双绞线很多人记住了拧在一起这个结论却没搞懂为什么。这里的关键是差分信号传输。一根网线里真正传一路数据用的是两根线它们传输的是极性相反的同一个信号。接收端不看某根线对地的绝对电压而是看两根线之间的电压差。这么做的直接好处是抗共模干扰外界电磁噪声会同时耦合到两根线上两根线的电压一起升高或降低差值不变接收端照样能正确判读。那拧又是为了什么两根线如果平行走它们受到的干扰不完全相同差值就会被破坏。把两根线按固定节距绞合能让它们交替地靠近和远离干扰源从而让干扰在两线上尽可能均等。节距每绞一圈的长度是经过计算的不同线对的节距还不一样目的是减少线对之间的串扰。这就是为什么你拆开一根网线会发现四对线的绞合密度肉眼可见地不同——这不是工艺随意而是设计。提示这也是为什么网线不能随便压折、不能和强电走同一线槽。绞合结构一旦被破坏差分抗干扰能力下降表现为丢包、速率协商降级而不是直接断网排查起来很隐蔽。2.2 从电压到比特编码方式决定了怎么读信号在线上是连续变化的电压要表示离散的0和1就需要编码规则。书里介绍了曼彻斯特编码这类方案核心思想是用电压的跳变来表示比特而不是用绝对电平高低。比如规定从高到低跳变代表0从低到高跳变代表1。这样做的好处是接收端可以从信号本身提取时钟——每个比特周期中间必有一次跳变接收方据此同步不需要额外时钟线。这里有个容易被忽略的点编码效率。曼彻斯特编码每个比特都需要一次跳变占用的带宽是数据率的两倍效率只有50%。所以高速以太网后来改用更高效的编码方案如4B/5B、8B/10B以及更高速率下的多电平编码用多个电平或更复杂的映射在同样带宽下传更多数据。书里没有展开这些细节但理解编码是在带宽和同步能力之间做权衡这个思路比记住具体编码名字重要得多。我在实际排查一次链路问题时遇到过相关现象某段链路速率协商不到预期值换线后恢复。后来分析线材质量导致高频成分衰减严重高编码效率的方案对信号质量要求更高协商机制自动降级到更保守的编码和速率。这说明物理层的编码选择和线材质量是绑定的不是软件层面能绕过去的。2.3 光纤与无线换了介质逻辑没变书里对光纤和无线也做了介绍。光纤用光脉冲的有无表示比特全反射把光约束在纤芯里传播。相比铜缆光纤不受电磁干扰、衰减低、带宽大但代价是弯折半径有要求、接续需要专用设备。无线则把比特调制到射频载波上通过调制方式幅度、频率、相位或其组合承载信息挑战在于共享介质、干扰和衰减。我想强调的是不管介质怎么换用某种物理量的变化表示比特并让接收端能可靠判读这个本质不变。理解了铜缆的差分和编码再看光纤和无线只是物理量和干扰来源变了分析框架可以直接迁移。这也是我建议读这一章时不要死记每种介质参数、而要抓住表示—同步—抗扰这条主线的原因。3. 交换机内部MAC地址表是怎么学出来的3.1 帧进入交换机的那一刻发生了什么数据帧从网卡发出进入交换机的某个端口。交换机做的第一件事不是查表转发而是学习它读取这个帧的源MAC地址把它和从哪个端口进来的绑定写进MAC地址表。这个动作叫源地址学习是交换机自愈能力的来源——不需要人工配置网络自己就能建立转发表。学完之后才查目的MAC地址。如果表里有对应条目就从记录的端口转发出去这叫单播转发如果表里没有交换机不会丢弃而是从除入端口外的所有端口泛洪出去这叫泛洪。目的端收到后会回应回应帧的源地址又会被学习于是表项逐步补全。这个先泛洪、后学习、再单播的机制是理解二层网络行为的关键。注意泛洪是有代价的。表项没建立起来之前广播域内会有额外流量如果网络里存在环路泛洪会引发广播风暴。这也是为什么二层网络要跑生成树协议——不是可有可无的配置而是防止泛洪失控的安全阀。3.2 MAC地址表的老化为什么条目会消失MAC地址表不是永久保存的每个条目都有老化时间常见默认值是几分钟量级。如果一段时间内没有再从某个端口收到该源地址的帧条目就会被删除。这个设计很务实设备可能换端口、可能下线表项必须能自动清理否则表会越撑越大且充满过期信息。老化机制带来一个实际现象设备静默一段时间后第一帧往往要经过泛洪才能到达因为表项已经老化掉了。这在抓包时表现为偶尔出现泛洪帧很多人误以为是故障其实是正常的老化—重学习过程。我在排查一次间歇性延迟问题时最后定位到的就是某设备休眠唤醒后表项已老化首包泛洪带来的额外处理时延属于预期行为而非缺陷。3.3 交换机为什么不做IP层的事二层与三层的分工书里反复强调交换机工作在二层看的是MAC地址不关心IP。这个分工的意义在于职责单一、转发快。交换机只需要维护MAC表、做硬件级别的查表转发不需要理解IP地址、不需要跑路由协议。这种傻快的特性正是局域网高效的原因。但这也带来边界交换机无法隔离广播域。广播帧会在整个二层网络内泛洪网络越大广播开销越大。要隔离广播域就得上路由器或三层交换机用IP子网把大网络切小。理解这条边界你就明白为什么企业网络里接入层用交换机、核心层做路由是常见架构——不是随便分的而是二层和三层的职责天然不同。4. 路由器怎么选路路由表与最长前缀匹配4.1 路由表不是一张地图而是一组规则很多人把路由表想象成一张完整的地图其实它更像一组匹配规则。每条路由表项包含目的网络/前缀长度和下一跳/出接口。路由器收到一个IP包拿目的IP去和表项逐一比对选出匹配的那条。问题来了如果多条表项都能匹配怎么办答案是最长前缀匹配——前缀越长网络越具体优先级越高。举个例子路由表里有10.0.0.0/8和10.1.0.0/16两条一个目的地址10.1.2.3两条都能匹配但/16比/8更具体所以选/16那条。这个规则的意义在于支持路由聚合与例外并存可以用一条大前缀概括一片网络再用更具体的前缀为其中某个子网指定特殊路径两者不冲突。4.2 默认路由兜底的那条其他都走这里路由表里通常有一条0.0.0.0/0叫默认路由。它的前缀长度是0能匹配任何地址但因为是最短前缀只有在没有更具体匹配时才会被选中。它的作用就是兜底本地不知道往哪送的包统统交给默认网关。家用路由器里那条默认网关配置本质上就是在主机路由表里加了一条默认路由。这里有个实操中常见的困惑为什么我明明配了某条明细路由流量还是走了默认网关大概率是明细路由的前缀写错了或者掩码长度不对导致它没有比默认路由更具体。排查时直接看路由表里目标地址命中的是哪条比猜要快得多。4.3 ARPIP地址到MAC地址的翻译路由器决定下一跳之后还得把包封装成帧发出去而帧需要目的MAC地址。这就轮到ARP出场在本地网段内广播谁是这个IP对应主机回应自己的MAC。结果会缓存进ARP表后续直接查。ARP的关键点在于它只在本地网段内工作。跨网段通信时主机ARP解析的是网关的MAC而不是最终目的主机的MAC包到了网关网关再在自己的网段内做下一跳的ARP。这个逐跳解析的机制是理解跨网段转发的基础。很多人误以为源主机能直接知道远端主机的MAC这是典型误解。提示ARP缓存也有老化。缓存失效后重新解析会带来短暂延迟表现为隔一段时间第一次访问某地址稍慢。如果频繁出现要检查是否有ARP欺骗或表项异常刷新而不是简单归咎于网络慢。5. 把第三章串起来一个包从网卡到路由器的完整旅程5.1 逐层封装与逐跳转发的对照现在把前面几块拼起来。应用数据下来经过传输层、网络层封装成IP包到了链路层要封装成帧帧头填的是下一跳的MAC同网段就是目的主机跨网段就是网关。帧变成比特流经编码变成电信号或光信号从网卡出去到达交换机。交换机学源MAC、查目的MAC转发到对应端口。帧到达路由器路由器拆帧、看IP目的地址、查路由表、做最长前缀匹配、决定下一跳再重新封装成新帧新帧的源MAC是路由器出口、目的MAC是下一跳继续转发。这个过程中有两个重新封装的节点特别值得注意每经过一个路由器帧的MAC头都会被换掉但IP头基本不变除非NAT等特殊处理。这就是为什么说MAC地址是逐跳有效的IP地址是端到端有效的。抓住这句话二层和三层的分工就彻底清楚了。5.2 用抓包验证眼见为实光看文字容易飘我建议你实际抓一次包对照。在主机上抓一个访问外网的包你会看到发出的帧目的MAC是网关的如果能在网关侧抓包会看到帧的MAC已经换了一轮但IP源和目的没变。再配合看交换机的MAC表和路由器的路由表整条链路就活了。我自己的习惯是遇到包到底走没走对路的问题先抓包看帧的MAC对不对再看IP的目的地址和路由表匹配最后看ARP表里下一跳的MAC是否有效。这三步基本能覆盖大部分转发异常。这个排查顺序不是书里写的是我在实际处理中总结出来的比盲目看日志高效。5.3 常见误解清单读这一章时我整理了几个高频误解列出来供对照常见误解实际情况源主机直接知道远端主机的MAC跨网段时只知道网关MAC逐跳解析交换机认识IP地址二层交换机只看MAC不处理IP路由表是完整地图是一组匹配规则靠最长前缀匹配选路MAC表永久有效有老化时间静默后会重新学习泛洪是故障表项未建立时的正常机制环路下才危险把这些误解纠正过来第三章的很多别扭感就消失了。我个人体会是这一章难不在于概念多而在于它要求你在抽象流程和物理现实之间来回切换而大多数人习惯只待在其中一层。多抓几次包、多对着表看几遍切换就顺了。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表