在TCP/IP的世界,识别计算机(包括PC、服务器、网络设备等)的是IP地址,而不是域名。但是我们不擅长记住长而无意义的数字例如47.92.126.152,而sys-blog.net更容易记住并且使用。
绑定域名(sys-blog.net)和IP地址(47.92.126.152)的服务就是DNS,即给每台计算机提供了一个让我们更加容易掌握的识别符(字符窜)。当我们在浏览器输入sys-blog.net时,通过DNS服务器获取IP地址(该过程被称为域名解析),之后使用IP地址和SYS-BLOG.NET服务器进行通信。
在DNS的世界里,对应域名的IP地址的信息保存于Name Server(在这里称之为DNS服务器)。DNS服务器分布于网络当中因此需要进行域名解析的客户端软件,该软件称之为解析器(resolver),域名解析器一般内置于OS当中。
在浏览器输入 sys-blog.net 访问网站为例,确认域名解析的流程。
- 用户在打开浏览器之后输入 域名(sys-blog.net)
- 浏览器将用户输入的域名传递给解析器
- 解析器向DNS服务器请求该域名的IP地址
- DNS服务器返回IP地址(47.92.126.152)给解析器
- 解析器将得到的IP地址传递给浏览器
- 浏览器使用IP地址访问服务器
域名的形式
域名是对应于IP地址的名称,因此和IP地址一样在整个网络不能重复。为了避免重复,域名采用了层次树状结构。
这个结构类似,世界上有中国,韩国等国家,每个国家再进行细分,例如中国有省市县等级别,万一别的国家有大连市的时候,通过不同国家和省可进行区分。在DNS里省市县等级别被称为Label,从右往左通过 .(点) 进行连接。以 www.sys-blog.net 为例的话,net里的sys-blog,sys-blog里的www,以此类推表示层级关系。
可用于Label的是,英数字符和横杠(-)。英文字符不区分大小写,因此WWW和www是一样的。每个Label的最大字符数为63字符,域名整体不能超过255字符(包括点)。
域名解析的顺序
解析器通过和DNS服务器的通信获取域名的IP地址,但是一个DNS服务器上不可能包含所有域名的IP地址。域名和IP地址的信息是分布在网络上的DNF服务器进行分散管理,如果请求的信息不在指定的DNS服务器,需要向别的DNS服务器请求域名解析。
那么如何从分散在网络的DNS服务器里,找到适当的服务器呢?首先询问熟悉”省级别”地址结构的人,然后再询问熟悉”市级别”地址结构的人,最后再询问熟悉”县级别”地址结构的人,以此类推,最终找到一个陌生地址。计算机最初依赖域名解析的DNS服务器被称之为”本地DNS服务器(Local DNS Server)”。
DNS服务器的管理员需要下载公开可用的root DNS服务器IP地址列表并进行设置。有十几个root DNS服务器提供相同的信息,与其中任何一个DNS服务器进行通信都会得到一样的结果。