(15)输入URL后会发生什么?


一、输入URL后会发生什么?

在这里插入图片描述

1、用户输入关键词,地址栏判断是搜索内容还是url地址。

  • 如果是搜索内容,会使用浏览器默认搜索引擎加上搜索内容合成url;
  • 如果是域名会加上协议(如https)合成完整的url。
    在这里插入图片描述

2、DNS解析
准备IP地址和端口:进行DNS解析时先查找缓存,没有再使用DNS服务器解析,查找顺序为:
浏览器缓存–>本机缓存–>hosts文件–>路由器缓存–>ISP DNS缓存–>DNS递归查询| DNS迭代查询

  • DNS递归查询
    在这里插入图片描述
  • DNS迭代查询
    在这里插入图片描述

3、建立tcp连接
成功建立了TCP连接后,就可以开始数据传送

4、客户端发送HTPP请求
一个典型的 http request header 一般需要包括请求的方法,例如 GET 或者 POST 等,不常用的还有 PUT 和 DELETE 、HEAD、OPTION以及 TRACE 方法,一般的浏览器只能发起 GET 或者 POST 请求。客户端向服务器发起http请求的时候,会有一些请求信息,请求信息包含三个部分:

  • 方法URL议/版本
  • 请求头(Request Header):请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等
  • 请求正文
    请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息。

5、服务器处理请求
后端从在固定的端口接收到TCP报文开始,它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用。
一些大一点的网站会将你的请求到反向代理服务器中,因为当网站访问量非常大,网站越来越慢,一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。
此时,客户端不是直接通过HTTP协议访问某网站应用服务器,而是先请求到Nginx,Nginx再请求应用服务器,然后将结果返回给客户端,这里Nginx的作用是反向代理服务器。同时也带来了一个好处,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。

6、服务器响应请求
这一步,它会把它的处理结果返回,也就是返回一个HTPP响应。HTTP响应与HTTP请求相似,HTTP响应也由3个部分构成,分别是:

  • 状态行
    协议版本:是用http1.0还是其他版本
    状态代码:状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。如下:
    1xx:信息性状态码,表示服务器已接收了客户端请求,客户端可继续发送请求
    2xx:成功状态码,表示服务器已成功接收到请求并进行处理
    3xx:重定向状态码,表示服务器要求客户端重定向
    4xx:客户端错误状态码,表示客户端的请求有非法内容
    5xx:服务器错误状态码,表示服务器未能正常处理客户端的请求而出现意外错误。
    状态描述:状态描述给出了关于状态代码的简短的文字描述。比如状态代码为200时的描述为 ok
  • 响应头(Response Header)
    响应头部:由关键字/值对组成,每行一对,关键字和值用英文冒号":"分隔。
  • 响应正文:包含着我们需要的一些具体信息,比如cookie,html,image,后端返回的请求数据等等。
    响应正文和响应头之间有一行空格,表示响应头的信息到空格为止,
HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122

7、tcp连接断开
请求结束,当通用首部字段Conection不是Keep-Alive时,即不为TCP长连接时,通过四次挥手断开TCP连接:

  • 第一次:客户端(主动断开连接)发送数据包给服务器,其中标志位FIN=1,序号位seq=u,并停止发送数据;
  • 第二次:服务器收到数据包后,由于还需传输数据,无法立即关闭连接,先返回一个标志位ACK=1,序号seq=v,确认号ack=u+1的数据包;
  • 第三次:服务器准备好断开连接后,返回一个数据包,其中标志位FIN=1,标志位ACK=1,序号seq=w,确认号ack=u+1;
  • 第四次:客户端收到数据包后,返回一个标志位ACK=1,序号seq=u+1,确认号ack=w+1的数据包。

8、浏览器展示html

1、准备渲染进程

  • 浏览器进程检查当前url是否与之前打开了渲染进程的页面的根域名相同,如果相同,则复用原来的进程,如果不同,则开启新的渲染进程;

2、提交文档

  • 渲染进程准备好后,浏览器向渲染进程发起“提交文档”的消息,渲染进程接收到消息后与网络进程建立传输数据的“管道”
  • 渲染进程接收完数据后,向浏览器发送“确认提交”
  • 浏览器进程接收到确认消息后更新浏览器界面状态:安全状态、地址栏url、前进后退的历史状态、更新web页面

3、在渲染阶段通过渲染流水线在渲染进程的主线程和合成线程配合下,完成页面的渲染
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值