计算机网络-学习路由器_路由学习-程序员宅基地

技术标签: 路由器的工作原理  路由器  计算机网络-路由器  计算机网络  

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

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

路由器是什么

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

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

在这里插入图片描述

路由器的每个端口都相当一个网卡,都有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 与以太网的关系也就是路由器与交换机的关系。详细的后面再总结一篇《计算机网络-路由器和交换机的区别》
在这里插入图片描述

参考:

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_21187515/article/details/119383038

智能推荐

240320俄罗斯方块java,JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_2-程序员宅基地

文章浏览阅读202次。packagecode;//importjava.awt.*;//importjava.awt.Canvas;//importjava.awt.event.*;//importjavax.swing.*;importjava.util.Random;importjavax.microedition.lcdui.*;//写界面所需要的包/***//***俄罗斯方块*高雷*2007年1..._240×320java游戏

在线电影院售票平台(源码+开题报告)-程序员宅基地

文章浏览阅读779次,点赞14次,收藏19次。然后,实现系统的数据管理和服务功能,包括用户的注册与登录、电影的分类与展示、电影信息的查询与推荐、座位的选择与预订、在线支付与电子票生成等。此外,随着在线视频平台的兴起,越来越多的人选择在线观看电影,这对传统电影院产生了巨大的冲击。研究意义: 开发在线电影院售票平台对于提升用户的观影体验、优化电影院的运营效率、促进电影产业的发展具有重要的意义。该系统旨在通过技术手段解决传统电影院售票中的问题,提供一个集成化的电影信息展示、座位选择、在线支付和用户评价平台,同时也为电影院和电影制作方提供有效的工具。

程序员熬夜写代码,用C/C++打造一个安全的即时聊天系统!_基于c++的即时聊天系统设计-程序员宅基地

文章浏览阅读509次。保护我们剩下的人的通话信息安全,使用TOX可以让你在和家人,朋友,爱人交流时保护你的隐私不受政府无孔不入的的偷窥.关于TOX:其他牛逼的软件因为一些细化服务问你要钱的时候, TOX分文不取 . 你用了TOX, 想干嘛就干嘛.网友评论:项目源码展示:源码测试效果:最后,如果你学C/C++编程有什么不懂的,可以来问问我哦,或许我能够..._基于c++的即时聊天系统设计

linux Java服务swap分区被占用内存泄露问题故障及解决方法_linux swap占用很高-程序员宅基地

文章浏览阅读584次。鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)当Java服务在Linux系统中运行时,可能会出现swap分区被占用的内存泄露问题,导致系统性能下降或者崩溃。下面是该问题的故障及解决方法、底层结构、架构图、工作原理、使用场景详解和实际应用方式、原理详细描述、相关命令使用示例以及文献材料链接。_linux swap占用很高

word中利用宏替换标点标点全角与半角-程序员宅基地

文章浏览阅读662次。Alt+F11,然后插入-模块:复制下面代码到编辑窗口:Sub 半角标点符号转换为全角标点符号()'中英互译文档中将中文段落中的英文标点符号替换为中文标点符号 Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant Dim MyRange..._替换半角宏

Android WebView使用总结_android webview真正加载完成-程序员宅基地

文章浏览阅读2.8k次。#.简介: WebView是Android提供的用来展示展示web页面的View,内部使用webkit浏览器引擎(一个轻量级的浏览器引擎),除了展示Web页面外,还可与Web页面内的JS脚本交互调用。WebView内部的WebSetting对象负责管理WebView的参数配置; WebViewClient负责处理WebView的各种请求和通知事件,在对应事件发生时会执行WebViewClient的对应回调; ChromeWebviewClient辅助Webview处理与JS一些交互......_android webview真正加载完成

随便推点

bitcoin 调试环境搭建-程序员宅基地

文章浏览阅读1.6k次。_bitcoin 调试环境搭建

曲线生成 | 图解B样条曲线生成原理(基本概念与节点生成算法)-程序员宅基地

文章浏览阅读4.3k次,点赞93次,收藏94次。为了解决贝塞尔曲线无法局部修正、控制性减弱、曲线次数过高、不易拼接的缺陷,引入B样条曲线(B-Spline)。本文介绍B样条曲线的基本概念:节点向量、支撑性、次数阶数、加权性质、节点生成算法等,为后续曲线计算打下基础。_样条曲线生成

CDH安装宝典之ClouderaManager_/opt/cloudera/cm-agent/service/mgmt/mgmt.sh: line -程序员宅基地

文章浏览阅读902次。配置本地repo库下载我的阿里云盘文件文件放置#创建目录mkdir -p /opt/cloudera/parcel-repo/mkdir -p /opt/cloudera/cm/yum install createrepoCDH 6.2.0 的三个文件放到/opt/cloudera/parcel-repo/中,并且注意把sha256后缀的文件名修改为sha#执行createrepo命令生成rpm元数据 最终/opt/cloudera/parcel-repo/会多一个repodata目录_/opt/cloudera/cm-agent/service/mgmt/mgmt.sh: line 76: /usr/java/jdk1.8.0_181

uni.canvasToTempFilePath在app正常,微信小程序报错: fail canvas is empty-程序员宅基地

文章浏览阅读943次,点赞2次,收藏2次。uni.canvasToTempFilePath_uni.canvastotempfilepath

SDRAM笔记_sdram 干扰-程序员宅基地

文章浏览阅读3.1k次。SRAM :静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。DRAM:动态RAM,需要刷新,容量大。SDRAM:同步动态RAM,需要刷新,速度较快,容量大。DDR SDRAM:双通道同步动态RAM,需要刷新,速度快,容量大。........................_sdram 干扰

Excel转SQL语句_excel数据怎么生成sql语句-程序员宅基地

文章浏览阅读7.3k次。假设表格有A、B、C、D四列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3、col4。_excel数据怎么生成sql语句

推荐文章

热门文章

相关标签