我们每天都要浏览很多的网页,那么当我们输入了一个网址(域名)的时候计算机是如何将域名转换为IP地址然后请求服务呢?
我们可以简单理解为每一个在互联网上提供服务的一台服务器或者是一组服务器,都有一个统一且唯一的公网IP地址,每一个请求可以根据ip地址找到对应的服务。目前的IP版本是IPV4,IP地址是32位(bit位)4字节,大约一共43亿个,但是并不是所有的IP地址可以做公网IP的,有一些IP因为特殊的作用被保留,例如192.168.*.*被用作局域网IP,所以实际上是没有43亿的。截止目前,所有的IPV4地址基本上已经消耗完了,唯一的解决方案就是推广IPv6协议,IPv6地址长128位(bit位)16字节,总地址数大约为2的128次方,号称可以为地球上每颗沙子分配一个IP地址。此外IPv6还支持在网络层对IP报文加密并校验,保证数据的安全性和完整性。
无论是32位的IP地址还是64位的IP地址,都不方便记忆,且不能标示服务提供商的名称信息和性质,因此就提出了域名,域名通过小数点分隔开,最后面的是顶级域名,例如.com,.org,.cn等,每个域名都代表了不同的服务提供商地址或者组织性质。中间一般是服务提供商名和网络名,也可能只有一个。最前面的是www,World Wide Web的缩写。WWW是覆盖全球的客户机/服务器网络。
下图是顶级域名代表的地区:
域名是为了方便记忆,但是在计算机网络通信的时候还是需要把域名转换为IP地址。如何转换呢?
首先计算机会查找本地的HOSTS,看本地HOSTS有没有缓存IP和域名的对应关系。如果有则域名解析成功。
HOSTS缓存是为了提高域名解析速度,但是也存在安全隐患。一些黑客会通过修改操作系统HOSTS将域名解析到非服务提供商的IP地址,从而盗取用户信息,这就是所谓的域名劫持。此外,在局域网中,很少架设DNS服务器,我们很难记住服务器的IP,可以通过修改HOSTS文件,将IP地址和域名在HOSTS中映射,通过域名访问服务。下图中标出的部分就是域名和IP的映射,可以自己修改。
当然IP和域名的映射只是在本机生效,如果想全局生效,就要用到DNS服务。
DNS(Domain Name System)是域名服务协议,主要解决IP和域名映射的问题。上面提到修改HOSTS文件可以将IP和域名作映射,但是仅限于本机,不可能每台接入设备都修改自己的HOST,不仅麻烦而且存在安全隐患,所以就有了DNS服务。
DNS是互联网的核心服务。比如说我们要访问头条的官网,不可能记住头条的IP地址,但是只要记得头条的域名就可以了,我们并没有在HOSTS文件配置头条域名和IP的映射,但是仍然可以正常找到域名对应的IP地址,这个就是DNS在发挥作用。具体解析过程如下:
具体如图所示:
DNS解析服务是是互联网最重要的基础服务之一,例如前几天因为互联网顶级域名“.net”在F根服务器以及E根服务器的解析出现了故障,导致大量使用“.net”域名的网站和服务器从互联网“断开网络连接”,持续了大约3小时。
目前全球共13台根域名服务器,分布如下:
主根服务器在美国,剩下的12台辅根服务器中有9台在美国,英国,瑞典,日本各一台。
中国作为全球最大的互联网用户,然而并没有根域名服务器,因此2015年中国下一代互联网工程中心联合发起了“雪人计划”,面向全球招募面向全球招募25个根服务器运营志愿单位,共同对IPv6根服务器运营。所以现在是13台旧的根域名服务器加上25台新的IPv6根域名服务器,IPv6根域名服务器分布如下:
总结一下,当浏览器输入网址时会首先查找浏览器缓存,如果找到域名和IP的映射,如果找不到则会查找本地HOSTS,如果还是查不到会递归查询LDNS,如果LDNS找不到,则会去迭代查询高级的域名服务器,返回并缓存查询结果。拿到IP地址后,浏览器就可以请求服务并展示返回的结果了。
评论留言