• 从输入URL到网页呈现的过程


    1、域名解析
    当我们在浏览器中输入一个URL,例如”www.google.com”时,这个地址并不是谷歌网站真正意义上的地址。互联网上每一台计算机的唯一标识是它的IP地址,因此我们输入的网址首先需要先解析为IP地址,这一过程叫做DNS解析。

    DNS解析是一个递归查询的过程。例如,我们需要解析”www.google.com”时,会经历以下步骤:

    在本地域名服务器中查询IP地址,未找到域名;
    本地域名服务器回向根域名服务器发送请求,未找到域名;
    本地域名服务器向.com顶级域名服务器发送请求,未找到域名;
    本地域名服务器向.google.com域名服务器发送请求,找到该域名,将对应的IP返回给本地域名服务器。
    2、TCP连接
    HTTP协议是使用TCP协议作为其传输层协议的,在拿到服务器的IP地址后,浏览器客户端会与服务器建立TCP连接。该过程包括三次握手:

    第一次握手:建立连接时,客户端向服务端发送请求报文
    第二次握手:服务器收到请求报文后,如同意连接,则向客户端发送确认报文
    第三次握手,客户端收到服务器的确认后,再次向服务器给出确认报文,完成连接。
    三次握手主要是为了防止已经失效的请求报文字段发送给服务器,浪费资源。

    3、浏览器发送HTTP请求
    浏览器构建http请求报文,并通过TCP协议传送到服务器的指定端口。http请求报文一共包括三个部分:

    请求行:指定http请求的方法、url、http协议版本等
    请求头:描述浏览器的相关信息,语言、编码等。如下

    请求正文:当发送POST, PUT等请求时,通常需要向服务器传递数据。这些数据就储存在请求正文中。
    4、服务器处理HTTP请求
    服务器处理http请求,并返回响应报文。响应报文包括三个部分:

    状态码:http服务常用的状态码及其含义如下
    状态码 含义 常见示例
    1** 服务器已经接受到请求,客户端可继续发送请求
    2** 请求成功 200:请求已成功,请求所希望的响应头或数据体将随此响应返回。
    3** 重定向 303:对应当前请求的响应可以在另一个 URI 上被找到,而且客户端应当采用 GET 的方式访问那个资源。
    4** 客户端错误 404:请求的网页不存在
    5** 服务器错误 503: 服务器超时
    - 响应头:包含了响应的相关信息,如日期等

    - 响应正文:服务器返回给浏览器的文本信息,通常的html、js、css、图片等就包含在这一部分里面。

    5、浏览器页面渲染
    浏览器接受到http服务器发送过来的响应报文,并开始解析html文档,渲染页面。具体的渲染过程包括:构建DOM树、构建渲染树、定位页面元素、绘制页面元素等。具体可参看:浏览器时如何渲染页面的

    6、断开TCP连接
    客户端与服务器四次挥手,断开tcp连接。

    第一次挥手:客户端想分手,发送消息给服务器
    第二次挥手:服务器通知客户端已经接受到分手请求,但还没做好分手准备
    第三次回收:服务器已经做好分手准备,通知客户端
    第四次挥手:客户端发送消息给服务器,确定分手,服务器关闭连接

  • 相关阅读:
    Java 学习笔记(三)调用 bat 或 shell 脚本执行
    Git 学习笔记之(四)在 linux 服务器上 通过 git 命令进行操作
    yum 的使用
    最权威的html 标签属性大全
    webstrom常用快捷键
    CSS样式大全(整理版)
    springboot系列五:springboot整合mybatisplus jsp
    dataX的安装
    where / having / group by / order by / limit 简单查询
    mysql的优化总结
  • 原文地址:https://www.cnblogs.com/xufeimei/p/10745227.html
Copyright © 2020-2023  润新知