详解http访问解析流程原理


Posted in Javascript onOctober 18, 2017

详解http访问解析流程原理

http访问网址域名解析流程:

1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。

6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

如下图:

详解http访问解析流程原理

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
ExtJs中简单的登录界面制作方法
Aug 19 Javascript
JavaScript单元测试ABC
Apr 12 Javascript
js 程序执行与顺序实现详解
May 13 Javascript
Javascript中实现String.startsWith和endsWith方法
Jun 10 Javascript
Bootstrap Validator 表单验证
Jul 25 Javascript
Angular2.js实现表单验证详解
Jun 23 Javascript
总结js函数相关知识点
Feb 27 Javascript
深入理解Node module模块
Mar 26 Javascript
vue-rx的初步使用教程
Sep 21 Javascript
vue项目动态设置页面title及是否缓存页面的问题
Nov 08 Javascript
如何使JavaScript休眠或等待
Apr 27 Javascript
WebRTC记录音视频流(web技术分享)
Feb 24 Javascript
js实现会跳动的日历效果(完整实例)
Oct 18 #Javascript
打字效果动画的4种实现方法(超简单)
Oct 18 #Javascript
Angularjs 手写日历的实现代码(不用插件)
Oct 18 #Javascript
基于JavaScript表单脚本(详解)
Oct 18 #Javascript
VUE饿了么树形控件添加增删改功能的示例代码
Oct 17 #Javascript
vue-router实现tab标签页(单页面)详解
Oct 17 #Javascript
BACKBONE.JS 简单入门范例
Oct 17 #Javascript
You might like
社区(php&&mysql)一
2006/10/09 PHP
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
php use和include区别总结
2019/10/13 PHP
Dom操作之兼容技巧分享
2011/09/20 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
PHP开发的一般流程
2013/08/13 面试题
ktv中秋节活动方案
2014/01/30 职场文书
《画家乡》教学反思
2014/04/22 职场文书
航空学院求职信
2014/06/11 职场文书
四风自我剖析材料
2014/09/30 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python
pytorch 实现多个Dataloader同时训练
2021/05/29 Python