HTML基本原理

523 阅读4分钟

从输入一个网址到浏览器显示网页经历的过程


DNS解析

统一资源定位符(Uniform Resource Locator),简称URL,俗称网址,代替了复杂的IP地址,方便大家记忆。 在浏览器输入网址后,首先要进行域名解析,才能知道域名对应的IP地址。

TCP三次握手

第一次握手:由客户机发起,告诉服务器我要发送请求了。
第二次握手:由服务器发起,告诉客户机我已经做好准备,可以发送请求了。
第三次握手:由客户机发起,告诉服务器,我马上开始发送,准备接收吧。

发送HTTP请求

握手成功后, 浏览器就可以向服务器发送http请求了, 请求数据包。 发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议中发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)。HTTP请求报文是由三部分组成: 请求行,请求报头和请求正文。

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

服务器上会装有处理请求的应用——Web Server,常用的有IIS,Apache,nginx等。

浏览器解析渲染页面

通常分为5步:

  1. 解析HTML,构建DOM树。
  2. 解析CSS,生成CSS规则树。
  3. 合并DOM树和CSS规则树,生成render树。
  4. 布局render树,负责各元素尺寸、位置的计算。
  5. 绘制render树,绘制页面像素信息。

断开连接

所有数据传输完毕后,就可以断开连接了,此时需要发起四次挥手:
第一次挥手,由客户机发送,告诉服务器,我的请求报文发送完了,你可以准备关闭了。
第二次挥手,服务器向客户端发送一个确认,告诉客户端服务器已经收到客户机发送的包。
第三次挥手,服务器向客户机发送一个包,告诉客户机服务器不会再向客户机发送数据了,并等待客户机的确认。
第四次挥手,客户机向服务器发送最终确认,服务器收到最终确认后就进入关闭状态,而客户机需要等待2倍的最长报文段寿命的时间后才会进入关闭状态。


HTTP协议

HTTP超文本传输协议是互联网上应用最为广泛的一种网络协议,它是基于TCP的应用层协议,简单的说就是客户端和服务器进行通信的一种规则,它的模式非常简单,就是客户端发起请求,服务器响应请求。

HTTP请求由三部分组成:

  • 请求行:包含请求方法、请求地址和HTTP协议版本。
  • 消息报头:包含一系列的键值树。
  • 请求正文:可选部分,需要和消息报头之间由一个空行。

HTTP请求方法

方法 描述
GET 从服务器获取指定(请求地址)的资源的信息,通常之用于只读数据,不会对资源进行修改。
POST 向指定资源提交数据(比如提交表单,上传文件),请求服务器进行处理。数据被包含在正文中,可能会创建新的资源或更新现有资源。
PUT 通过指定资源的唯一标识,请求服务器创建或更新资源。
DELETE 请求服务器删除指定资源
HEAD 与GET方法类似,从服务器获取资源信息,但HEAD不含有呈现数据,仅仅是HTTP头信息。HEAD的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获得资源的元信息。
OPTIONS 该方法可以使服务器传回资源所支持的所有HTTP请求方法。

HTTP响应 HTTP响应与HTTP请求类似,由三部分组成:

  • 状态行:包含HTTP协议版本、状态码和状态描述,以空格分离。
  • 响应头:即消息报头,包含一系列的键值对。
  • 响应正文:返回内容,和响应头之间有一个空行。

状态码

  • 1XX 消息--请求已被服务接收,继续处理
  • 2XX 成功--请求已成功被服务器接收、理解、并接受。
  • 3XX 重定向--需要后续操作才能完成这一请求。
  • 4XX 请求错误--请求含有词法错误或者无法被执行。
  • 5XX 服务器错误--服务器才处理某个正确请求时发生错误。

HTTP特点

  • 客户端/服务器模式
  • 简单快速:客户端向服务器请求服务时,通过传送请求方法、请求地址和数据体(可选)即可
  • 灵活:允许传输任意类型的数据对象,通过Content-Type标识
  • 无状态:对事物处理没有记忆能力

浏览器的渲染机制