一、问题背景:访问一个网页【开源中国】速度特别慢,作为一个技术控,以前cdn行业的从业者,这我肯定不能忍耶,那就搞它
二、解决方法:
1、打开平时测试网速的网站,把访问慢的网址【https://www.oschina.net/】放到DNS里面去解析,根据DNS解析找到最近一个访问的IP
测试网速的网站:
http://tool.chinaz.com/dns/?type=1&host=www.oschina.net%2Fhome%2Fopenid&ip=
2、在本地电脑目录【C:\Windows\System32\drivers\etc】:hosts文件中添加对应 IP 和域名,并保存hosts文件
3、之后打开命令行【WIN+R;输入cmd;回车】
4、刷新本地DNS加速:【在命令提示符下输入ipconfig /flushdns,如下图所示】
5、之后刷新网页,测试访问速度有无提升?
结果就是速度比之前好太多
三、此次网页加速原理:
因为通常你输入没被本地【C:\Windows\System32\drivers\etc\hosts】缓存的域名,他都要去dns服务器去查对应的服务器IP,然后再去访问IP;减少去别的DNS服务器解析之一步的时间,直接访问这个IP地址;缩短网页打开时间
如果你想进一步对网页加速,提高体验感知,可以使用CDN加速;通常这是网站拥有者考虑的,如果阁下财大气粗,可以直接联系CDN厂家把你要访问网址域名给CDN厂家加速。我知道CDN厂家有:网宿、白山云、阿里、腾讯、华为;若是想了解CDN加速的原理;可以参考一下这篇文章:
四、接下来我就给大家说说这个DNS是个啥?
IP 地址:一长串能够唯一地标记网络上的计算机的数字
域名:又称网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)比如 www.baidu.com
1、DNS协议:域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址);
2、DNS活在OSI的那一层?
和HTTP一样,都是活在应用层的家伙。
3、DNS服务器归谁管?
全世界域名的最高管理机构,是一个叫做 ICANN (Internet Corporation for Assigned Names and Numbers)的组织,总部在美国加州。ICANN 负责管理全世界域名系统的运作。
4、DNS层次的划分?
从上到下依次为:根域名、顶级域名(top level domain,TLD)、二级域名、(三级域名)
① 根域名服务器:上面我有说ICANN公司,ICANN 维护着一张根域名列表,里面记载着顶级域名和对应的托管商,其实根域名列表的正式名称是 DNS 根区(DNS root zone),保存 DNS 根区文件的服务器,就叫做 DNS 根域名服务器(root name server)。根域名服务器保存所有的顶级域名服务器的地址;由于早期的 DNS 查询结果是一个 512 字节的 UDP 数据包。这个包最多可以容纳 13 个服务器的地址,因此就规定全世界有 13 个根域名服务器,编号从 a.root-servers.net 一直到 m.root-servers.net。其中 10 台设置在美国,另外各有一台设置于荷兰、瑞典和日本。随着我国互联网行业迅速发展,下一代IPV6的25台DNS根服务器我国有4台
中国:1主3辅
美国:1主2辅
日本:1主
印度:3辅
法国:3辅
德国:2辅
② 顶级域名服务器
③ 权限域名服务器
5、DNS的查询方式
1)、递归查询:递归查询中,如果 A 请求 B,那么 B 作为请求的接收者一定要给 A 想要的答案;而迭代查询则是指,如果接收者 B 没有请求者 A 所需要的准确内容,接收者 B 将告诉请求者 A,如何去获得这个内容,但是自己并不去发出请求。
2)、迭代查询:迭代就是,如果请求的接收者不知道所请求的内容,那么接收者将扮演请求者,发出有关请求,直到获得所需要的内容,然后将内容返回给最初的请求者。
6、域名缓存方式?
1)、浏览器缓存:浏览器在获取网站域名的实际 IP 地址后会对其进行缓存,减少网络请求的损耗。每种浏览器都有一个固定的 DNS 缓存时间,如 Chrome 的过期时间是 1 分钟,在这个期限内不会重新请求 DNS
2)、操作系统缓存:操作系统的缓存其实是用户自己配置的 hosts 文件。比如 Windows10 下的 hosts 文件存放在 C:\Windows\System32\drivers\etc\hosts
Windows 系统默认开启 DNS 缓存服务,服务名是 DNSClient
,可以缓存一些常用的域名。
查看电脑中缓存的域名;可以使用命令 ipconfig/displaydns
7、 完整域名解析过程
接下来我们结合上面所说的域名服务器之间的 DNS 查询请求过程和域名缓存结合起来,就是一个完整的 DNS 协议进行域名解析的过程。这里我们以正向解析为例(域名解析成 IP 地址):
1)首先搜索浏览器的 DNS 缓存,缓存中维护一张域名与 IP 地址的对应表;
2)若没有命中,则继续搜索操作系统的 DNS 缓存;
3)若仍然没有命中,则操作系统将域名发送至本地域名服务器,本地域名服务器查询自己的 DNS 缓存,查找成功则返回结果(注意:主机和本地域名服务器之间的查询方式是递归查询);
4)若本地域名服务器的 DNS 缓存没有命中,则本地域名服务器向上级域名服务器进行查询,通过以下方式进行迭代查询(注意:本地域名服务器和其他域名服务器之间的查询方式是迭代查询,防止根域名服务器压力过大):
首先本地域名服务器向根域名服务器发起请求,根域名服务器是最高层次的,它并不会直接指明这个域名对应的 IP 地址,而是返回顶级域名服务器的地址,也就是说给本地域名服务器指明一条道路,让他去这里寻找答案
本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址
本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的 IP 地址
5)本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来
6)操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来
7)至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起来
配合下图直观理解:
五、生活在应用层的协议有哪些?
应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。
(1)域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务。
(2)文件传输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。
FTP是一种文件传输协议,它支持两种模式:
一种方式叫做 Standard (也就是 Active,主动模式);
一种是 Passive (也就是 PASV,被动模式)。
(3)简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能
SMTP 交互过程:
(4)超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。是一个属于应用层的面向对象的协议,它是基于 TCP(Transfer Control Protocol, 传输控制协议)的可靠传输,采用的是客户端/服务器的工作模式。在 HTTP 通信过程中,首先由客户端向服务器发起建立链接的请求,通过 TCP三次握手来完成,然后客户端向服务器发出请求,告诉服务器想得到的信息。服务器通过响应返回客户端需要的信息。最后通过 TCP 四次握手关闭链接,从而完成一次基本的通信过程。
(5)简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。
(6)远程登录协议(Telnet):用于实现远程登录功能。
原文链接:https://cdn.modb.pro/db/182884
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/16290