DNS之博客搭建中的域名配置

探索学习域名系统,从域名解析、域名服务器、主机服务器等几个方面拨开云雾。

从输入URL开始

  1. 在浏览器客户端中输入我们购买后的域名(www.example.com),点击回车

  2. 浏览器会向此电脑的网络接入商(电信)发出域名请求,电信的DNS服务器要查询域名数据库,查找这个域名的DNS服务器,然后从中抓去记录,获取此域名指向的IP地址

  3. 电信的服务器向此IP地址所对应的服务器抓取网页内容,然后传输给浏览器

浏览器 => 电信DNS服务器 => IP => 电信服务器 => IP对应的服务器 => 浏览器

互联网的传输

互联网上的每一台电脑都被分配一个IP地址,数据的传输实际上是在不同IP地址之间进行的。包括我们在家上网时使用的电脑,在连上网以后也被分配一个IP地址,这个IP地址绝大部分情况下是动态的。也就是说你关掉调制解调器,在重新打开上网,你的上网接入商会随机分配一个新的IP地址。

网站服务器(IP对应的服务器、主机服务器)

网站服务器本质上也是台连上网的电脑,只不过配置上更适合作为服务器,并且放在数据中心,保持低温,低尘环境,同时有安全保卫。这些服务器使用固定IP地址连入互联网。

一个域名解析到某一台服务器上,并且把网页文件放到这台服务器上,用户的电脑才知道去哪一台服务器获取这个域名的网页信息。这是通过域名服务器来实现的。

域名服务器

域名服务器是英文Domain Name Server的缩写。每一个域名都至少要有两个DNS服务器,这样如果其中一个DNS服务器出现问题,另外一个也可以返回关于这个域名的数据。DNS服务器也可以有两个以上,但所有这些DNS服务器上的DNS记录都应该是相同的。

在DNS服务器中保留有该域名的DNS记录,比如A记录,MX记录。A记录是用来指定主机名(或域名)对应的IP地址。MX记录用来解析域名的邮件服务器。在很多情况下。

  • A记录:地址记录,用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP地址,就需要添加A记录。

  • CNAME: 如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。

域名解析

域名解析需要很长时间,是因为上网接入商,比如北京电信,河南电信等,为了要加速用户打开网页的速度,通常在他们的DNS服务器中缓存了很多域名的DNS记录。这样这个接入商的用户要打开某个网页时,接入商的服务器不需要去查询域名数据库,而是把自己缓存中的DNS记录直接使用,从而加快用户访问网站的速度。

缺点是上网接入商ISP的缓存会存储一段时间,只在需要的时候才更新,而更新的频率没有什么标准。有的ISP可能1小时更新一次,有的可能长达一两天才更新一次。

所以新注册的域名一般来说解析反倒比较快。因为所有的ISP都没有缓存,用户访问时ISP都是要查询域名数据库,得到最新的DNS数据。

而老域名如果更改了DNS记录,但世界各地的ISP缓存数据却并不是立即更新的。这样不同ISP下的不同用户,有的可以比较快的获取新的DNS记录,有的就要等ISP缓存的下一次更新。

说明

DNS服务器和网页服务器可以是同一个提供商提供的,也可以是不同的。通常虚拟主机提供商也提供自己的DNS服务器,这样用户只要把自己的域名指向虚拟主机提供商自己的域名服务器就可以了。有的用户喜欢使用域名注册服务商提供的DNS服务器(如GoDaddy),这时候用户就要在域名注册商的DNS服务器中更改DNS记录,如A,MX记录等到虚拟主机提供商的IP地址。

基于Github Page的个人博客搭建中域名配置解析

  1. 在域名注册服务商(GoDaddy)处购买域名(www.example.com)

  2. 不使用它提供的域名服务器,使用Dnspod(国内免费DNS服务器,提供域名解析及域名记录等服务),因此需要在GoDaddy上添加Dnspod的域名服务器f1g1ns1.dnspod.net以及f1g1ns2.dnspod.net

  3. 根据github page提供的IP(192.30.252.153192.30.252.154),在Dnspod中添加两条A记录

  4. 在Dnspod中添加一条CNAME记录,记录即为你的github page域名(yourgithubname.github.io)

  5. 在github page项目中添加CNAME文件(内容为购买的域名www.example.com)

    • 延伸问题:为什么配置了域名解析还要配置CNAME文件呢?

      实际上,个人域名是名字,github page相当于网站空间。试想,如果不在网站空间配置CNAME,就可以成功绑定域名,那么岂不是可以给别随便一个的网站绑定上自己的域名?相同,如果只需配置github pages的CNAME,而不用域名解析,那不是也可以将自己的网站绑在人和别人的域名上?所以,域名绑定是需要“双方同意”的。

综上所述,本质上时github page提供了一个网站服务器及域名(yourgithubname.github.io),我们需要将自己购买的域名代理到github page下即可

基于自有服务器的个人博客搭建中域名配置解析

同上,需要用自有服务器的IP替换github page的IP,添加A记录,以及将CNAME改为你的域名即可,相当于绕过github page提供的网站域名(yourgithubname.github.io),直接绑定自有服务器以及自有域名。

参考

什么是域名解析?什么是域名服务器?

坚持原创技术分享,您的支持将鼓励我继续创作!