🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# DNS预解析 ### DNS全称为Domain Name System(域名系统) ### 是域名和IP地址相互映射的一个分布式数据库 ***** 域名解析即通过主机名,最终得到该主机名对应的IP地址的过程。 浏览器对网站第一次的域名DNS解析查找流程依次为: ``` 浏览器缓存-系统缓存-路由器缓存-ISP DNS缓存-递归搜索 ``` ``` 为什么需DNS预解析? DNS解析时间可能导致大量用户感知延迟,DNS解析所需的时间差 异非常大,延迟范围可以从1ms(本地缓存结果)到普遍的几秒 钟时间。所以利用DNS预解析是有意义的。 ``` ``` DNS 实现域名到IP的映射。通过域名访问站点,每次请求都要做 DNS解析。目前每次DNS解析,通常在200ms以下。针对DNS解析 耗时问题,一些浏览器通过DNS Prefetch 来提高访问的流畅性 ``` ### 解决方法:DNS预备解析 ``` DNS预解析是浏览器试图在用户访问链接之前解析域名,这是 计算机的正常DNS解析机制 ``` * DNS产生背景 >在用户与互联网某平台的主机进行通信时,必须知道对方的IP地址,用户很难记住很长的二进制主机地址(32位),即使是十进制的地址也很难记住,但是在应用层为了方便用户记忆各种网络的应用,连接在互联网的主机不仅仅包含IP还有对应的主机名字,我们的域名系统(DNS)就是把主机名转化为计算机可以识别的IP地址 * DNS前身 >早在ARPANET时代,整个网络上只有数百台的计算机,那时候使用一个叫做hosts的文件,列出所有的主机名字和对应的IP地址,只用用户输入对应的主机名字,就可以很快的把主机的名字转化为对应的二进制IP地址 * 插入--> ># IP地址 ![](https://img.kancloud.cn/8d/bf/8dbfb2ca958e222aad23a9b1d2d70121_766x258.png) IP地址是有两部分组成:网络号和主机号 > ip地址根据网络规模可以分为,A类,B类,C类,D类和E类。其中A、B、C是基本类,D、E类作为多播和保留使用。IP地址类型 : > A类从1.0.0.0/8到126.0.0.0/8 (子网掩码默认是:255.0.0.0) > B类从128.0.0.0/16到191.255.0.0/16;(子网掩码默认是:255.255.0.0) >C类从192.0.0.0/24到223.255.255.0/24;(子网掩码默认是:255.255.255.0) D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户 E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。 偷偷告诉你:--------》 在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:  A类地址:10.0.0.0~10.255.255.255  B类地址:172.16.0.0~172.31.255.255  C类地址:192.168.0.0~192.168.255.255 回送地址:127.0.0.1。 也是本机地址,等效于localhost或本机IP。一般用于测试使用。例如:ping 127.0.0.1来测试本机TCP/IP是否正常。 * 获取子网掩码: 给定IP为210.31.233.128 ,子网掩码为255.255.255.128 首先判断他属于哪个IP类型,后面直接计算得出 * 子网掩码是什么? >子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。 子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。  子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。 子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。 * 通过子网掩码,就可以判断两个IP在不在一个局域网内部。 * 子网掩码可以看出有多少位是网络号,有多少位是主机号 * 网关 ># 网关 * * * 网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连 网关实质上是一个网络通向其他网络的IP地址。 比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。 在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。 而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。 所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。 ># 广播地址 >广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址。 在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。 ### 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址 ### IP地址和子网掩码进行与运算,结果是网络地址(即主机号全0是网络地址) ### 将运算结果中的网络地址不变,主机地址变为1,结果就是广播地址 ## IP地址 子网掩码 广播地址的转化 **示例** 一个主机的IP地址是202.112.14.137,掩码是255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址 ## 根据子网掩码可以分割网络号+主机号 * * * `255.255.255.224` 转二进制: > 11111111 11111111 11111111 11100000 网络号有27位,主机号有5位 网络地址就是:把IP地址转成二进制和子网掩码进行与运算 11001010 01110000 00001110 10001001 IP地址&子网掩码 ``` 11001010 01110000 00001110 10001001 11111111 11111111 11111111 11100000 ----------------------------------------------------- 11001010 01110000 00001110 10000000 即:202.112.14.128 广播地址:网络地址的主机位全部变成1 ,10011111 即159 即:202.112.14.159 主机数:2*2*2*2*2*2-2=30 ``` * 回来-----》 ## 为什么机器处理IP数据的时候只只要IP地址,不要域名呢? >因为IP地址的长度是固定的32位,(如果是IPV6地址,那就是128位,也是定长的),但是域名不是定长的 ## 如何域名注册? ![](https://img.kancloud.cn/40/b0/40b0c654059de857637a5b61adf28a78_1200x611.png)![](https://img.kancloud.cn/bf/b2/bfb2b9537c643e779465dff6aa00f409_1200x698.png) 审核完一周就能用了 >由于互联网的规模很大,让然并不是只使用一个域名服务器,早在1983年互联网就采用层次树状结构的命名法,并且使用分布式域名系统DNS,互联网的域名系统DNS被设计为联机的分布式数据库系统,采用客户服务器方式,大多数的DNS在本地就可以被解析,仅少量在互联网上通信,所以DNS系统的效率很高,即使单个出现了问题,也不会影响整个系统的运行 * 域名到IP解析是由分布在互联网上的许多域名服务器程序共同完成的 >域名到IP的流程: 某个应用,调用解析程序,成为一个DNS客户,把待解析的域名放在DNS请求报文中,以UDP的形式发送到本地域名服务器(使用UDP是节省成本),本地的域名服务器查找域名后,把IP地址放在回答报文中返回,应用进程获得目的驻地的IP地址后即可通信,但是如何本地的域名服务器不能回答呢? 那么域名服务器就暂时称为DNS中的一个客户,并且向其他的域名服务器发出查询请求,这种过程直至找到能够回答该请求的域名服务器位置 ## 互联网的域名结构 >背景:早期的时候,互联网使用的是非等级的名词空间,其优点是名字简短,但是当互联网上的用户急剧增加时,用非等级的用户的名字空间来管理一个很大的命名空间来管理一个很大的而且是经常变化的名字集合是非常的困难,因为互联网采用树状的命名方法,就像全球的邮政系统和电话系统一样,在任何的一个连接在互联网的主机或者路由器都有一个唯一的层次结构,叫做域名。,这里的域是名字空间可被管理的划分,域可以分为子域,子域还可以划分子域。这样就形成了顶级域,二级域,三级域等 例如:中央电视台收发电子邮件的计算机域名 `mail.cctv.com` * mail:三级域名 * cctv:二级域名 * com:顶级域名 ### 域名的规则: >DNS规定,域名的标号都是有英文字母和数字组成,每个标号都不能超过63个字符(但是一般都不会超过12个字符,因为太长不方便记忆),当然也不会区分大小写,在标号中除了-之外不能使用个其他的标点符号,级别低的域名写在最左,级别高的写在右侧,总共的域名不能超过255个字符,DNS不规定一个域名包含多少下级域名,也不会规定每个级别分别代表什么意思,,各级的域名由上一级的域名管理器管理,,但是最高的级别由ICANN管理,用这种的方法可以使每个域名在整个互联网内是唯一的。并且放便查找 * 注意1: 域名并不是指计算机的物理地址,只是方便记忆的字符串,而IP是定长的32位二进制数字,很方便计算机处理 * 注意2 域名中的点和十进制的点不是一一对应的关系,在我们的十进制的点 只能是三个,但是在我们的域名点没有要求 ### 顶级域名的分类 >在2012年5月的统计,现在的顶级域名TLD(Top Level Domain)已有326个,之前的顶级域名被分为三大类 * (1)国家顶级域名(nTLD),采用ISO 3166规定 >如:cn---中国 us---美国 uk----英国 也叫ccTLD (cc是国家代码 country-code),到2012年5月,国家域名总数有296个 * (2)通用顶级域名 (gTLD), >到2006年12月为止,通用顶级域名的总数已经达到20个,之前确定的有7个 如:com(公司企业) net(网络服务机构) ## 域名服务器、