快捷导航
查看: 164|回复: 21

一个域名可以对应多个(域名和ip地址的关系)

[复制链接]

1万

主题

0

回帖

1万

积分

论坛元老

积分
10878
发表于 2023-10-14 17:44:38 | 显示全部楼层 |阅读模式
<p>
     来源:知乎
    </p><p>
     作者:孤独烟
    </p><p>
    今天我们来聊聊DNS。 所谓域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,可以balabala..省略一万字不表,因为这都不是重点!
   </p><p>
    重点只有一个,大厂经常问!
   </p><p>
    没错,正是因为DNS包含着很多大厂常考面试知识点!因此,烟哥认为很有必要再开一文说明。
   </p><p>
<strong>
     概念
    </strong>
</p><p>
    DNS 的全称是 Domain Name System 或者 Domain Name Service,它主要的作用就是将人们所熟悉的网址 (域名) “翻译”成电脑可以理解的 IP 地址,这个过程叫做 DNS 域名解析。 打个比方,我们登百度的地址的时候,都是敲www.baidu.com,进行登陆,难道你会去敲IP地址登百度?明显,域名容易记忆。
   </p><p>
    而且,一个域名往往对应多个DNS地址,如下图所示
   </p><p class="pgc-img-caption">
</p><p>
    如果要全部都记住,嗯,我相信兄台记忆力一定十分惊人!
   </p><p>
<strong>
     流程
    </strong>
</p><p>
    接下来,就不得不说一道经典面试题了
   </p><p class="pgc-img-caption">
</p><p>
    其实回答很简单(俗称天龙八步)
   </p><p>
    ps:由于本文不是讲HTTP请求,我提几个思考题,读者自己去思考(没错,我就是故意不说,咬我啊!)
   </p><p>
    好了,不扯了,本文不是在讲Http协议。 下面我们着重来说DNS解析这块
   </p><p>
<strong>
     解析
    </strong>
</p><p>
    OK,着重说DNS解析这块,流程图如下
   </p><p class="pgc-img-caption">
</p><p>
    如图所示,大致就是:浏览器输入地址,然后浏览器这个进程去调操作系统某个库里的gethostbyname函数(例如,Linux GNU glibc标准库的gethostbyname函数),然后呢这个函数通过网卡给DNS服务器发UDP请求,接收结果,然后将结果给返回给浏览器。
   </p><p>
    这张图其实已经讲明白大致的流程,但是细节上可能有些差异。 例如
   </p><p>
    不过,看到这里!请回忆下这两道面试题?
   </p><p class="pgc-img-caption">
</p><p>
    现在,会回答了么?
   </p><p>
    什么,你还不懂怎么答?把文章拉到开头。从头看过。 不过呢,需要补充说明一下,DNS中也有一个地方用到了TCP协议。那就是区域传送!
   </p><p>
    DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。 这种情况下,使用TCP协议。
   </p><p>
    讲到这里。其实面试官是可以深入追问的,如下所示
   </p><p class="pgc-img-caption">
</p><p>
    针对第一问,为什么域名解析用UDP协议?
   </p><p>
    因为UDP快啊!UDP的DNS协议只要一个请求、一个应答就好了。而使用基于TCP的DNS协议要三次握手、发送数据以及应答、四次挥手。但是UDP协议传输内容不能超过512字节。不过客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。
   </p><p>
    针对第二问,为什么区域传送用TCP协议?
   </p><p>
    因为TCP协议可靠性好啊!你要从主DNS上复制内容啊,你用不可靠的UDP? 因为TCP协议传输的内容大啊,你用最大只能传512字节的UDP协议?万一同步的数据大于512字节,你怎么办?
   </p><p>
    讲到这里,我突然想到一个段子(没办法,头脑中知识太多)!
   </p><p class="pgc-img-caption">
</p><p>
    这个问题,我们这里当段子来讲,改天写一篇《TCP/IP面试指南》!
   </p><p>
    三次握手:
   </p><p class="pgc-img-caption">
</p><p>
    两次握手:
   </p><p class="pgc-img-caption">
</p><p>
    四次握手:
   </p><p class="pgc-img-caption">
</p><p>
    所以啊。三次握手资源最省(当段子看看就好)!扯回我们的DNS话题!
   </p><p>
    原理
   </p><p>
    现在,讲最后一块DNS解析域名的原理!这块是重中之重! 先介绍linux下一个dig命令,以显示解析域名的过程。 为了便于说明,我们来dig一下天猫的过程
   </p><p>
    结果如下图所示
   </p><p class="pgc-img-caption">
</p><p>
    莫方,看不懂没事。 现在我们来读重点的两段。第一段代表请求参数如下图所示
   </p><p class="pgc-img-caption">
</p><p>
    这段为查询内容。 DNS的查询参数一般有三个
   </p><p>
    当然,你这个时候要问我一个问题啦(注意上图红框)
   </p><p>
    烟哥,我输入的明明是http://www.tmall.com可是命令里解析的地址是www.tmall.com.啊,多了一个.的符号啊?这个.符号是什么意思呢?
   </p><p>
    于是乎,又扯了一道经典面试题
   </p><p class="pgc-img-caption">
