从应用层到实体层的协议太多了,我们并不能一一涉及,目前来说就打算整理可能会与前端相关的协议.

前端面试常会问到一个问题-"从输入一个url到页面渲染经历了哪些过程".这其实是一个相当复杂的过程,所以总结的时候常常是归纳了几个重要的步骤.而这次我将尝试通过结合协议的方式去理解它们.

URL组成

首先,我们需要先了解网址的组成.举例说明

未解析版

https://i.cnblogs.com/posts/edit

https----->https协议
i.cnblogs.com --- 域名
/posts/edit 路由

解析版

(不代表实际地址,我瞎编的一个,只是为了说明组成)

https//192.168.1.255:443/index.html

https ---->https协议
192.168.1.255---->IP地址
443 ---->端口号
index.html---->文件路径

所以我们可以大概知道URL有这些组成,协议(http或者https协议)、IP地址、端口号、路径.那么,结合URL,我在之前前端路由那里已经大概解释了,路由为啥指向index.html静态资源路径,剩下的就需要知道域名是怎么解析成IP的,https是干嘛用的,端口号是怎么来的.

DNS协议

DNS为域名系统,其重要功能是域名转IP.在互联网中,每台计算机都会分到一个IP地址,我们可以通过IP地址去访问这些计算机,得到相关服务.而DNS就是关了管理域名和IP的系统.

首先,我们了解一下域名的组成.

i.cnblogs.com

而它的实际域名是

i.cnblogs.com.root

DNS是分级查询的,而域名的每个点都是一个分级.

      ".root":是根域名,因为大家都是这个根域名,所以就隐藏了.

".com":顶级域名,其他还有".cn"之类的

".cnblogs":次级域名,可以自定义

"i":三级域名或者主机名,如果不加,默认是"www"

DNS的解析就是按这种分级进行解析的.

DNS

1.当你输入一个域名的时候,计算机会先去本地的hosts文件中找有没有对应的映射关系,如果有就直接拿到对应id,没有就去到DNS解析器(具体作用就是将在完整合规的域名请求信息上再加几个信息,),之后再

2.查看本地DNS缓存,这些缓存可以会分存在很多地方,最主要的是DNS解析器和浏览器缓存中.比如你成功访问过一次某网站了,浏览器就可能把这个域名和ip的映射保存起来,下次输入相同域名时就可直接获取.到目前为止都没有向DNS服务器发请求.假如以上步骤都没找到,则

3.向DNS服务器发送请求,关于DNS服务器的工作流程如下.

1):首先会向本地DNS服务器发请求,这个本地并不是说在自己电脑上,而是给你指定的服务器.我们window+r ,然后输入cmd,然后再ipconfig/all 能看到我们的网络信息,其中有个就是DNS服务器的ip地址,这个就是咱们的本地DNS服务器,也就是"专门对你负责的",所以当它找到对应ip返回给我们时,这个域名解析是有权威性的.当本地DNS服务器没有对应的映射时,便会求助外界.

2):本地DNS服务器有内置根域名服务器对应的ip地址,目前全世界有13个根域名服务器,本地DNS服务器内部可能对应其中的多条.接下来便进行DNS的分级查询.查询的流程如下

         a):先向这些根服务器发送一个".com"的搜索条件,然后可能有多条信息,告诉本地服务器我们都有相关信息.但是本地DNS服务器只会保存首先回复的根域名服务器的相关信息,并且不再向其他根服务器发送信息.

             b):根服务器下面管理着许多下一级服务器.当本地服务找到对自己负责的根服务器时,便会再给它发一个".cnblogs.com"的请求.而该根服务器则会返回一个列表,告诉本地服务器有哪些服务器有相关信息,并把对应服务器的ip给出来.

             c):本地服务器拿到对应ip之后便会去请求,发送"i.cnblogs.com"请求,对应服务器将会给出一条或者多条信息.如果是多条,将会有多个ip,每条对应每个ip,也就是是这一个域名对应了多条ip,而这些ip理论上都是可以访问的.

                  假如这个服务器并没有"i.cnblogs.com",那本地服务器则会拿到另一个服务器去查,知道把所有次级服务器查完或者查到想要的ip为止.

            d):转发.以上的三个步骤已经是个完整的流程了,但是转发是一直新规则.默认情况下,当本地DNS服务器没解析成功时会向根服务器发送请求,然后逐级往下.这个顺序.但是转发是可以打破这种顺序的.它可以让服务器直接去向指定服务器发送请求,不必循规蹈矩.但是前提是必须安装转发器,并且配置了转发目标服务器ip.

到目前为止我们只是解析了ip,拿到了如下的地址

https//192.168.1.255/index.html

下一篇我们再分析https

参考文献:

阮一峰网络日志:DNS原理入门

DNS的工作原理及解析

