2024年前端最全前端网络基础-应用层DNS协议(2),面试干货分享

总结

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

反向解析的应用主要是 识别垃圾邮件。通过查询垃圾邮件的IP地址对应的域名,来判断对方是否为垃圾邮件。

DNS解析

DNS(Domain name system),即域名系统,作用是将域名解析为IP地址。

主机本地hosts文件实现DNS解析

一般网络主机中都存在一个hosts文件,该文件中会配置好域名和IP的映射关系,然后当主机访问某域名时,就会优先去hosts文件中根据域名查找IP地址。

比如windows电脑中,C:\Windows\System32\drivers\etc\hosts

浏览器缓存实现DNS解析

浏览器经常需要通过域名访问远程服务器,但是底层每次都需要将域名解析为IP地址后,才能发起真正的HTTP请求。

所以域名解析的速度直接影响了浏览器请求资源的速度,进而影响了网页的加载速度。

所以为了不被重复的域名解析工作耽误,浏览器会缓存每次解析到的IP和对应的域名到本地,这样下次请求相同域名时,就可以直接从浏览器缓存中获取域名对应的IP地址了。

本地DNS服务器实现DNS解析

网络主机一般都需要配置一个默认的本地DNS服务器,方便网络主机单靠自身找到域名对应的IP地址时,可以寻求本地DNS服务器的帮助。

比如windows电脑就需要配置本地DNS服务器

而我们家用的路由器一般都内置了一个DNS服务器,这里的192.168.1.1其实就是默认网关:路由器的地址。

DNS服务器的作用也是将域名解析为IP地址。

而当本地DNS服务器也无法找到域名对应的IP地址时,就会请求根域名服务器查找域名对应的IP地址。当找到之后就会将域名和IP地址缓存在本地,这样下次遇到相同的域名,就可以在本地DNS服务器完成解析了。

域名的组成

每个域名其实都有一个根域名,根域名是一个点号,它默认是可以省略的。

即 www.baidu.com  其实完整写法是 www.baidu.com.

当本地域名服务器找不到域名对应的IP地址时,就会去根域名服务器去查找。

即域名地址最后一个 点号 代表的是根域名服务器地址

而其他的点,分别从右往左按照顺序,代表了顶级域名服务器地址,二级域名服务器地址,三级域名服务器地址,…

而实际上,域名服务器之间有从属关系,即层级关系,根域名服务器下面有多个顶级域名服务器,一个顶级域名服务器下又有多个二级域名服务器,…

根域名服务器:最高层次的域名服务器,本地DNS服务器解析不了域名时,就会去找根域名服务器。全球一个13台根域名服务器。

顶级域名服务器:通常表示某个国家,地区,组织,公司,学校等,比如 cn 表示中国, jp表示日本,us表示美国,hk表示香港地区,com表示公司,org表示组织,edu表示学校

二级域名服务器:具体公司或组织的名字,如baidu,bilibili,huawei

三级域名服务器:通过表示某公司或组织的某个具体产品或业务项,比如 www 通常表示主页,image表示图片业务

DNS迭代解析

迭代解析过程:

比如查找www.baidu.com

1、本地DNS服务器,首先去根域名服务器获取域名对应的IP地址,但是根域名服务器也找不到,所以根域名服务器就将顶级域名服务器的地址(com)返回,让本地DNS服务器去顶级域名服务器查找。

2、本地DNS服务器,再去顶级域名服务器(com)获取域名对应的IP地址,但是顶级域名服务器也找不到,所以顶级域名服务器就将二级域名服务器的地址(baidu)返回,让本地DNS服务器去二级域名服务器查找。

3、本地DNS服务器,再再去请求二级域名服务器(baidu)查找,发现二级也找不到,于是就返回三级域名服务器地址(www),…

4、本地DNS服务器,再去三级域名服务器查找,最终找到了对应的IP地址

DNS递归解析

DNS递归解析,其实相对于DNS迭代解析的区别就是

本地DNS服务器只需要发送一次请求,就可以得到最终结果IP地址。类似于递归函数。

通常情况下,本地DNS服务器 向根域名服务器查询,采用迭代方式。

因为根域名服务器需要服务很多很多DNS服务器,所以不能让根域名服务器承担所有压力,需要将压力转移到每个DNS服务器身上。

而 主机 向 本地DNS服务器查询时,一般采用递归。

因为如果本地有多台DNS服务器,由于这多台DNS服务器,服务的对象是可数的,少量的,所以本地DNS服务器可以承担更多的任务,而主机服务器需要更多的资源去处理面向用户的任务。

DNS协议

前面说了DNS的迭代和递归解析,那么DNS请求是如何发送出去的呢?它的请求是否需要符合一种格式?在传输层,DNS请求又是基于什么协议发送出去的呢?

DNS请求是发生在应用层的,而应用层有一种协议:DNS协议,来规范了DNS请求报文格式。

而DNS请求在运输层,既可以使用TCP协议,也可以使用UDP协议,但是默认使用UDP协议。

因为我们期望DNS请求可以快速得到解析结果,而不是数据完整性。

我们可以通过抓包来查看DNS请求过程

访问某个域名,必然触发域名解析

抓包结果

DNS请求

最后

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

hlaQ,shadow_50,text_Q1NETiBA5LyP5Z-O5LmL5aSW,size_20,color_FFFFFF,t_70,g_se,x_16)

最后

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-VDmffU94-1715527988077)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值