</p><p>
    OK,好,要讲明白这个问题。我们要先把域名的结构讲清楚! www.tmall.com对应的真正的域名为www.tmall.com.。末尾的.称为根域名,因为每个域名都有根域名,因此我们通常省略。
   </p><p>
    根域名的下一级,叫做"顶级域名"(top-level domain,缩写为TLD),比如.com、.net;
   </p><p>
    再下一级叫做"次级域名"(second-level domain,缩写为SLD),比如www.tmall.com里面的.tmall,这一级域名是用户可以注册的;
   </p><p>
    再下一级是主机名(host),比如www.tmall.com里面的www,又称为"三级域名",这是用户在自己的域里面为服务器分配的名称,是用户可以任意分配的。
   </p><p>
    那么解析流程就是分级查询!
   </p><p>
    (1)先在本机的DNS里头查,如果有就直接返回了。本机DNS就是下面这个东东
   </p><p class="pgc-img-caption">
</p><p>
    (2)本机DNS里头发现没有,就去根服务器里查。根服务器发现这个域名是属于com域,因此根域DNS服务器会返回它所管理的com域中的DNS 服务器的IP地址,意思是“虽然我不知道你要查的那个域名的地址,但你可以去com域问问看”
   </p><p>
    (3)本机的DNS接到又会向com域的DNS服务器发送查询消息。com 域中也没有www.tmall.com这个域名的信息,和刚才一样,com域服务器会返回它下面的tmall.com域的DNS服务器的IP地址。
   </p><p>
    以此类推,只要重复前面的步骤,就可以顺藤摸瓜找到目标DNS服务器
   </p><p>
    ps:温馨提醒,dig +trace www.tmall.com 可以看到解析过程。有兴趣的读者,自己实验一下。
   </p><p>
    扯了那么多东西,我们来看第二段内容,也就是响应体的部分! 如下所示
   </p><p class="pgc-img-caption">
</p><p>
    很明显,第一行就是说www.tmall.com有一个别名是www.tmall.com.danuoyi.tbcache.com。后面几行就是这个www.tmall.com.danuoyi.tbcache.com地址的真实IP。
   </p><p>
    为什么天猫要设一个别名到http://www.tmall.com.danuoyi.tbcache.com地址呢? 于是乎,又一道经典面试题出现
   </p><p class="pgc-img-caption">
</p><p>
    说句实在话,我当初第一眼,见到这题的时候,我觉得应该是方便cdn配置。 回到我们的例子,如果烟哥的猜测正确,www.tmall.com.danuoyi.tbcache.com这个地址,应该是淘宝的一个cdn地址。 因此,我特意去查了域名备案记录。如下图所示
   </p><p class="pgc-img-caption">
</p><p>
    果然,就是一个淘宝的cdn环境。
   </p><p>
    那么这么配有什么好处呢?
   </p><p>
    唉,这题当思考题,快过来探讨留言!
   </p><p>
    总结
   </p><p>
    本文讲了DNS的一些常见知识点,希望大家有所收获。如果有其他关于DNS的问题,欢迎留言咨询。
   </p><p>
    (啊,呸,我就随便说说,不要当真,千万别问,万一我不会,不是暴露了我是个水货)!
   </p>

1

主题

3104

回帖

4661

积分

论坛元老

积分
4661
发表于 2023-10-16 01:30:12 | 显示全部楼层
难得一见的好帖

1

主题

2876

回帖

4319

积分

论坛元老

积分
4319
发表于 2023-10-16 01:30:50 | 显示全部楼层
前排支持下

1

主题

3028

回帖

4547

积分

论坛元老

积分
4547
发表于 2023-10-16 05:51:03 | 显示全部楼层
沙发!沙发!

1

主题

2922

回帖

4388

积分

论坛元老

积分
4388
发表于 2023-10-16 05:51:43 | 显示全部楼层
这真是不错,顶给需要的人

1

主题

2950

回帖

4430

积分

论坛元老

积分
4430
发表于 2023-10-18 18:47:44 | 显示全部楼层
学习了,谢谢分享、、、

1

主题

2998

回帖

4502

积分

论坛元老

积分
4502
发表于 2023-10-22 05:38:31 | 显示全部楼层
牛啊兄弟 支持一下

1

主题

2924

回帖

4391

积分

论坛元老

积分
4391
发表于 2023-10-25 04:08:58 | 显示全部楼层
大佬牛逼,学习了

1

主题

2994

回帖

4496

积分

论坛元老

积分
4496
发表于 2023-10-26 16:49:10 | 显示全部楼层
路过,支持一下啦

1

主题

2916

回帖

4379

积分

论坛元老

积分
4379
发表于 2023-10-26 16:49:24 | 显示全部楼层
谢谢楼主,共同发展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|聚云老站长 ( 粤ICP备2023011934号-1 )

GMT+8, 2024-6-17 21:33 , Processed in 0.747115 second(s), 24 queries .

快速回复 返回顶部 返回列表