IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络-学习路由器 -> 正文阅读

[网络协议]计算机网络-学习路由器

记录一下学习笔记,这篇大多参考《网络是怎么连接的》,感兴趣的同学建议直接读这本书,我这里做一些自己的笔记

  • 路由器是什么
  • 路由器的工作原理
  • 路由器是如何连上互联网的
  • 路由器和交换机的区别

路由器是什么

在这里插入图片描述
路由器是连接两个或多个网络的硬件设备,在网络间起网关的作用。简单来说,路由器就是用来连接两个或多个不同的局域网的。即一个局域网里面的网络请求要访问外面,就需要路由器作为网关,通过路由器访问出去。

路由器就是用来连接两个或多个不同的局域网的

在这里插入图片描述

路由器的每个端口都相当一个网卡,都有IP地址,每个端口都可以连接一个局域网,而且每个端口的IP和连接的局域网是同一个网段

路由器也是特殊的计算机,可以理解为精简的计算机,专门用来处理网络层,作为网关使用,所以我们的计算机也可以作为路由器,但是我们的计算机包含的功能更多,即计算机包含路由器。
? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?? ? ? ? ? ? 在这里插入图片描述

路由器是如何工作的

路由器的基本原理

路由器的工作位于TCP/IP协议的第三层网络层,前一篇博客讲的交换机位于底层数据链路层。路由器在网络层把数据链路层的数据包接收进来,然后IP是否是给自己的,是的话就接收,不是则丢弃。
在这里插入图片描述

路由器的各个端口都具有 MAC 地址和 IP 地址

路由器转发包和上一篇的交换机转发包类似,路由器在转发包时,首先会通过端口将发过来的包接收进来,这一步的工作过程取决于端口对应的通信技术。对于以太网端口来说,就是按照以太网规范进行工作,而无线局域网端口则按照无线局域网的规范工作,总之就是委托端口的硬件将包接收进来。接下来,转发模块会根据接收到的包的 IP 头部中记录的接收方 IP 地址,在路由表中进行查询,以此判断转发目标。然后,转发模块将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去,也就是转发模块委托端口模块将包发送出去的意思。这就是路由器的基本原理

再做一些补充。刚才我们讲到端口模块会根据相应通信技术的规范来执行包收发的操作,这意味着端口模块是以实际的发送方或者接收方的身份来收发网络包的。以以太网端口为例,路由器的端口具有 MAC 地址 ,因此它就能够成为以太网的发送方和接收方 。端口还具有 IP 地址,从这个意义上来说,它和计算机的网卡是一样的。当转发包时,首先路由器端口会接收发给自己的以太网包 ,然后查询转发目标,再由相应的端口作为发送方将以太网包发送出去。这一点和交换机是不同的,交换机只是将进来的包转发出去而已,它自己并不会成为发送方或者接收方

路由表是怎么样的?

路由器是基于IP设计的,故路由器是根据IP来转发数据包的,,但是交换机是根据MAC地址转发的,里面有一张MAC地址表,所以路由器内部也有一张路由表,根据路由表里面的IP来转发相应的端口。

其实我们本地的计算机也有路由表,我们可以看看在windows按win+R输入cmd,打开命令函,输入route print可以看到本机的路由表
在这里插入图片描述
在这里插入图片描述

名称结束
目标地址网段,实际上这里的 IP 地址只包含表示子网的网络号部分的比特值,而表示主机号部分的比特值全部为 0,路由器会将接收到的网络包的接收方 IP地址与路由表中的目标地址进行比较,并找到相应的记录。交换机在地址表中只匹配完全一致的记录,而路由器则会忽略主机号部分,只匹配网络号部分
子网掩码此列显示目标地址的子网掩码,真正的网络号是通过IP地址和子网掩码与运算得出,目标地址和子网掩码是用来计算目标网络号的
网关根据目标地址和子网掩码匹配到某条记录后,路由器就会将网络包交给接口列中指定的网络接口(即端口),并转发到网关列中指定的 IP 地址,如果网关IP为空,则目标地址就是实际的转发IP地址
接口本路由器的出口ip
跃点数跃点计数,它表示距离目标 IP 地址的距离是远还是近。这个数字越小,表示距离目的地越近;数字越大,表示距离目的地越远 。一般情况下,如果有多条到达相同目的地的路由记录,路由器会采用metric值小的那条路由

注:
在链路上,表示数据传输不经过其他网络和路由器,即目标地址和当前路由是在同一局域网里面,不需要再经过下一跳的路由器

描述目标地址是怎么匹配目的IP地址
这里得先简单复习一下子网掩码,子网是用来区分我们的IP地址的网络号和主机号的
例如我们查看IP地址,我们的IP地址是192.168.1.20,子网掩码:255.255.255.0,即192.168.1.20/24,那么就表示192.168.1是IP段的网络号,后面的20是这个IP段的主机号。