前端浅谈-协议相关(DNS协议)的更多相关文章

  1. 网络协议 16 - DNS 协议:网络世界的地址簿

    [前五篇]系列文章传送门: 网络协议 11 - Socket 编程(下):眼见为实耳听为虚 网络协议 12 - HTTP 协议:常用而不简单 网络协议 13 - HTTPS 协议:加密路上无尽头 网络 ...

  2. 前端浅谈-协议相关(http/https)

    当DNS工作完之后得到了一个网址 https//192.168.1.255/index.html 这个并不符合标准的请求路径.接下来就是https的功能了.讲https前先讲讲它的前身http协议 H ...

  3. 前端浅谈---协议相关(TCP连接)

    TCP连接 http的描述里面,我弱化了交互过程的描述,因为它相对复杂.所以我在此单独描述.客户端和服务端传递数据时过程相对谨慎和复杂,主要是开始和结束的过程.而这整个过程就是TCP连接.连接流程大体 ...

  4. 浅谈iOS开发的协议(protocol)和代理(delegate)

    协议和代理对于一个新手来说确实不讨好理解,也有很多的iOS开发的老手对此是懂非懂的.网上的很多博文只是讲了怎么使用,并没有说的很明白.下面我谈一下我的理解. 1.你要先搞明白,协议和代理为什么会出现, ...

  5. 浅谈 Raft 分布式一致性协议|图解 Raft

    前言 本篇文章将模拟一个KV数据读写服务,从提供单一节点读写服务,到结合分布式一致性协议(Raft)后,逐步扩展为一个分布式的,满足一致性读写需求的读写服务的过程. 其中将配合引入Raft协议的种种概 ...

  6. 网络协议 16 - DNS 协议

    为什么在地址栏输入域名,就能直接访问到对应服务器?全局负载均衡和内部负载均衡又是什么?这些都和 DNS 解析息息相关,让我们一起来解密 DNS 解析.     其实说起 DNS 解析,应该都知道它很像 ...

  7. Web 前端 - 浅谈外部手动控制 Promise 状态

    前言 当有多个共享资源.协同操作的时候,往往需要根据动态亦或是复杂的条件以控制和调用程序逻辑. 还是那句话,懂的人自然懂,不懂的人也搜不到这个随笔. 设计 PendingPromise<T> ...

  8. 前端浅谈-Js的组成

    这里主要想详细的分析一下浏览器渲染过程,但东西比较多.所以分成多个部分. JS由三个部分组成,分别为ECMAScript.BOM.DOM. 其中BOM是浏览器层面的东西,而DOM是页面层面的东西.简单 ...

  9. 网络协议 19 - RPC协议综述:远在天边近在眼前

    [前五篇]系列文章传送门: 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HT ...

随机推荐

  1. 微信小程序(二)

    创建项目: hello.wxml hello world 每个学习的开始 <view>hello world!</view> hello.js 像 app.js 一样 Page ...

  2. Centos8 Docker部署ElasticSearch集群

    ELK部署 部署ElasticSearch集群 1.拉取镜像及批量生成配置文件 # 拉取镜像 [root@VM-24-9-centos ~]# docker pull elasticsearch:7. ...

  3. 《重学Java高并发》Sempahore的使用场景与常见误区

    大家好,我是威哥,<RocketMQ技术内幕>一书作者,荣获RocketMQ官方社区优秀布道师.CSDN2020博客执之星Top2等荣誉称号.目前担任中通快递技术平台部资深架构师,主要负责 ...

  4. SpringCloud升级之路2020.0.x版-44.避免链路信息丢失做的设计(1)

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们在这一节首先分析下 Spring Cloud Gateway 一些其他可能丢失链路信息 ...

  5. CF1511E Colorings and Dominoes

    考虑计数拆开贡献. 因为在一个方案中一个格子最多只会贡献一次,那么不妨反过来求这个格子贡献了多少次. 然后发现,行列独立,那么我们单独计算红蓝色,即可. 一个偶数块贡献当且仅当前面也是偶数块. 然后显 ...

  6. Codeforces 512D - Fox And Travelling(树上背包)

    题面传送门 题意: 给出一张无向图,每次你可以选择一个度数 \(\leq 1\) 的点并将其删除. 问对于 \(k=0,1,2,\dots,n\),有多少个删除 \(k\) 个点的序列,答案模 \(1 ...

  7. Topcoder 12519 ScotlandYard(点对 dp+最长路)

    题面传送门 题意: 有两个人 A 和 B 玩一个游戏.游戏规则大致是这样的: 有 \(n\) 个城市和三种交通工具公交.地铁和出租车. 给出三个 \(n\times n\) 的字符矩阵 \(b,m,t ...

  8. 洛谷 P6060 - [加油武汉]传染病研究(数论)

    洛谷题面传送门 一道不算太难的题,题解稍微写写吧( 首先根据约数个数和公式,对于一个 \(n=p_1^{\alpha_1}·p_2^{\alpha_2}·\cdots·p_m^{\alpha_m}\) ...

  9. 洛谷 P4887 -【模板】莫队二次离线(第十四分块(前体))(莫队二次离线)

    题面传送门 莫队二次离线 mol ban tea,大概是这道题让我第一次听说有这东西? 首先看到这类数数对的问题可以考虑莫队,记 \(S\) 为二进制下有 \(k\) 个 \(1\) 的数集,我们实时 ...

  10. P5896 [IOI2016]aliens

    *IX. P5896 [IOI2016]aliens DP 优化方法大杂烩,详解 wqs 二分及其注意事项,斜率优化等其它 DP 优化方法. **** 团队赛 T6,没想到是 IOI 原题.当时看出来 ...