在地址栏输入url发生了什么,详细

1 URL 进行解析,分析所需要使用的传输协议和请求的资源的路径。如果输入的 URL 中的协议或者主机名不合法,将会把地址栏中输入的内容传递给搜索引擎。
如果没有问题,浏览器会检查 URL 中是否出现了非法字符,如果存在非法字符,则对非法字符进行转义后再进行下一过程。
2、缓存判断:浏览器会判断所请求的资源是否在缓存里,如果请求的资源在缓存里并且没有失效,那么就直接使用,否则向服务器发起新的请求。
3、DNS解析:下一步首先需要获取的是输入的 URL 中的域名的 IP 地址,首先会判断本地是否有该域名的 IP 地址的缓存,
如果有则使用,如果没有则向本地 DNS 服务器发起请求。本地 DNS 服务器也会先检查是否存在缓存,如果没有就会先向根域名服务器发起请求,
获得负责的顶级域名服务器的地址后,再向顶级域名服务器请求,然后获得负责的权威域名服务器的地址后,再向权威域名服务器发起请求,
最终获得域名的 IP 地址后,本地 DNS 服务器再将这个 IP 地址返回给请求的用户。
用户向本地 DNS 服务器发起请求属于递归请求,本地 DNS 服务器向各级域名服务器发起请求属于迭代请求。
4、获取MAC地址:当浏览器得到 IP 地址后,数据传输还需要知道目的主机 MAC 地址,
因为应用层下发数据给传输层,TCP 协议会指定源端口号和目的端口号,然后下发给网络层。网络层会将本机地址作为源地址,获取的 IP 地址作为目的地址。
然后将下发给数据链路层,数据链路层的发送需要加入通信双方的 MAC 地址,本机的 MAC 地址作为源 MAC 地址,目的 MAC 地址需要分情况处理。
通过将 IP 地址与本机的子网掩码相与,可以判断是否与请求主机在同一个子网里,如果在同一个子网里,可以使用 APR 协议获取到目的主机的 MAC 地址,
如果不在一个子网里,那么请求应该转发给网关,由它代为转发,此时同样可以通过 ARP 协议来获取网关的 MAC 地址,
此时目的主机的 MAC 地址应该为网关的地址。
5、TCP三次握手:下面是 TCP 建立连接的三次握手的过程,首先客户端向服务器发送一个 SYN 连接请求报文段和一个随机序号,
服务端接收到请求后向客户端发送一个 SYN ACK报文段,确认连接请求,并且也向客户端发送一个随机序号。
客户端接收服务器的确认应答后,进入连接建立的状态,同时向服务器也发送一个ACK 确认报文段,
服务器端接收到确认后,也进入连接建立状态,此时双方的连接就建立起来了。
在这里插入图片描述

6、HTTPS握手:如果使用的是 HTTPS 协议,在通信前还存在 TLS 的一个四次握手的过程。
客户端使用https的url访问web服务器,要求与服务器建立ssl连接
web服务器收到客户端请求后, 会将网站的证书(包含公钥)传送一份给客户端
客户端收到网站证书后会检查证书的颁发机构以及过期时间, 如果没有问题就随机产生一个秘钥
客户端利用公钥将会话秘钥加密, 并传送给服务端, 服务端利用自己的私钥解密出会话秘钥,为非对称加密,比较耗时
之后服务器与客户端使用 秘钥 对称加密传输,
7、返回数据:当页面请求发送到服务器端后,服务器端会返回一个 html 文件作为响应,浏览器接收到响应后,开始对 html 文件进行解析,开始页面的渲染过程。
8、页面渲染:浏览器首先会根据 html 文件构建 DOM 树,根据解析到的 css 文件构建 CSSOM 树,
如果遇到 script 标签,则判端是否含有 defer 或者 async 属性,要不然 script 的加载和执行会造成页面的渲染的阻塞。
当 DOM 树和 CSSOM 树建立好后,合并形成reader树。对reader树进行分层,为每个图层生成绘制列表,再将图层分成图块,紧接着光栅化将图块转换成位图,最后合成绘制生成页面。
9、TCP四次挥手:最后一步是 TCP 断开连接的四次挥手过程。若客户端认为数据发送完成,则它需要向服务端发送连接释放请求。
服务端收到连接释放请求后,会告诉应用层要释放 TCP 链接。
然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明客户端到服务端的连接已经释放,不再接收客户端发的数据了。
但是因为 TCP 连接是双向的,所以服务端仍旧可以发送数据给客户端。
服务端如果此时还有没发完的数据会继续发送,完毕后会向客户端发送连接释放请求,然后服务端便进入 LAST-ACK 状态。
客户端收到释放请求后,向服务端发送确认应答,此时客户端进入 TIME-WAIT 状态。
该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,
若该时间段内没有服务端的重发请求的话,就进入 CLOSED 状态。当服务端收到确认应答后,也便进入 CLOSED 状态。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果一个页面从用户在地址栏输入URL,首先,用户会在浏览器的地址栏输入网页的URL地址,然后按下回车键。浏览器接收到用户输入URL后,会进行一系列的操作来加载该页面。 首先,浏览器会解析URL,分析其中的协议部分(比如HTTP、HTTPS、FTP等)以确定如何与服务器建立连接。接着,浏览器会解析URL的主机部分,找到对应的服务器IP地址。如果用户输入的是域名,浏览器会向域名系统(DNS)发送请求,将域名解析为IP地址,然后与服务器建立连接。如果用户输入的是IP地址,浏览器会直接使用该IP地址与服务器建立连接。 连接建立后,浏览器会向服务器发送HTTP请求。HTTP请求中包含了用户的浏览器类型、支持的语言、请求的资源路径等信息。服务器收到请求后,会解析请求头中的信息,确定要返回的资源,并做出相应的处理。 服务器根据请求的资源类型进行处理,如果是静态资源(如HTML、CSS、JavaScript文件等),服务器会将对应的文件内容返回给浏览器,浏览器接收到文件后再进行解析和渲染。如果是动态资源(如PHP、ASP、JSP等),服务器会执行相应的脚本代码,生成HTML等静态内容,然后返回给浏览器。 最后,浏览器接收到服务器返回的内容后,会进行解析和渲染,将页面呈现给用户。浏览器会根据HTML结构,解析DOM树并加载相应的CSS样式文件和JavaScript脚本文件,最终将页面内容显示在用户的浏览器窗口中。 总之,当一个页面从用户在地址栏输入URL开始加载时,需要进行URL解析、DNS解析、连接建立、HTTP请求、服务器处理和响应、浏览器解析和渲染等一系列操作,最终将页面内容呈现给用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值