| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 计算机网络-学习路由器 -> 正文阅读 |
|
[网络协议]计算机网络-学习路由器 |
记录一下学习笔记,这篇大多参考《网络是怎么连接的》,感兴趣的同学建议直接读这本书,我这里做一些自己的笔记
路由器是什么
路由器也是特殊的计算机,可以理解为精简的计算机,专门用来处理网络层,作为网关使用,所以我们的计算机也可以作为路由器,但是我们的计算机包含的功能更多,即计算机包含路由器。 路由器是如何工作的路由器的基本原理路由器的工作位于TCP/IP协议的第三层网络层,前一篇博客讲的交换机位于底层数据链路层。路由器在网络层把数据链路层的数据包接收进来,然后IP是否是给自己的,是的话就接收,不是则丢弃。
路由器转发包和上一篇的交换机转发包类似,路由器在转发包时,首先会通过端口将发过来的包接收进来,这一步的工作过程取决于端口对应的通信技术。对于以太网端口来说,就是按照以太网规范进行工作,而无线局域网端口则按照无线局域网的规范工作,总之就是委托端口的硬件将包接收进来。接下来,转发模块会根据接收到的包的 IP 头部中记录的接收方 IP 地址,在路由表中进行查询,以此判断转发目标。然后,转发模块将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去,也就是转发模块委托端口模块将包发送出去的意思。这就是路由器的基本原理
路由表是怎么样的?路由器是基于IP设计的,故路由器是根据IP来转发数据包的,,但是交换机是根据MAC地址转发的,里面有一张MAC地址表,所以路由器内部也有一张路由表,根据路由表里面的IP来转发相应的端口。 其实我们本地的计算机也有路由表,我们可以看看在windows按win+R输入cmd,打开命令函,输入route print可以看到本机的路由表
描述目标地址是怎么匹配目的IP地址 在匹配地址的过程中,路由器需要知道网络号的比特数,因此路由表中还有一列子网掩码,通过这个值就可以判断出网络号的比特数。匹配数据包和路由器的目标地址对上的网络号的记录即可。 为什么需要子网掩码区分网络号和主机号 路由聚合
路由表匹配到多条记录如何处理 如果匹配符合的记录有多个,例如192.168.1.10匹配到路由表的目标地址的两行记录:192.168.1.0/24,192.168.1.10/32,这种情况,路由器首先寻找网络号比特数最长的一条记录 。网络号比特数越长,说明主机号比特数越短,也就意味着该子网内可分配的主机数量越少,即子网中可能存在的主机数量越少,这一规则的目的是尽量缩小范围,所以根据这条记录判断的转发目标就会更加准确。 然而,有时候路由表中会存在网络号长度相同的多条记录,例如考虑到路由器或网线的故障而设置的备用路由就属于这种情况。这时,需要根据跃点计数的值来进行判断。跃点计数越小说明该路由越近,因此应选择跃点计数较小的记录。 找不到匹配路由时选择默认路由
如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMPA 消息告知发送方 。这里的处理方式和交换机不同,原因在于网络规模的大小。交换机连接的网络最多也就是几千台设备的规模,这个规模并不大 。如果只有几千台设备,遇到不知道应该转发到哪里的包,交换机可以将包发送到所有的端口上,虽然这个方法很简单粗暴,但不会引发什么问题。然而,路由器工作的网络环境就是互联网,它的规模是远远大于以太网的,全世界所有的设备都连接在互联网上,而且规模还在持续扩大,未来的互联网里到底会有多少设备,我们谁都说不准。在如此庞大的网络中,如果将不知道应该转发到哪里的包发送到整个网络上,那就会产生大量的网络包,造成网络拥塞。因此,由器遇到不知道该转发到哪里的包,就会直接丢弃。
路由表的记录是如何维护的 路由表记录维护的方式和交换机也有所不同。交换机中对 MAC 地址表的维护是包转发操作中的记录MAC地址,而路由器中对路由表的维护是与包转发操作相互独立的,也就是说,在转发包的过程中不需要对路由表的内容进行维护。对路由表进行维护的方法有几种,大体上可分为以下两类。
路由器具体的工作流程 来看一看路由器的整个工作过程。
完成包接收操作之后,路由器就会丢弃包开头的 MAC 头部。MAC 头部的作用就是将包送达路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址。因此,当包到达路由器之后,MAC 头部的任务就完成了,于是 MAC 头部就会被丢弃。
然后根据包里面发送的目的地IP地址,在路由表中进行匹配,匹配到的记录,如果网关IP不为空,则网关IP是发往下一个的地址,如果网关为空,则目标地址的IP是发往下一个的地址。这里我们有了发往下一个地址的IP,但是在重新封装包的时候需要写入的下一个地址的MAC地址,这个时候我们还不知道下一个地址的MAC地址,知道对方的 IP 地址之后,接下来需要通过 ARP 根据 IP 地址查询 MAC 地址,并将查询的结果作为接收方MAC 地址。路由器也有 ARP 缓存,因此首先会在 ARP 缓存中查询,如果找不到则发送 ARP 查询请求。
把查询到的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地址范围 |
|
上一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/27 13:32:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |