拉了300M的网,下载速度为啥还是这么慢?计算机基础(五)之网络层完结

大家好,我是后来,我会分享我在学习和工作中遇到的点滴,希望有机会我的某篇文章能够对你有所帮助,所有的文章都会在公众号首发,欢迎大家关注我的公众号" 后来X大数据 ",感谢你的支持与认可。

今天买了一个显示器已经到家了,用着确实爽歪歪。哈哈!得继续写文了,不能对不起它!

上一篇文章,我通过“警察叔叔是怎么顺着网线找到你的 这个话题,为大家讲了IP地址的虚拟性,以及ARP地址解析协议,最后还写到了划分子网和构造超网。其实核心知识就是 地址解析协议ARP,以及IP地址不同的划分规则对应的如何转发分组 ,当然也同时要理解为什么IP地址是虚拟的。这其实就是上一篇文章的核心内容,回看

那么今天继续把网络层的知识讲完,今天的知识和生活息息相关。这张图再次温习一下。必会!!!
在这里插入图片描述
同样还是引出一个话题:拉了300M的网,下载速度为啥还是这么慢?
其实这个问题,我有2个想法

  1. 告诉你为啥你的网速从来没达到300M
  2. 说说路由器的工作原理,让你更了解你的路由器(慢慢讲)

同时今天的重点也先说一下:

  1. 为啥网速这么慢?
  2. 网际控制报文协议ICMP
  3. 路由选择协议,重新认识你家的路由器
  4. IPv6
  5. IP多播
  6. 虚拟专用网VPN和网络地址转换NAT

拉了300M的网,下载速度为啥还是这么慢?

其实这个问题,就是网络商和你玩文字游戏?
我们来看看宣传页
在这里插入图片描述
然而我们下载的速度是这样的:
在这里插入图片描述
那么这个大小写的b差了多少呢?
在计算机世界里,1个字节=8个比特,所以1B=8b
这么一换算,发现300Mb=37.5MB

也就是说你的下载网速理想峰值是37.5MB/s,这是在绝对理想的条件下进行的,所有的传输过程中没有损耗,但是现实生活中是这样的吗?当然不是,经过一些博主多次验证,一般300M的网下载速度一般能达到30MB就很不错了。

如果你多台电脑使用,并且还有一些无线设备连接,那么**这些所有的设备共享这个带宽。**所以网速自然比你想的要慢。

但是请不要忽略路由器的作用!!!
你的路由器是不是只有百兆端口?
你的网线是不是只能传输百兆?

如果是的话,那剩下的200M就被浪费掉了。

说完这个,我们等下接着解决路由器的核心工作原理问题。

你在PING啥?

不少学过计算机的朋友都应该知道这么个命令,在命令行“ping qq.com”来检测自己的是不是有网,有时候是内网,ping一下集群的其他机器,看这些机器通不通,“ping 192.168.X.X”,但是问题是PING的这个命令是怎么实现的?
在这里插入图片描述
它的原理其实是网际控制报文协议ICMP。PING使用了ICMP回送请求与回送回答报文。PING是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。

那么我们来大致介绍下ICMP的原理:

我们之前也说了,IP数据报的传输在网络层是不可靠的,所以在把ICMP报文装在IP数据报中,发送出去。相当于数据报中有个监视器。
它的格式是下面这样的:
在这里插入图片描述
而ICMP的主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。有了这些功能以后,就可以获得网络是否正常、设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断
在这里插入图片描述
于是ICMP报文就分为2类:

  1. 通知出错原因的错误消息(ICMP差错报告报文)
  2. 用于诊断的查询消息(ICMP询问报文)
    在这里插入图片描述
    所以ICMP协议的目的:更加有效的转发IP数据报和提高成功交付的机会

关于ICMP协议大家了解到这么多就可以了,再具体一点的知识有兴趣的可以自行百度。

但是ICMP现在很多时候为了安全考虑,有时会禁用。下图就是黑客一种常用的手段。
在这里插入图片描述

路由器的秘密——路由选择协议

路由器的构成

其实吧,路由器也是个计算机,只不过它是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。

我们在计算机网络开始的时候就提到:互联网=网络的网络,而网络与网络之间是通过路由器连接的

我们在上一篇文章中提到过转发分组,这次换句话说:网络层的数据单元——IP数据包要能够正确到达目的主机,经过路由器时,路由器根据数据包中的目的主机的IP地址与路由控制表的比较得出下一个应该接收的路由器,这就是上一篇文章中提到的转发分组。

现在的问题就是:路由表已经有了,用哪种算法来获得路由表中的需要的那个项目?

这个路由表有多大呢?一般的路由表都有10万条左右的路由项,告诉路由器更多,所以要想快速转发分组,我们希望通过这个算法尽可能最优,减少路由这边的时延。

于是路由算法分为了2大类:

  1. 静态路由选择策略=纯手工,管理员自行设定
  2. 动态路由选择策略=自动更新,适应网络状态的变化,开销大

结果显而易见,目前我们大多使用的都是动态路由选择策略,那么动态路由选择策略是个什么情况呢?就是说:路由器会给相邻的路由器发送自己已知的网络连接信息,那么到最后整个网络的路由控制表就制作完成了。

随着IP网络的发展,想要对所有的网络统一管理是不可能的事,所以为了更好的管理,就把互联网划分为许多较小的自治系统,记为AS。比如以企业为单位,内部使用内网,有些网址只能在公司网访问。所以就有了下面2种路由协议:

  1. 内部网关协议IGP,使用多的如:RIP协议、OSPF协议
  2. 外部网关协议EGP,使用多的是:BGP-4

那么下面大致介绍下这几种协议:

内部网关协议RIP

RIP属于距离向量型的路由协议,它指的是根据距离和方向决定目标网络或目标主机位置的一种方法。
RIP将路由控制信息定期(30秒一次)向全网广播,如果没有收到路由控制信息,最多重试5次,如果都没收到,那么连接就会被断开。
在这里插入图片描述
还记得上面PING的那个案例么?
在这里插入图片描述
看到最后的TTL=52了么,相当于我的主机经过52个路由器就到了qq的这个服务器。

RIP基于距离向量算法决定路径。距离(Metrics)的单位为“跳数”。跳数是指所经过的路由器的个数。 RIP希望尽可能少通过路由器将数据包转发到目标IP地址,根据距离向量生成距离向量表,再 抽出较小的路由生成最终的路由控制表。
在这里插入图片描述
这样的话,每一个路由器到每一个目的网络的路由都是最短的。

内部网关协议OSPF

它主要是分布式的链路状态协议,而不是像RIP一样是距离向量协议。

  1. 向本自治系统中所有路由器发送消息,称为洪泛法
  2. 发送的信息就是与本路由器相邻的所有路由器的链路状态,相当于“到所有网络的距离和下一跳路由器”
  3. 只有当链路状态发生变化,路由器才会发送此消息。而不是和RIP一样,30秒一次!
    在这里插入图片描述
    最后所有的路由器会建立一个完整的链路状态数据库,相当于全网的拓扑结构图,而且这个图在全网范围内是唯一的。
    在这里插入图片描述
    但是互联网实在是太大了,如果把所有的路由器都汇成一张拓扑图,那路由表早就不知道爆了多少次了。
    于是就对一个自治系统划分为若干个更小的范围,叫做区域,每个区域的路由器不超过200个。
    在这里插入图片描述

外部网关协议BGP

上面的两种,只是在管理自治系统内部的路由控制,但是BGP则需要兼顾整个互联网进行路由控制。
在这里插入图片描述
上面讲完了路由器的知识,我们再来聊聊目前特别火的IPv6

IPv6

我们在之前的文章中提到过,IPv4的IP地址在2011年4月就宣布耗尽了,而随着互联网的发展,之前设计IPv6也逐渐开始使用。

IPv6与IPv4最大的区别就是有了更大的地址空间,由之前的32位扩展到128位,可想而知,IP地址理论上最多有2的128次方。

那IPv6会不会有一天被用完呢?这么来说吧,在IPv6中,每个地址占128位,地址空间大于3.4×10的38次方。如果整个地球表面(包括陆地和水面)都覆盖着计算机,那么IPv6允许每平方米拥有7×10的23方个地址。如果地址分配速率是每微秒分配100万个地址,则需要10的19次方 年的时间才能将所有可能的地址分配完毕。可见在想象到的将来,IPv6的地址空间是不可能用完的。

那么我们来看一下IPv6的格式:

  1. 用二进制表示:
    在这里插入图片描述
    16*8=128位
  2. 16进制表示:
    FEDC:BA98:7654:3210:FEDC:BA98:7654:3210

那大家明显发现,这么写肯定很不爽,而且不符合我们平时的书写习惯,于是就有了零压缩,也就是如果有多个连续的0可以用一对冒号所取代。但一般的还是很复杂。比如我电脑的截图如下:
在这里插入图片描述
好了,这个书写方式就不讨论了,
只要记住,冒号代表的是分隔的每个值是16位,点代表的是8位,如下:
在这里插入图片描述
在这里插入图片描述

IPv4向IPv6的过渡

大家也应该注意到了,目前不少大厂的app进入页面都提示已经支持IPv6了,那IPv4过渡IPv6阶段,又没有一个具体的期限说必须哪天之前都过渡完,也不现实,那么过渡阶段这个分组怎么转发呢?这中间也肯定需要两种协议之间的转换。

  1. 双协议栈
  2. 隧道技术

双协议栈

要求双协议的主机或路由去既能够和IPv6的系统通信,也能够和IPv4的系统通信,那么这个主机怎么知道目的主机采用哪种协议呢?它肯定不知道啊,所以它根据域名系统DNS来查询。DNS返回的是IPv6就用IPv6地址。以此类推。

下面这种情况是特别常见的情况,就是中间有一段网络是IPv4怎么办?
B 把IPv6数据报首部转换位IPv4数据报首部再发给C,传递到E后,E再恢复位IPv6。但是IPv6中的有些字段是无法恢复的,这种损失是首部转换方法不可避免的。
在这里插入图片描述

隧道技术

这个技术简单说就是把IPv6在包装一层为IPv4,这样的话也能正常传输,到双协议栈的时候,再把外面这一层去掉,传输IPv6。必须把IPv4首部的协议字段的值设置为41,表示数据报的数据部分是IPv6数据报。
在这里插入图片描述

ICMPv6

IPv6也不保证数据报的可靠交付,所以它也使用ICMP来反馈一些差错信息。那为啥名字不一样呢?那是因为升级了,哈哈,关键是比ICMPv4复杂一些。
在这里插入图片描述

IP多播

其实我们到目前为止,说的比较多的都是点对点的通信,但是还有广播通信这种也是使用非常广泛的,比如各大视频网站,是不是更新资源后,大家都能看到了。

假如说,某视频服务器要给90台主机传送同样的视频节目,这样的话,如果使用单播方式,需要同一个分组发送90个次,等于90个副本,但如果使用多播方式,只需要发送一次,爽不爽!
在这里插入图片描述
这样看起来是爽,具体要实现的话需要路由去能够识别多播数据报,这种路由去称为多播路由器,当然它也可以转发普通的单播数据报。

多播这种方式等于说是:在一个特定的组里,只要组长发消息,你们就能收到。但是怎么能加入这个组。
多播组的标识符就是IP地址中的D类地址,大家还记得么?
在这里插入图片描述
D类IP地址的前4位是1110,所以它的地址范围:224.0.0.0到239.255.255.255。所以我们就用每一个D类地址标识一个多播组。也就是说在同一时间可以允许超过2.6亿的多播组在互联网运行。
这个值在IPv6协议的时候更大。

那么这种多播地址只能用于目的地址,不能用于源地址

虚拟专用网VPN

这个解释,其实百度百科说的是比较明白的,我这里直接引用一下:
在这里插入图片描述
平时我们如果需要访问外网,不也是需要梯子么,那自己搭的梯子其实也是这种原理,首先要有一个境外的服务器,然后利用硬件或者软件,把自己的手机和境外的服务器连起来,就可以科学上网了,但是大家注意安全!!!

网络地址转换NAT

用过虚拟机的小伙伴肯定知道这种方式,一般时候,我们自己电脑的虚拟机都使用NAT的方式,这样的话你的虚拟机要上网等于共享你主机的带宽,而使用了NAT的虚拟机,在点对点的传输中,需要使用网络地址与端口号的转换,因为对外界看起来,IP地址是自己本身主机的,不是虚拟机。

关于标题中提到的问题,我在文章开头就进行了解答与分析,并在其中提到了路由器的路由选择协议。

互联网的正常运转离不开每一个路由器的努力,哈哈,所以,请选一个好一点的路由器也是有道理的。到目前为止,网络层的知识算是讲完了!

关于计算机网络的知识还是非常多的,我学到的也只是其中一点皮毛而已,还是那句话,”在技术领域,我们都要有一颗谦卑的心。“

扫码关注”后来X大数据“,回复【电子书】,领取【超多本pdf java及大数据 电子书】

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章