网络是如何连接的(四)

135 阅读15分钟

前言

上一章我们讨论了客户端中的协议栈和网卡,介绍了发送网络包,也就是将网络包转换成电信号通过网线传输出去的过程。本章我们将继续跟着上一章的脚步,看一看通过网线传输出去的包是如何经过集线器、交换机和路由器等网络设备,最终进入互联网的。

1、信号在集线器中传输

从计算机发送出来的网络包会通过集线器、路由器等设备被转发,最终到达目的地。我们在前面讲过,转发设备会根据包头部中的控制信息,在转发设备内部一个写有转发规则的表中进行查询,以此来判断包的目的地,然后将包朝目的地的方向进行转发。我们假设客户端计算机连接的局域网结构如下图所示

image.png 网络包从客户端计算机发出之后,要经过集线器、交换机、路由器最终进入互联网。实际上,我们家里用的路由器已经集成了集线器和交换机的功能,像图上这样使用独立设备的情况很少见。不过,把每个功能独立出来更容易理解,而且理解了这种模式之后,也就能理解集成了多种功能的设备了,因此我们这里将所有功能独立出来,逐个来进行探索。

1.1、防止信号衰减

。网卡中的PHY(MAU)A模块负责将包转换成电信号,信号通过RJ-45接口进入双绞线。以太网信号的本质是正负变化的电压,大家可以认为网卡的PHY(MAU)模块就是一个从正负两个信号端子输出信号的电路。网卡的PHY(MAU)模块直接连接RJ-45接口,信号从这个接口中的1号和2号针脚流入网线。然后,信号会通过网线到达集线器的接口,这个过程就是单纯地传输电信号而已。如图

image.png

但是,信号到达集线器的时候并不是跟刚发送出去的时候一模一样。集线器收到的信号有时会出现衰减。信号在网线的传输过程中,能量会逐渐损失。网线越长,信号衰减就越严重。
而且,信号损失能量并非只是变弱而已。以太网中的信号波形是方形的,但损失能量会让信号的拐角变圆,这是因为电信号的频率越高,能量的损失率越大。信号的拐角意味着电压发生剧烈的变化,而剧烈的变化意味着这个部分的信号频率很高。高频信号更容易损失能量,因此本来剧烈变化的部分就会变成缓慢的变化,拐角也就变圆了。即便线路条件很好,没有噪声,信号在传输过程中依然会发生失真,如果再加上噪声的影响,失真就会更厉害。噪声根据强度和类型会产生不同的影响,无法一概而论,但如果本来就已经衰减的信号再进一步失真,就会出现对0和1的误判,这就是产生通信错误的原因。如图

image.png

1.2、使用“双绞”抑制噪声

局域网网线使用的是双绞线,其中“双绞”的意思就是以两根信号线为一组缠绕在一起,这种拧麻花一样的设计是为了抑制噪声的影响。
那么双绞线为什么能够抑制噪声呢?这里我们简单讲讲,不做发散。双绞线通过将两根信号线螺旋缠绕,利用电磁感应原理抵消噪声:外部设备泄漏的电磁波在两线中感应出方向相反的电流,反向电流相互抵消;同时,每对信号线采用差异化的扭绞间隔,使相邻线间因串扰产生的正负噪声影响交替分布并相互抵消,最终在整体上平衡噪声,显著提升抗干扰能力并保留原始信号传输。
除双绞结构外,通过增加信号线隔板、包裹金属屏蔽网等工艺可进一步提升网线抗干扰性能,这些工艺差异使得市售双绞线按性能指标分为不同“类”。如图

image.png

1.3、集线器将信号发往所有线路

集线器内部结构如如所示

image.png 集线器基于以太网广播架构工作:内部PHY(MAU)模块通过交叉接线连接接口,使信号能正常接收;其MDI/MDI - X切换开关用于调整接线模式(默认MDI - X模式),连接两台集线器时需将其中一台改为MDI模式或使用交叉网线;信号进入集线器后经中继电路广播到所有端口,设备根据MAC地址判断是否接收,因集线器不甄别信号直接广播,受噪声干扰的失真信号会被设备通过FCS校验丢弃,TCP模块会重传丢包。此外,网卡与集线器、两台计算机网卡间也可按类似原理直连通信,交叉网线可用于集线器互联或计算机直连。可以参考下图

image.png

image.png

2、交换机的包转发操作

2.1、交换机根据地址表进行转发

交换机的设计是将网络包原样转发到目的地,下图是它的内部结构

image.png 交换机通过网线接口接收信号后,其PHY(MAU)模块将信号转换为通用格式并交由MAC模块处理(与网卡类似),经FCS校验无误后存入缓冲区;不同于网卡通过MAC地址过滤包,交换机端口接收所有包并存入缓冲区,再查询MAC地址表(记录设备MAC地址与对应端口映射关系)确定转发路径,实现精准端口投递。
下图是交换电路的内部结构

