路由器的工作原理

今天我们要讲一个网络中非常重要的网络设备-路由器,不管你是小白还是有一定基础的技术工程师,看完这期视频,你都能搞懂路由器的工作原理,会对路由转发机制有一个完全成体系的理解。如果你当前没有耐心看完,可以先点赞收藏,等你有时间的时候慢慢看。

好了,我们正式开始,首先我们需要明确路由器是什么?它是一种连接不同网络的设备,负责在不同网络之间转发数据包。请注意,是"不同网络"之间,也就是不同局域网之间。它与交换机在"同一网络"内部转发的角色有着本质区别。

假设:一台主机 A要访问另一台主机 B,,主机A的ip是192.168.1.2,主机B的IP是10.0.0.2,根据ip地址得知它们分布在不同网段,这时候就需要走路由器。

我们把路由器的转发过程分四个阶段。

第一阶段:源主机的封装与决策。

很多人以为路由转发是从路由器开始的,错。路由的起点,其实是在源主机A上。当主机A的应用层产生数据,经过TCP封装、IP封装后,生成了一个IP报文。源IP是A的ip,目的IP是B的ip。

这时候,主机A的网络协议栈会进行第一次"路由决策"。它会拿自己的子网掩码和自己的IP算出自己所在的网段,然后去跟目的IP(10.0.0.2)做比较。结果发现,目的IP跟自己不在同一个网段。这时候,协议栈就知道:这个包我不能直接发给B,我必须发给我的"默认网关",即路由器。

假设路由器与主机A连接的接口IP是192.168.1.1。注意了,重点来了。主机A要发数据给网关,它知道网关的IP,但数据链路层传输需要的是MAC地址。主机A怎么知道网关的MAC地址?这时候ARP协议登场。主机A查自己的ARP缓存表:有没有192.168.1.1对应的MAC?如果有,直接用;如果没有,主机A会广播发送一个ARP Request:"谁是192.168.1.1?请告诉我你的MAC。"网关收到广播后,单播回复自己的MAC地址。拿到网关的MAC后,主机A完成二层帧的封装。请各位在脑海里画出这个数据帧的结构: 二层帧头里,源MAC是主机A,目的MAC是网关; 三层IP头里,源IP是主机A,目的IP是主机B。这一步非常关键:目的IP是终点,但目的MAC只是下一跳。

第二阶段:路由器的入站处理。

数据包顺着网线,飞到了路由器的入接口。路由器会先检查二层帧头的FCS,即帧校验序列,确保传输没出错。如果出错了,直接丢弃。接着检查帧头的目的MAC地址。 确认是自己的接口mac地址后便把二层帧头"剥掉",把里面的IP报文提取出来,这叫"解封装"。此时,路由器手里拿到了原始的IP报文。

路由器首先会做几个基本检查: 第一,检查IP头部的校验和,确保IP头没坏。 第二,也是最重要的一点,检查TTL值。 TTL是Time To Live的缩写,指的是数据包的生存时间,每经过一台路由器,TTL必须减1。路由器会看,减1之后,TTL是不是变成0了?如果变成0,说明这个包在网络里转圈圈转太久了,为了防止环路风暴,路由器会直接丢弃这个包,并向源主机发送一个ICMP"超时"差错报文。

第三阶段:查路由表。如果TTL大于0,好,继续下一步,查路由表,这是路由器的核心动作。路由器需要根据目的IP(10.0.0.2),决定从哪个接口把包送出去,以及送给谁。路由表是存储在路由器内存中的一张决策表。每一条路由条目都包含几个核心信息:1. 目的网络: 指明一个IP地址范围(例如,192.168.1.0/24)。2. 下一跳: 指出为了到达目的网络,数据包应该被传递给的下一个路由器的IP地址。3. 出接口: 指明数据包应该从路由器自身的哪个物理接口发送出去。

在路由表中,路由器执行"最长匹配原则"。 什么意思?假设路由表里有两条路由: 一条是 10.0.0.0/8,下一跳出接口是接口1; 一条是 10.0.0.0/24,下一跳出接口是接口2。 我们的目的IP是10.0.0.2。这两个路由条目都匹配,选哪个?选掩码最长的那个,也就是/24。因为掩码越长,网络范围越小,路由越精确。