在匹配地址的过程中,路由器需要知道网络号的比特数,因此路由表中还有一列子网掩码,通过这个值就可以判断出网络号的比特数。匹配数据包和路由器的目标地址对上的网络号的记录即可。

为什么需要子网掩码区分网络号和主机号
就好比寄快递一样,得写明哪个小区哪个房间号,小区就像网络号,房间号就像主机号。写明了快递员就可以把东西寄到相应的小区,再由小区转发到房间号,这样分类效率大幅提高。所以我们在路由器也是这样,找到对应网络号的就转出去就可以了,如果没有网络号,路由器就要保存大量主机号的IP,数据量多时每次查询效率就会很低,如果有网络号路由器保存的记录就会减少很多。

路由聚合
有一些例外,有时地址本身的子网掩码和路由表中的子网掩码是不一致的,这是路由聚合的结果。路由聚合会将几个子网合并成一个子网,并在路由表中只产生一条记录。要搞清楚这个问题,我们还是看一个例子。如图 3.14 所示,我们现在有 3 个子网,分别为路由器会忽略主机号,只匹配网络号。10.10.1.0/24、10.10.2.0/24、10.10.3.0/24,路由器 B 需要将包发往这 3 个子网。在这种情况下,路由器 B 的路由表中原本应该有对应这 3 个子网的 3条记录,但在这个例子中,无论发往任何一个子网,都是通过路由器 A 来进行转发,因此我们可以在路由表中将这 3 个子网合并成 10.10.0.0/16,这样也可以正确地进行转发,但我们减少了路由表中的记录数量,这就是路由聚合。经过路由聚合,多个子网会被合并成一个子网,子网掩码会发生变化,同时,目标地址列也会改成聚合后的地址。
在这里插入图片描述

还有一种情况,如果子网掩码为 255.255.255.255,也就是说地址中的全部 32 个比特都为 1。这样一来,主机号部分比特全部为 0 可以表示一个子网,主机号部分比特不全部为 0 可以表示某一台计算机,这种情况表示目标地址就是实际的主机号,和路由器在同一局域网上。

路由表匹配到多条记录如何处理

如果匹配符合的记录有多个,例如192.168.1.10匹配到路由表的目标地址的两行记录:192.168.1.0/24,192.168.1.10/32,这种情况,路由器首先寻找网络号比特数最长的一条记录 。网络号比特数越长,说明主机号比特数越短,也就意味着该子网内可分配的主机数量越少,即子网中可能存在的主机数量越少,这一规则的目的是尽量缩小范围,所以根据这条记录判断的转发目标就会更加准确。

然而,有时候路由表中会存在网络号长度相同的多条记录,例如考虑到路由器或网线的故障而设置的备用路由就属于这种情况。这时,需要根据跃点计数的值来进行判断。跃点计数越小说明该路由越近,因此应选择跃点计数较小的记录。

找不到匹配路由时选择默认路由
路由器的IP如果匹配不到,就会直接丢失,不会像交换机一样广播。但是实际我们路由表还有一行默认路由(发往更高层级的路由),目标地址为0.0.0.0,子网掩码为 0.0.0.0的记录,即匹配所有IP,如果找不到其他网络号更长的记录,就会把数据包转发到默认的路由记录上去。

路由表中子网掩码为 0.0.0.0 的记录表示“默认路由”。

如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMPA 消息告知发送方 。这里的处理方式和交换机不同,原因在于网络规模的大小。交换机连接的网络最多也就是几千台设备的规模,这个规模并不大 。如果只有几千台设备,遇到不知道应该转发到哪里的包,交换机可以将包发送到所有的端口上,虽然这个方法很简单粗暴,但不会引发什么问题。然而,路由器工作的网络环境就是互联网,它的规模是远远大于以太网的,全世界所有的设备都连接在互联网上,而且规模还在持续扩大,未来的互联网里到底会有多少设备,我们谁都说不准。在如此庞大的网络中,如果将不知道应该转发到哪里的包发送到整个网络上,那就会产生大量的网络包,造成网络拥塞。因此,由器遇到不知道该转发到哪里的包,就会直接丢弃。

为什么路由器不能找不到对应IP,不能像交换机一样广播?因为路由器连接了多个局域网,可能还连接了互联网,连接的设备数量非常大,广播会形成网络拥塞,而交换机只连接了一个局域网,里面的设备有限,所以路由器遇到找不到的IP匹配的记录,就会丢掉。

路由表的记录是如何维护的
但是默认路由是怎么配置上去的?正常是通过路由协议自动发现路由器之间的其他路由器后自动配置的。