image.png 交换电路通过网格状信号线及独立控制的电子开关实现多端口间信号灵活转发:根据目标端口(如2→7号)动态切换开关状态形成定向通路,支持多路信号并行传输;信号到达发送端口后,其MAC与PHY模块按以太网规则执行发送操作(冲突检测、阻塞响应等),过程与网卡发送机制一致。

2.2、MAC地址表的维护

交换机在转发包的过程中,还需要对MAC地址表的内容进行维护,维护操作分为两种。 一种是收到包,另一种是删除地址表的某条记录。
交换机通过动态维护MAC地址表实现精准转发:收到包时,将发送方MAC地址与输入端口绑定记录;为应对设备移动,地址表设置老化机制(通常几分钟未使用自动删除过期记录)。设备移至新位置后,新交换机会通过其发出的包更新地址表,原交换机过期记录失效可能导致短暂丢包(罕见情况可通过重启交换机重置地址表解决),全程无需手动维护。 不过值得注意的是

  • 当交换机发现一个包要发回到原端口时,就会直接丢弃这个包。
  • 当地址表中找不到指定的MAC地址时,交换机将包转发到除了源端口之外的所有端口。

2.3、全双工模式

全双工模式是交换机特有的高效工作模式:通过独立收发电路(双绞线及交换机/网卡内部均隔离发送/接收信号)彻底避免碰撞,无需半双工的碰撞检测机制;以太网规范修订后允许随时发送信号,实现双向同时传输,大幅提升速率与吞吐量(对比半双工需等待信号空闲、存在碰撞瓶颈)。
为解决全双工与半双工模式切换问题,以太网引入自动协商功能:设备通过双绞线脉冲信号(含状态信息)自动探测对方支持的速率和工作模式(如全双工/半双工),按优先级匹配最优组合。该功能省去手动切换麻烦,同时连接脉冲信号还能实时检测链路状态(绿灯亮表示正常)。我们看一个自动协商的示例

image.png 交换机基于MAC地址表精准转发包,仅目标端口忙碌,其余端口可并行传输多路信号;而集线器广播信号且存在碰撞瓶颈,无法同时处理多路传输,因此交换机整体转发能力显著高于集线器。

3、路由器的包转发操作

3.1、路由器的基本知识

我们来看一下路由器的内部结构

image.png 路由器通过转发模块(类似IP模块)查询IP路由表确定包转发目标,端口模块(类似网卡)负责按对应通信技术(以太网、无线局域网、ADSL等)收发包:接收时以目标身份接收以太网包,转发时以源身份将包发送到下一跳,实现跨网络传输;与交换机仅基于MAC地址在局域网内转发不同,路由器支持多网络互联和协议转换,端口模块具备完整发送/接收身份(含MAC和IP地址)。

3.2、关于路由表

路由表的结构如下图所示 image.png 路由器通过路由表(基于IP地址)和交换机通过地址表(基于MAC地址)实现转发目标匹配,二者核心差异在于:路由器仅匹配IP地址的网络号部分(子网掩码确定比特数),忽略主机号;而交换机需完全匹配MAC地址。路由表包含目标网络号(子网号)和子网掩码信息,用于高效定位包的下一跳转发路径。
路由表记录维护的方式和交换机也有所不同。交换机中对MAC地址表的维护是包转发操作中的一个步骤,而路由器中对路由表的维护是与包转发操作相互独立的,也就是说,在转发包的过程中不需要对路由表的内容进行维护。对路由表进行维护的方法有几种,大体上可分为以下两类。

  • (a)由人手动维护路由记录
  • (b)根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录

其中(b)中提到的路由协议有很多种,例如RIP、OSPC、BGP等都属于路由协议。

3.3、路由器的收发操作

3.3.1、包的接收

路由器以太网端口接收包的过程与网卡类似:信号经PHY(MAU)模块和MAC模块转换为数字信息,通过FCS校验后检查MAC头部接收方地址,若地址匹配则存入接收缓冲区,否则丢弃(因以太网规则要求仅接收发往本设备的包)。

3.3.2、查询路由表确定输出端口

路由器接收包后丢弃MAC头部,基于IP头部查询路由表转发:通过最长匹配原则(优先匹配网络号比特数更长的记录)确定转发目标,若多条记录网络号长度相同则按跃点计数(数值越小优先级越高)选择;若无匹配记录则丢弃包并发送ICMP消息,这与交换机广播未知包的机制不同,原因在于路由器需避免互联网规模下广播包导致的网络拥塞。
互联网规模下无需手动配置所有转发目标,路由表通过默认路由(子网掩码0.0.0.0)实现兜底转发:当其他路由规则均不匹配时,包会被自动转发到默认网关(接入互联网的路由器),由其对包进行后续处理,这一机制同时适用于子网和具体设备地址,解决了海量目标地址配置难题。

3.3.3、包的有效期与分片