通过查路由表,路由器得出了两个关键信息:1. 出接口;2. 下一跳IP:如果目的IP就在直连网段,下一跳就是目的IP本身;如果还需中转,下一跳就是下一个路由器的接口IP。

第四阶段:封装与转发查到了出接口,包就能发走了吗?还不行。在转发之前,路由器会对IP数据包头部进行两项必要修改:1. TTL减1: TTL(生存时间)字段用于防止数据包在网络中无限循环。每经过一台路由器,TTL值就减1。如果TTL值减为0,路由器将丢弃该数据包,并通常向源地址发送一个超时消息。2. 重新计算头部校验和: 由于TTL字段已被改变,IP头部的校验和必须随之更新。

接着,路由器进行重新封装,数据包要离开路由器,必须重新穿上"二层"的衣服,也就是重新封装帧头。这是路由转发中最容易被初学者忽视,也是面试中经常问到的:IP包每经过一个路由器,源MAC和目的MAC都会变。路由器的出接口mac,变成了新的"源MAC"。 那"目的MAC"是谁?是最终主机B的MAC吗? 不一定。 如果路由器直接连接主机B,那目的MAC就是主机B。 如果路由器后面还有路由器,那目的MAC就是下一个路由器的入接口MAC。

完成二层封装后,路由器将这个新的数据帧放入出接口的发送队列,最终通过物理链路传输出去。数据包便离开了这台路由器,前往路径上的下一个节点。至此,路由器的整个路由转发流程完成。

到了这里有人会问,那路由表是怎么产生的?路由表不是天生就有的,有三个来源,直接决定路由器的适用场景:

1、直连路由:路由器接口配置 IP 并启用后,自动生成的路由,对应接口所在的网段。比如 LAN 口配置 192.168.1.1/24,路由表会自动添加 "目标网络 192.168.1.0/24,下一跳直连,出接口 LAN 口" 的条目,无需手动配置。

2、静态路由:网络管理员手动添加的路由条目。适合小型、拓扑固定的网络。

3、动态路由:路由器通过动态路由协议(比如 OSPF、BGP、RIP)和其他路由器交换路由信息,自动生成的路由。比如 OSPF 适合企业内网,BGP 适合互联网骨干网,能自动适应网络拓扑变化(比如某条链路断了,自动切换到备用路径),适合大型、复杂网络。

最后,我们来总结一下路由转发的整个逻辑:当一个数据包进入路由器:1. 校验与剥离: 检查二层FCS,剥掉二层头。检查IP校验和,TTL减1。2. 决策: 根据目的IP,利用最长匹配原则,在路由表里查找出接口和下一跳。3. 重写: 利用ARP表或邻接表,找到下一跳的MAC地址。将源MAC改为自己,目的MAC改为下一跳。4. 发送: 重新封装三层和二层帧,扔到线路上。

这一套动作,在互联网的主干路由器上,时时刻刻都在发生。正是这套严密、高效、标准化的逻辑,支撑起了我们庞大的网络世界。

相关推荐
Boyle. Z21 小时前
校园网环境中iKuai 二级路由联网与 DNS 优化指南
网络·智能路由器
小鸡脚来咯1 天前
IP 地址冲突/子网重叠问题解决方案
智能路由器
软件小滔1 天前
卫生间WiFi又断了?
网络·macos·智能路由器·mac·应用推荐
Godspeed Zhao1 天前
现代智能汽车中的无线技术18——Wi-Fi(6)
汽车·智能路由器
白狐_7982 天前
【计网全栈通关】第 1 篇:体系结构从 OSI 到 TCP/IP
计算机网络·智能路由器
菜择贰2 天前
计算机网络课设
网络·计算机网络·智能路由器
zbtlink3 天前
现在还需要带电池的路由器吗?是用来干嘛的?
网络·智能路由器
xflySnail3 天前
nas服务域名高速访问-获取公网IP和端口
网络·tcp/ip·智能路由器
DO your like4 天前
手机热点搭建个人局域网
服务器·智能手机·智能路由器