路由表记录维护的方式和交换机也有所不同。交换机中对 MAC 地址表的维护是包转发操作中的记录MAC地址,而路由器中对路由表的维护是与包转发操作相互独立的,也就是说,在转发包的过程中不需要对路由表的内容进行维护。对路由表进行维护的方法有几种,大体上可分为以下两类。

  • (a)由人手动维护路由记录
  • (b) 根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录其中(b)中提到的路由协议有很多种,例如 RIP、OSPC、BGP 等都属于路由协议。

路由器具体的工作流程
在这里插入图片描述

来看一看路由器的整个工作过程。
首先,路由器是工作在网络层的,路由器会接收网络包。路由器的端口有各种不同的类型,这里我们只介绍以太网端口是如何接收包的。以太网端口的结构和计算机的网卡基本相同,接收包并存放到缓冲区中的过程也和网卡几乎没有区别。首先,信号到达网线接口部分,将信号转换为数字信息,然后通过包末尾的 FCS 进行错误校验,如果没问题则检查 MAC 头部中的接收方 MAC 地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。如果包的接收方 MAC地址不是自己,说明这个包是发给其他设备的,如果接收这个包就违反了以太网的规则。

路由器的端口都具有 MAC 地址,只接收与自身地址匹配的包, 遇到不匹配的包则直接丢弃。

完成包接收操作之后,路由器就会丢弃包开头的 MAC 头部。MAC 头部的作用就是将包送达路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址。因此,当包到达路由器之后,MAC 头部的任务就完成了,于是 MAC 头部就会被丢弃。

通过路由器转发的网络包,其接收方 MAC 地址为路由器端口的MAC 地址。

然后根据包里面发送的目的地IP地址,在路由表中进行匹配,匹配到的记录,如果网关IP不为空,则网关IP是发往下一个的地址,如果网关为空,则目标地址的IP是发往下一个的地址。这里我们有了发往下一个地址的IP,但是在重新封装包的时候需要写入的下一个地址的MAC地址,这个时候我们还不知道下一个地址的MAC地址,知道对方的 IP 地址之后,接下来需要通过 ARP 根据 IP 地址查询 MAC 地址,并将查询的结果作为接收方MAC 地址。路由器也有 ARP 缓存,因此首先会在 ARP 缓存中查询,如果找不到则发送 ARP 查询请求。

路由器也会使用 ARP 来查询下一个转发目标的 MAC 地址。
在这里插入图片描述

把查询到的MAC头部加入数据包(上一个MAC地址包被丢掉),最后网络包封装完成后,接下来会将其转换成电信号并通过端口发送出去。这一步的工作过程和计算机也是相同的。如果输出端口为以太网,则发送出去的网络包会通过交换机到达下一个路由器。由于接收方 MAC 地址就是下一个路由器的地址,所以交换机会根据这一地址将包传输到下一个路由器。
在这里插入图片描述

接下来,下一个路由器会将包转发给再下一个路由器,经过层层转发之后,网络包就到达了最终的目的地。

路由器是如何连上互联网的

你的电脑先在应用层打包一个 HTTP报文,然后在传输层在打包成 TCP报文,然后再根据 DNS 查到的 IP 在网络层打包成 IP数据报,然后在通过链路层打包成以太网数据帧,发送给你的交换机。交换机收到后,重新包装数据帧,再发送给路由器,路由器根据路由表查询转发的下一个路由IP,然后根据ARP协议获取下一个转发的IP的MAC地址,路由器重新封装包发给下一个路由,经过互联网的多个路由接力,随着这一过程反复执行,包就会最终到达 IP 的目的地,被服务器接收到,服务器程序处理完后返回这一网页的HTTP报文,再传输回给用户,这样用户的电脑就能看到服务器返回的网页了。

在这里插入图片描述
在这里插入图片描述

路由器和交换机的区别

要理解两者之间的关系,关键点在于计算机在发送网络包时,或者是路由器在转发网络包时,都需要在前面加上 MAC 头部。之前的讲解都是说在开头加上 MAC 头部,如果看图 3.16 大家可以发现,准确的说法应该是将 IP 包装进以太网包的数据部分中。也就是说,给包加上 MAC 头部并发送,从本质上说是将 IP 包装进以太网包的数据部分中,委托以太网去传输这些数据。IP 协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行。路由器是基于 IP 设计的,而交换机是基于以太网设计的,因 此 IP 与以太网的关系也就是路由器与交换机的关系。详细的后面再总结一篇《计算机网络-路由器和交换机的区别》
在这里插入图片描述

参考:

户根勤《网络是怎样连接的》

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章           查看所有文章
加:2021-08-06 21:15:20  更:2021-08-06 21:15:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:46:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码