最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 输入url到页面显示都发生了什么?

    正文概述 掘金(葵藿倾阳)   2020-12-14   458

    输入url到页面显示发生了什么?

    1.浏览器查找当前URL是否存在缓存,并比较缓存是否过期。

    2.DNS解析URL对应的IP。

    3.建立TCP连接(三次握手)。

    4.HTTP发起请求。

    5.服务器处理请求,浏览器接收HTTP响应。

    6.浏览器解析渲染页面。

    7.关闭TCP连接(四次挥手)。

    URL

    url由这几部分组成:协议、主机、端口、路径

    protocol(协议)

    指定使用的传输协议, 最常用的是HTTP协议,还有HTTPS

    hostname(主机名)

    是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址

    port(端口号)

    整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。

    path(路径)

    由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

    输入url

    输入url到页面显示都发生了什么? 我们在输入url的时候,浏览器会从历史记录,书签等找到可能对应的url,给出提示,当按下Enter键之后,如果是url是域名不是IP地址,就会进行域名解析(DNS解析)

    DNS域名解析

    地址栏输入的域名并不是最后资源所在的真实位置,域名只是与IP地址的一个映射,网络服务器的IP地址太多不好记忆,就产生了域名,一个域名对应一个IP地址,域名解析的过程是将域名还原为IP地址的过程。

    1.我们本地硬盘下有一个hosts文件,作用是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”。一般来说,系统会首先自动从hosts文件中寻找对应的IP地址,如果有的话就直接使用hosts文件里面的IP地址,然后直接进行端口确认,找到则返回。

    2.如果没有找到,会查找本地DNS解析器的缓存,是否有这个网址映射关系,找到则返回。

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

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

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

    递归查询:在该模式下DNS服务器接收到客户机请求,必须返回一个准确的查询结果给客户机。如果该DNS服务器本地没有存储被查询的DNS信息,那么该服务器会(替客户机)询问其他服务器,并将返回的查询结果再返回给客户机。

    DNS缓存:DNS存在着多级缓存,从离浏览器的距离排序的话,有以下几种: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。

    TCP连接

    为实现数据的可靠传输,TCP要在应用进程间建立传输连接。它是在两个传输用户之间建立一种逻辑联系,使得通信双方都确认对方为自己的传输连接端点。

    建立连接前,服务器端首先被动打开其熟知的端口,对端口进行侦听。当客户端要和服务器端建立连接时,发起一个主动打开端口的请求(该端口一般为临时端口);然后进入三次握手的过程 输入url到页面显示都发生了什么?

    可以通俗的理解为

    1.A给B打电话,说能听到嘛? A不知道B是否能听到自己讲话。

    2.B听到A讲话了,回复下A,表示自己能听到,问下A能听到自己讲话不?B不知道A是否知道自己听到了

    3.这时候A可以确认两件事,B能听到自己讲话,自己也能听到B讲话,此时回复B,我能听到你说话可以聊天了

    为什么是三次握手

    三次握手是为了防止失效的连接请求报文段被服务端接收,从而产生错误。

    client发出的一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。

    假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。但是由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。而server却以为新的连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。 采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接

    发起HTTP请求

    从客户端到服务器端的请求消息。浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:(1)请求方法URI协议/版本(2) 请求头(Request Header)(3) 请求正文

    1.请求行:“方法URI协议/版本”例如:GET/sample.jsp HTTP/1.1 常用的方法有: GET, POST, PUT, DELETE, OPTIONS, HEAD。

    2.请求头:请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

    输入url到页面显示都发生了什么?

    3.请求正文:当使用POST, PUT等方法时,通常需要客户端向服务器传递数据。这些数据就储存在请求正文中。在请求包头中有一些与请求正文相关的信息

    输入url到页面显示都发生了什么?

    服务器处理请求并返回HTTP报文

    浏览器接收HTTP响应。HTTP响应报文也是由三部分组成: 状态码, 响应报头和响应报文。

    状态码:状态码是由3位数组成,第一个数字定义了响应的类别,且有五种可能取值:

    1xx:指示信息–表示请求已接收,继续处理。

    2xx:成功–表示请求已被成功接收、理解、接受。

    3xx:重定向–要完成请求必须进行更进一步的操作。

    4xx:客户端错误–请求有语法错误或请求无法实现。

    5xx:服务器端错误–服务器未能实现合法的请求。 平时遇到比较常见的状态码有:200, 204, 301, 302, 304, 400, 401, 403, 404, 422, 500(分别表示什么请自行查找)。

    响应报头: 输入url到页面显示都发生了什么?

    响应报文:服务器返回给浏览器的文本信息,通常HTML, CSS, JS, 图片等文件就放在这一部分。

    输入url到页面显示都发生了什么?

    浏览器解析渲染页面

    浏览器在收到HTML,CSS,JS文件后,它是如何把页面呈现到屏幕上的?下图对应的就是WebKit渲染的过程

    输入url到页面显示都发生了什么?

    浏览器是边解析变渲染的过程

    1.浏览器解析HTML文件构建DOM树。

    2.CSS资源会解析成CSS Rule Tree。

    3.结合DOM和CSSOM构建渲染树。

    4.浏览器开始布局渲染树并将其绘制到屏幕上。(这个过程比较复杂 涉及到reflow(回流)和repain(重绘)), DOM节点中的各个元素都是以盒模型的形式存在,这些都需要浏览器去计算其位置和大小等,这个过程称为relow;当盒模型的位置,大小以及其他属性,如颜色,字体,等确定下来之后,浏览器便开始绘制内容,这个过程称为repain。页面在首次加载时必然会经历reflow和repain。reflow过程是非常消耗性能的,应该尽可能少的减少reflow。

    渲染树和DOM树的关系:那些不可见的DOM元素(如…,display=none的元素)不会被插入渲染树中;还有像一些节点是绝对定位或浮动,这些节点会在文本流之外,因此他们会在渲染树和DOM树的不同位置,渲染树标识出真实的位置,并用一个占位结构标识出他们原来的位置,而DOM树上是他们原来的位置

    如果遇到<script>标签,浏览器会立即执行(暂不考虑defer及async属性),此时会出现页面阻塞,不仅要等待文档中JS文件下载加载完毕,还要等待JS解析执行完毕,才可以恢复HTML文档的加载解析。这是浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,DOM树改变浏览器需要回过头来重新渲染这部分代码,所以浏览器希望通过阻塞其他内容的下载和呈现,来避免出现更多的不必要的Reflow称为回流或者重排,CSS文件的加载不影响JS文件的加载,但是却影响JS文件的执行。JS代码执行前浏览器必须保证CSS文件已经下载并加载完毕。

    如果遇到图片资源,浏览器也会另外发出一个请求,来获取图片资源,这是异步请求,所以不会等到图片下载完,而是继续渲染后面的HTML文档,等到服务器返回图片文件,如果先前并没有为这个图片设定宽高,那么由于图片占用了一定面积,影响了后面段落的排布,浏览器会进行Reflow

    关闭TCP连接

    输入url到页面显示都发生了什么?

    tcp是全双工通信,服务端和客服端都能发送和接收数据。 tcp在断开连接时,需要服务端和客服端都确定对方将不再发送数据。

    1.A告诉B,任务处理完啦,想要断开连接,表示A不会主动发请求了,但是还可以接收信息

    2.B收到后,回复A我收到你的断开请求了(这样A不会因为没有B收到应答而继续发送断开连接的请求),我准备下,此时B可能还有需要发送给A的数据

    3.保证数据通信正常可靠地完成,B处理完数据后,告诉A我准备好了,可以断开了,B进入超时等待状态。

    4.A告诉B确认中断,B可以进行释放,连接断开。


    起源地下载网 » 输入url到页面显示都发生了什么?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元