Posts /

DNS解析学习

22 Aug 2019

DNS解析


本篇内容基于自己在使用阿里云DNS解析域名,使用子域名访问不同网站(项目)

DNS原理

什么是DNS

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。

DNS的过程

    DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip地址。 具体过程如下:     ①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了     ②浏览器将接收到的url中抽取出域名字段,就是访问的主机名,比如http://www.baidu.com/, 并将这个主机名传送给DNS应用的客户端     ③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)     ④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址     ⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接

这就涉及了,在阿里云上配置DNS的过程。在解析参数中主机记录填写为hexoblog.maplestory.work,后缀为本博客的域名,记录值填写maple-chan.github.io, 也就是github给的端口。如此一来就能通过该域名访问我在github中的项目。DNS解析将自定义的域名(hexoblog.maplestory.work)和maple-chan.github.io联系起来。

如图:

avatar

但是怎么就能通过hexoblog.maplestory.work定位到我对应的哪一个工程呢?(maplestory.work解析到当前博客的工程)。这就用到了CNAME。在git项目中添加CNAME文件,内容只写hexoblog.maplestory.work, 这样在GitPage中就知道你这个域名要访问的是哪一个工程了。

GitHub中CNAME文件的作用:GitHub记录了CNAME文件,在有请求来时查看工程中CNAME文件下所写的域名,访问对应上得工程。

(这是我的理解,如我有错误,麻烦在GitHub上issue我吧!)