路由器转发包前需更新IP头部的TTL值(每经过一个路由器减1,一般在发送时被设置为64或者128),若TTL降为0则丢弃包,该机制可防止网络环路导致的数据包无限循环,确保即使路由配置错误或临时故障引发异常转发,包也不会永久滞留网络。
路由器转发包时需处理MTU适配问题:若输出端口MTU小于输入端口或协议头部增加导致包超长,则通过IP分片功能拆分包(仅拆分IP层及以下数据,保留TCP头部完整),每片更新IP头部分片字段;若协议禁止分片则丢弃包并通知发送方。此分片机制独立于TCP的传输层拆分,旨在适配不同链路的物理传输限制。

image.png

3.3.4、执行发送

路由器完成转发准备后,通过输出端口按对应通信协议(如以太网)发送包:以以太网为例,需根据路由表网关或目标IP查询ARP缓存获取下一跳MAC地址,填入MAC头部(发送方为本端口MAC,类型字段为0x0800),最终转换为电信号发出;全双工模式下可直接发送,半双工模式需避让冲突;包经交换机逐跳抵达目标,每跳均由下一设备继续转发。 路由器的包转发工作到这里就基本上结束了。

3.4、路由器与交换机的关系

IP协议与以太网(或其他通信技术)的关系本质是​​分层委托传输​​:IP层(路由器)负责规划全局路径,将包封装进不同通信技术的数据部分(如以太网帧、无线帧等),委托底层技术逐跳传输至下一跳设备(如下一个路由器);而以太网等底层技术仅负责本地链路内的可靠传输,不关心最终目的地。这种设计使得IP能灵活适配多种通信媒介(有线、无线、专线等),构建出可扩展的互联网架构。

​核心逻辑​​:

  1. ​IP层(路由器)​​:确定转发目标(下一跳IP),封装MAC头部(委托传输至下一跳),不直接处理物理传输。
  2. ​链路层(交换机/无线设备)​​:仅处理本地链路传输(如以太网帧转发、无线信号发送),依赖IP层提供的目标MAC地址。
  3. ​扩展性​​:替换底层技术(如以太网→无线局域网)不影响IP层逻辑,实现跨网络无缝通信。

3.5、路由器的附加功能

3.5.1、通过地址转换有效利用ip地址

互联网早期采用固定公有IP地址直接接入设备,但随着设备爆发式增长,IP地址面临枯竭。解决方案的核心是​​私有地址分层隔离​​:

  1. ​私有地址范围​​:定义三类专用于内网的地址段(10.0.0.0~10.255.255.255,172.16.0.0~172.31.255.255,192.168.0.0~192.168.255.255),企业可自由分配且无需申请,只要内网不重复即可。
  2. ​内外网隔离通信​​:内网设备通过私有地址通信,访问互联网时需经路由器/防火墙进行​​地址转换(NAT)​​——将私有IP替换为公有IP,使内网设备能“共享”少量公有IP访问外网,同时隐藏内网结构提升安全性。

​关键点​​:NAT通过复用公有IP解决地址不足问题,并成为内网与互联网互联的必备机制。

image.png

3.5.2、地址转换的基本原理

​地址转换(NAT)具体工作流程​

  1. ​内网→外网(出向包改写)​

    • 路由器将私有IP包的​​源IP​​(如192.168.1.100)替换为自身公有IP(如203.0.113.1),并随机分配一个​​临时端口​​(如50000)。
    • 记录映射关系(私有IP:端口 → 公有IP:端口)至NAT表,例如:
      192.168.1.100:54321 → 203.0.113.1:50000
  2. ​外网→内网(入向包还原)​

    • 服务器返回的包目标地址为公有IP和临时端口(203.0.113.1:50000),路由器查询NAT表,将​​目标IP:端口​​还原为私有IP:端口(192.168.1.100:54321),再转发至内网设备。
  3. ​连接终止​

    • 通信结束后,NAT表中对应记录被删除,释放临时端口。

​关键点​​:NAT通过动态映射私有与公有地址+端口,使内网设备共享少量公有IP访问互联网,同时隐藏内网拓扑提升安全性。家庭/企业网络均适用此机制。

image.png

3.5.3、路由器的包过滤功能

包过滤也是路由器的一个重要附加功能,刚才的地址转换看起来有点复杂,不过包过滤的机制并不复杂。包过滤就是在对包进行转发时,根据MAC头部、IP头部、TCP头部的内容A,按照事先设置好的规则决定是转发这个包,还是丢弃这个包。我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的。

总结

经过前面一系列的流程,客户端发出的包就正式进入互联网内部了。互联网内部的结构相对复杂,主要包含ADSL接入网、光纤接入网FTTH、PPP和隧道的概念、运营商内部和运营商之间的网络结构。此外还包括WEB服务器部署、防火墙的概念、CDN等等,这些内容偏向硬件,不在本系列的介绍意图内。因此,我将在下一章挑一些有趣且相对重要的内容分享给大家。