dns协议

[网络] 在浏览器输入URL回车之后发生了什么

狂风中的少年 提交于 2019-12-06 10:59:02
目录 一 前言 二 URL解析 三 DNS域名解析 1 IP 地址 2 什么是域名解析 3 浏览器如何通过域名去查询 URL 对应的 IP 呢 4 小结 四 建立连接 1 TCP三次握手 2 SYN攻击 3 为什么不能用两次握手进行连接 五 发送HTTP请求 1 请求报文介绍   2 请求流程 六 服务器处理请求并返回 HTTP 报文 1. 服务器 2. MVC 后台处理阶段 3. HTTP响应报文 七 浏览器解析渲染页面 1 根据 HTML 解析 DOM 树 2 根据 CSS 解析生成 CSS 规则树 3 结合 DOM 树和 CSS 规则树,生成渲染树 4 根据渲染树计算每一个节点的信息(布局) 5 根据计算好的信息绘制页面 八 断开连接 1 四次挥手 2 为什么连接的时候是三次握手,关闭的时候却是四次握手? 3 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? 回到顶部 一 前言   打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解!      从URL输入到页面展现   总体来说分为以下几个过程:   (1)URL 解析   (2)DNS 解析:将域名解析成 IP 地址   (3)TCP 连接:TCP 三次握手   (4)发送 HTTP 请求   (5

在浏览器输入URL回车之后发生了什么?(超详细版)

≡放荡痞女 提交于 2019-12-06 10:57:44
前言   这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了。   这篇笔记是我这两天看了数十篇文章总结出来的,所以相对全面一点,但由于我是做前端的,所以会比较重点分析浏览器渲染页面那一部分,至于其他部分我会罗列出关键词,感兴趣的可以自行查阅, 注意: 本文的步骤是建立在,请求的是一个简单的 HTTP 请求,没有 HTTPS、HTTP2、最简单的 DNS、没有代理、并且服务器没有任何问题的基础上,尽管这是不切实际的。 大致流程 URL 解析 DNS 查询 TCP 连接 处理请求 接受响应 渲染页面 一、URL 解析   地址解析:     首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。   HSTS     由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。详见: 你所不知道的 HSTS [1] 。   其他操作     浏览器还会进行一些额外的操作,比如安全检查、访问限制(之前国产浏览器限制 996.icu)。   检查缓存      二、DNS 查询   基本步骤        1. 浏览器缓存     浏览器会先检查是否在缓存中,没有则调用系统库函数进行查询。   2. 操作系统缓存    

带你探索网络里的那些秘密

蹲街弑〆低调 提交于 2019-12-06 10:04:41
背景 网络,网络... 虽然只是一个简单的名词,但是她的背后却掩藏着太多太多的故事以及知识。 穷其编程的一生,或许也只能探索出那冰山一角,嗨... 小时虽知,学海无涯,却毫不知意。玩乃天性,却空流时光。憾... so,矫情之余,我们来探索一下网络究竟是怎么传输的。 概述 探索网络的范围,都在上图有所展示(另存为看大图)。 正文 一. 生成HTTP请求消息 打开一个网站,都是从浏览器中输入网址开始,我们的探索也是从这里开始。 https: 是协议,告诉浏览器我们要访问的目标,而https: 代表的就是访问Web服务器,当然也有其他的协议。比如ftp:访问的就是FTP服务器等。 sexyphoenix.github.io 是Web服务器域名,可以告诉我们在哪里可以找到Web服务器。 about/ 是Web服务器里面的文件路径名,这里的about是目录名,全路径可能是about/index.md,而index.md应该被github掩藏了。 浏览器首先要做的就是对URL进行解析,知道我们要访问的是sexyphoenix.github.io这个Web服务器上文件路径为about目录下的默认文件。 知道了要访问的目标,接下来浏览器就要生成HTTP的请求信息,介绍到这,就要聊一聊HTTP协议了。 HTTP协议规定了客户端和服务器通信的内容和步骤,简单来说,就是两个部分 “对什么” 做

http和https的区别

混江龙づ霸主 提交于 2019-12-06 04:59:26
本文链接:https://www.cnblogs.com/hello-web/p/10394178.html 一句话:HTTP+加密+认证+完整性保护=HTTPS 用https方式访问的前提是网站部署了SSL证书,如超真SSL、超安SSL等。 Https方式访问,客户端到服务器端传输的数据是加密的,即使被截获也没法破解,安全性很高;http方式访问,账户密码是明文传输的,极易泄露 http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。 https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。 http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。 https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。 作者:法号桑菜 链接:https://www.zhihu.com/question

网络协议-HTTPDNS协议

若如初见. 提交于 2019-12-06 04:13:53
网络协议-HTTPDNS协议 DNS 有两个功能,第一个是根据名称查找对应的地址,另一个是可以针对多个地址负载均衡,能在多个地址中找一个离你最近的地方访问。 但是这个地址簿也会给你指错路,明明你要找的饭店就在眼前,它却给你推荐到五公里以外。 传统DNS 存在哪些问题? 1. 域名缓存问题 缓存的域名信息有可能失效了 2. 域名转发问题 如果A运营商的客户请求一个域名,正常情况下A运营商会自己请求权威DNS 服务器。但也会有这样的情况,A运营商的DNS 偷懒,它转给B 运营商的DNS,B 运营商的DNS 去请求权威NDS 服务器时,会误以为这个客户是运营商B区域的,所以返回的IP 地址是运营商B区域的地址。 3. 出口NAT问题 网络包在网关出口的时候,通过NAT(网络地址转换)将从这个网关出去的包换成新的IP地址。当然请求返回的时候,这个网关还会将IP 地址转换回去,这对于访问是没有问题的。但对DNS 就有问题了。 因为一旦做了网络地址的转换,权威DNS 服务器就没法通过这个地址来判断客户端到底来自哪个运营商。 4. 域名更新问题 如果像百度这样的应用,当它的一个机房出了问题,这时需要修改权威DNS,将域名指向新的IP地址,但是如果更新太慢,那很多用户都会出现访问异常。 5. 解析延迟问题 DNS 的查询过程要递归遍历多个DNS 服务器,才能获得最终的解析结果,这会带来一定的延时

DNS 域名系统与邮件服务器

左心房为你撑大大i 提交于 2019-12-06 02:23:04
目录 DNS 域名系统 定义 域名分类 解析流程 DNS分类 资源记录 格式 资源记录类型 用 bind 搭建一台 DNS 服务器 安装 bind 创建自己的 zone 文件 在主配置文件中,增加自己的zone 检测是否配置成功 测试配置的结果 防火墙放行 在 RHEL2 上配置并测试 用 unbound搭建一个缓存服务器 安装 更改配置 防火墙放行 在 RHEL3 上将DNS服务器配置成缓存服务器 邮件服务器 电子邮件架构 邮件协议 电子邮件系统 搭建邮件系统 创建空的 Postfix 服务器 配置接收端 在 RHEL1 上发送 RHEL2 查看 配置客户端下载邮件 更改 RHEL2 上的 Postfix 配置 创建一个账号 配置 POP3 服务器 在物理机上打开 Foxmail 进行配置 DNS 域名系统 定义 域名系统是域名和IP地址相互映射的一个分布式数据库,能够是用户更方便的访问互联网。不用去记住能够被机器直接读取的IP。 域名分类 域是分层管理的 # 根域: [.] # 顶级域: 按性质: [.org\.net\.com\.edu\.gov] 按国家: [.cn\.tw\.hk] # 普通域 比如: [.baidu] 解析流程 本地DNS缓存 -> 本地hosts文件 -> 指定的DNS服务器 如果指定的DNS服务器没有找到对应的域名,会返回到客户端

转载七、DNS八、TCP连接的建立与终止

陌路散爱 提交于 2019-12-06 00:19:33
七、DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。 八、TCP连接的建立与终止 1.三次握手 TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。 第一次握手: 建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认; 第二次握手: 服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态; 第三次握手:

访问一个网页的全过程

时间秒杀一切 提交于 2019-12-05 23:13:44
整个过程可以概括为几下几个部分: 域名解析成IP地址; 与目的主机进行TCP连接(三次握手); 发送与收取数据(浏览器与目的主机开始HTTP访问过程); 与目的主机断开TCP连接(四次挥手); 域名解析成IP地址 访问目标地址有两种方式: 使用目标IP地址访问。 使用域名访问。域名解析就是域名到IP地址的转换过程,域名的解析工作由DNS服务器完成。 DNS域名解析时用的是UDP协议。整个域名解析的过程如下: 浏览器向本机DNS模块发出DNS请求,DNS模块生成相关的DNS报文; DNS模块将生成的DNS报文传递给传输层的UDP协议单元; UDP协议单元将该数据封装成UDP数据报,传递给网络层的IP协议单元; IP协议单元将该数据封装成IP数据包,其目的IP地址为DNS服务器的IP地址; 封装好的IP数据包将传递给数据链路层的协议单元进行发送; 发送时在ARP缓存中查询相关数据,如果没有,就发送ARP广播(包含待查询的IP地址,收到广播的主机检查自己的IP,符合条件的主机将含有自己MAC地址的ARP包发送给ARP广播的主机)请求,等待ARP回应; 得到ARP回应后,将IP地址与路由的下一跳MAC地址对应的信息写入ARP缓存表; 写入缓存后,以路由下一跳的地址填充目的MAC地址,以数据帧形式转发;转发可能进行多次; DNS请求到达DNS服务器的数据链路层协议单元;

网络相关的命令工具研究报告:nslookup

徘徊边缘 提交于 2019-12-05 22:55:59
1. 引言 : 想要访问一个网站,得到对应的HTTP服务,就要先获知它对应的IP地址      而我们平时访问用的是域名,在众多网络命令中,nklookup可以查询 域名-IP/IP-域名 的对应关系 2.nslookup 功能   主要用于DNS域名解析,网络故障时候可以用此命令查看是否是域名解析错误 3. DNS   1) DNS产生背景       OSI参考模型中第三层的网络协议-IP协议 主要用于实现终端节点的通信       由于IP是一串数字序列组成的,如192.168.6.12,其不便于记忆,从而用域名代替;         随着网络规模的扩大,IP-主机名的管理也变得复杂,从而有了DNS系统,用于帮助管理IP-域名之间的对应关系   2) DNS层次结构       域名如: www.baidu.com 是一个分层结构的名称, 以树形结构实现同一个组织内可以同名; 结构中只有一个根,其子结点都是顶级域名       例如: xx小区11栋111---> xx.eleven.e xx小区12栋111--->xx.twelve.e 这两个虽然都属于同一小区,但不属于同一栋楼, 所以可以重名         3) 域名服务器(管理域名的主机和相应的软件)       在分层结构中,每一层都有域名服务器,而每个服务器都包含该层下面一层中所有域名服务器的IP地址

