关于IP、域名以及域名解析
引言:
众所周知,在现实世界中,要想知道地球上某个地点的位置,那么经纬度、高度坐标是很关键的信息,在网络中也是一样,要想在网络的世界中定位某个计算机就需要ip这么一个电子地址,比如像这样180.97.34.96一个ip地址。
那么,为什么要通过这么一个ip地址去定位主机呢,就目前来看,最常见的就是访问该主机上的资源文件,比如通过HTTP超文本传输协议接收超文本文件,比如最常见的HTML文件:要想通过HTTP协议传输资源HTML文件,就需要一个标识该文件的URL(即统一资源定位符),URL由协议、主机和端口(默认为80)以及文件名三部分构成,这里的主机也就可以是一个ip地址,因为ip地址就是定位了一个主机。
但是,这样一个完全由数字组成的ip地址很不容易记忆,这也就是域名发挥作用的时候了,域名由形象易记的字符串、英文单词组成,通过域名解析,相当于为难记的ip地址起了一个简单易懂的名字,方便用户通过这个简单易懂的名字去访问主机。
IP地址:
IP地址是特定设备的电子地址,与物理地址相似,IP包含虚拟地址和物理地址。每台计算机的IP地址都是该计算机上网的身份证明。
域名:
域名是由一串用点分隔的名字组成的某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。一个域名的目的是记忆和沟通的一组服务器的地址。换句话说,一个网址就是该网站的域名。目前域名已经成为互联网品牌和网上商标保护必备的要素之一,除了识别功能外,还有引导宣传等作用。
-
ICANN:
全世界域名的最高管理机构,是一个叫做 ICANN (Internet Corporation for Assigned Names and Numbers)的组织。它的总部在美国加州。它原来是美国商务部下面的一个非盈利机构,所以有人说,美国政府控制了全世界的域名,这种说法是有根据的。2016年,美国政府宣布,ICANN 不再隶属于商务部,成为一个自我管理的独立机构。但是可想而知,美国政府依然对它有绝对影响。
ICANN 负责管理全世界域名系统的运作。它的一项主要工作,就是规定顶级域名(top level domain,简写为 TLD)。
-
DNS根区:
也就是ICANN所维护的根域名列表,其正式名称是DNS根区(DNS root zone),ICANN官网可以查看这个根区文件。该文件保存了所有顶级域名的托管信息。
举例来说,顶级域名
.com
可以查到13个域名服务器。com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net.
也就是说,
.com
域名的解析结果,可以到这个13个服务器的任一台查询。由于这些服务器本身也是使用域名(比如a.gtld-servers.net.
)标识,那么还得去查询它们指向的服务器,这样很容易造成循环查询。因此,DNS 根区还会同时提供这些服务器的 IP 地址(IPv4 和 IPv6)。
a.gtld-servers.net. 172800 IN A 192.5.6.30 a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e:0:0:0:2:30 b.gtld-servers.net. 172800 IN A 192.33.14.30 b.gtld-servers.net. 172800 IN AAAA 2001:503:231d:0:0:0:2:30 c.gtld-servers.net. 172800 IN A 192.26.92.30 c.gtld-servers.net. 172800 IN AAAA 2001:503:83eb:0:0:0:0:30 ... ...
-
根域名服务器:
保存 DNS 根区文件的服务器,就叫做 DNS 根域名服务器(root name server)。
由于早期的 DNS 查询结果是一个512字节的 UDP 数据包。这个包最多可以容纳13个服务器的地址,因此就规定全世界有13个根域名服务器,编号从
a.root-servers.net
一直到m.root-servers.net
。这13台根域名服务器由12个组织独立运营。其中,Verisign 公司管理两台根域名服务器:A 和 J,每家公司为了保证根域名服务器的可用性,会部署多个节点,比如单单 Verisign 一家公司就部署了104台根域名服务器(2016年1月数据)。
所以,根域名服务器其实不止13台。据统计,截止2016年1月,全世界共有 517 台根域名服务器。你可以在http://root-servers.org这个网站查到所有根域名服务器的信息。
根域名服务器虽然有域名,但是最少必须知道一台的 IP 地址,否则就会陷入循环查询。一般来说,本机都保存一份根域名服务器的 IP 地址的缓存,叫做 name.cache 文件。
// 这个文件记录了13台根域名服务器的 IP 地址。 A.ROOT-SERVERS.NET。3600000 A 198.41.0.4 A.ROOT-SERVERS.NET。3600000 AAAA 2001:503:ba3e::2:30 B.ROOT-SERVERS.NET。3600000 A 199.9.14.201 B.ROOT-SERVERS.NET。3600000 AAAA 2001:500:200::b C.ROOT-SERVERS.NET。3600000 A 192.33.4.12 C.ROOT-SERVERS.NET。3600000 AAAA 2001:500:2::c ... ...
-
域名组成:
根域名(.):
没错,就是这个点,比如
www.example.com.
中的 . 就是根域名,通常可以省略不写。理论上,所有域名查询都必须先查询根域名,因为只有根域名才能告诉你,某个顶级域名由哪台服务器管理。事实上也确实如此,ICANN 维护着一张列表,里面记载着顶级域名和对应的托管商。比如,我要访问
www.example.com
,就必须先询问 ICANN 的根域名列表,这个文件保存了所有顶级域名的托管信息,它会告诉我.com
域名由 Verisign 托管,我必须去找 Verisign,它会告诉我example.com
服务器在哪里。顶级域名(TLD):
最高层级的域名,就是网址的最后一个部分,比如网址
www.example.com
的顶级域名就是.com
,ICANN 就负责规定,哪些字符串可以当作顶级域名。它们可以分成三类:
- 一般性顶级域名(gTLD):比如
.com
-商业性的机构或公司、.net
-从事Internet相关的机构或公司、.edu
-教育机构如大学等院校、.org
-非盈利的组织或团体、.name
-适用于个人注册的通用顶级域名、.info
-提供信息服务的企业、.ac
-科研机构等等,共有700多个,目前预计更多。 - 国别顶级域名(ccTLD):代表不同的国家和地区,比如
.cn
(中国)、.io
(英属印度洋领地)、.cc
( 科科斯群岛)、.tv
(图瓦卢)等,共有300多个。 - 新顶级域名(New gTLD):如通用的
.xyz
、代表“高端”的.top
、代表“红色”的.red
、代表"人"的.ren
等一千多种,目前预计更多。
二级域名(SLD):
即顶级域名的子域名,
example.com
,example.net
,example.cn
等。三级域名:
即主域名的子域名,
abc.example.com
,abc.example.net
,abc.example.cn
等。四级域名:
以此类推,在上一级域名最左侧进行域名级别的拓展。
- 一般性顶级域名(gTLD):比如
-
关于网上对一二级域名不同解释的个人猜测:
网上真的是什么说法都有,结合网络上的说法,比如example.com有的说是一级域名有的说是二级域名,有可能是从不同的角度看待导致的,对于购买域名的人来说,我初始能购买到的域名就是example.com这种形式的,那理所应当这个可以理解为顶级域名(一级域名);而对于使用域名来说,因为.com是顶级域名,这个域名又应该是二级域名。
-
关于域名中www的个人解释:
用于区分主机功能的一种域名命名范式,比如www一般表示为提供网站服务的主机域名,所以它也是域名的一个组成部分,早期通过www和ftp等不同的命名规定的域名来指向不同的主机ip,用来区分提供不同服务的主机域名。其实,你也可以使用blog.example.com作为一个域名。
在DNS域名解析服务上,这一部分也被称为域名前缀或是主机记录。但不同的是,域名解析服务上主机记录可多配置两种一种是" @ "另一种是" * "。
那么结论是,如果说有www.example.com这么一个域名,套用上面对域名的解释,对于域名的购买者来说,这个就是一个二级域名,而从真正的域名分级看它属于三级域名。
域名解析:
-
说明:
域名解析就是将域名解析为IP,其实域名就是IP的一个容易记忆的名字,我们就是通过解析过的域名来访问网站的。说白了就是如何将域名正确解析为实际的IP地址,由于业务需求,这其中一定是有许多种解析方案的,也就是解析记录类型。
-
记录类型:
A:地址记录,用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP地址,就需要添加A记录。告诉DNS网站所在的服务器,这样用户输入域名后DNS才能找到网站。
CNAME:又叫别名解析,设置的方法和A记录基本是一样的,一般是会指定一个DNS服务商提供的二级域名,这样DNS通过这个二级域名也能找到服务器的IP地址。使用CNAME的好处是,即使服务器的IP地址发生变更,也不用更改解析记录,DNS会自动更新解析,相比A记录少了一些改动的麻烦。
MX:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录,填写的是邮件服务器的IP地址或企业邮局给您提供的域名。
TXT:可任意填写,可为空。一般做一些验证记录时会使用此项,长度限制255。绝大多数的TXT记录是用来做SPF记录(反垃圾邮件)。
NS:域名服务器记录,如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录。
AAAA:用来指定主机名(或域名)对应的IPv6地址(例如:aa51::c3)记录。解析到 IPv6 的地址。
一般使用功能较多的记录类型是A记录,就是直接将域名解析到IP上,其对应的记录值就是空间的ip地址。
-
生效时间:
-
添加新的解析记录,生效时间是5分钟。
-
修改记录,这里引用阿里云DNS云解析的说明。
解析记录变更后,可能不会立即生效。因为各地网络运营商 dns 存在缓存,在缓存未到期时,是不会向云解析 DNS 请求最新的解析记录,而是直接将之前缓存的解析结果返回给访问者,所以需要等待运营商刷新本地缓存后,解析才会实际生效。解析生效时间主要取决于运营商DNS缓存的解析记录的TTL到期时间,预计最快10-30分钟左右生效。如进行过DNS服务器名称修改,则一般需要24-48小时左右生效。
-
-
TTL:
指解析结果在Local DNS中的缓存时间,一般设置10分钟、30分值随意。10分钟是阿里云DNS域名解析服务中可以设置的TTL最小值。
-
@直接解析和*泛解析:
配置在主机记录上。
@直接解析的作用体现在不输入www也能直接解析到该记录。
*泛解析的作用体现在不管输入的域名前缀是什么,都统一解析到该记录,用的较少。
参考链接:
根域名的知识 - 腾讯云开发者社区-腾讯云 (tencent.com)