结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
初识域名
一个网址组成如上图所示
其中服务器地址部分,既支持IP地址,也支持域名。如上图的服务器地址就是域名。
但是我们无法直接通过域名找到服务器,而是需要将域名解析为IP地址后,通过IP地址在网络中找到服务器。
因为网络分层模型设计中,网络层寻址工作只能依赖于IP地址。
有了IP地址为什么还要域名?直接使用IP地址访问服务器不好吗?
好是好,但是IP地址是一串数字,数字本身没有实际意义,无法关联记忆。
这个问题,还可以解释为 有了手机号码,为啥还要备注手机号主人的名字。
为什么网络通信中使用IP地址来表示网络设备位置,而不使用域名?
二者虽然都可以生成一个唯一标识,但是IP地址可以占用更少的内存,更加规范的格式。
比如IP地址只需要 32位二进制,就可以产生 255 * 255 * 255 * 255 = 4228250625 个网络地址,而域名本身组成可以是数字字母下划线,或者中文字符,而一个字符至少需要占用1个字节,也就是8位二进制,所以域名想要产生4228250625个网络地址,需要占用的内存太大。
另外 IP地址格式固定,使用十进制表示就是 0.0.0.0 到 255.255.255.255 之间,这种固定的,简单的格式,有利于网络传输数据包的设计,因为在网络层,需要将源目IP地址都封装进IP头部中,随着数据包一起传输过去。
但是使用域名的话,由于其格式多样,内存占用不固定,所以不利于网络传输数据包的设计。
正向解析和反向解析
域名的产生只是为了更加方便使用者记忆。而在底层网络传输前,域名必须要先解析为IP地址。此时解析称为正向解析。
而对应的反向解析就是指 通过IP地址获取域名。
反向解析的应用主要是 识别垃圾邮件。通过查询垃圾邮件的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服务器去顶级域名服务器查找。
后话
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
对于面试,说几句个人观点。
面试,说到底是一种考试。正如我们一直批判应试教育脱离教育的本质,为了面试学习技术也脱离了技术的初心。但考试对于人才选拔的有效性是毋庸置疑的,几千年来一直如此。除非你有实力向公司证明你足够优秀,否则,还是得乖乖准备面试。这也并不妨碍你在通过面试之后按自己的方式学习。
其实在面试准备阶段,个人的收获是很大的,我也认为这是一种不错的学习方式。首先,面试问题大部分基础而且深入,这些是平时工作的基础。就好像我们之前一直不明白学习语文的意义,但它的意义就在每天的谈话间。
所谓面试造火箭,工作拧螺丝。面试往往有更高的要求,也迫使我们更专心更深入地去学习一些知识,也何尝不是一种好事。