网络相关的命令工具研究报告

允我心安 提交于 2019-12-05 20:45:40
  POSIX标准对操作系统的系统接口API和Shell脚本语言及命令工具给出了规格定义,但是其中似乎并不包含网络相关的命令工具,但实际上网络功能在操作系统基础服务中占有着突出的地位,各种版本的操作系统也都提供了网络相关的命令工具,已经形成了某种程度的事实上的标准。此文将对网络相关的命令工具进行调研,重点分析nslookup命令。 1、 为什么要用nslookup   比如你新注册了一个域名,然而有些地区一直无法访问,在更换了DNS服务器之后,还是有很多地区无法访问。那么用什么命令可以查一下域名的DNS服务器是否生效呢。再比如登录某平台需要相关ip,但你知道相应的域名,如何通过相关域名得到对应的ip。这时候就可以采用强大的nslookup命令,nslookup命令不仅可以查询域名是否解析成功,还可以查看域名的DNS服务器是那些,以及域名的mx解析是否成功等等。   在配置好DNS服务器后,一般情况下只要IP地址保持不变,我们就不再需要去维护DNS的数据文件了。不过在确认域名解析正常之前最好测试一下所有的配置是否正常。采用ping命令可以进行简单地检查。不过Ping指令只是一个检查网络联通情况的命令,虽然在输入的参数是域名的情况下会通过DNS进行查询,但是它只能查询A类型和CNAME类型的记录,而且只会告诉你域名是否存在,没有其他详细信息