简述一次网络请求过程
-
域名解析
通过URL查找服务器IP
如访问百度,www.baidu.com,
- www是服务器名
- baidu可以理解为公司名或私人名
- com是域名根服务器
浏览器先访问本地文件Host文件,检查文件中是否有与域名匹配的IP地址,如果有直接访问IP对应的服务器;否则,向上层的DNS服务器询问;如果还没有,则继续向上层的DNS服务器询问,知道DNS根服务器。
-
TCP三次握手
建立一个TCP连接所需的过程
请求连接、确认信息、握手结束
-
发送HTTP请求
HTTP请求由三部分组成:请求行、请求头和数据体。
- 请求行包含请求方法(如GET、POST),请求URI和HTTP版本。
- 请求头包含User-Agent、Accept、Cookie等键值对信息。
- 数据体则是请求的具体内容,通常是表单数据或文件。
-
服务器响应请求
服务器解析完用户请求后,会返回一个HTTP响应。响应由状态行(如HTTP/1.1 200 OK)、响应头和响应正文组成。
状态行指示请求的处理结果,响应头包含服务器信息、资源实体信息和可能的重定向信息,响应正文则是要发送给客户端的数据。
-
浏览器解析HTML
浏览器解析服务器返回的HTML代码,并请求里面的CSS、JS、图片等资源。
-
页面渲染后呈现给用户
从上到下,下载和渲染是同时进行的。
URI和URL
URI(Uniform Resource Identifier,统一资源标志符)标记一个网络资源,给资源命名。
URL用地址标记一个网络资源,给资源定位。
URI:
- 访问资源的命名机制
- 存放资源的主机名
- 资源本身的名词,用路径表示,着重强调资源。
URI的格式由协议名、访问权限部分(如用户名和密码)、主机地址、端口号、路径、查询字符串和片段标识符组成。例如,一个典型的URI格式可能是
[协议名]://[用户名]:[密码]@[服务器地址]:[服务器端口号]/[路径]?[查询字符串]#[片段ID]
URL:
- 协议(服务方式)
- 存有该资源的主机IP地址(有时包含端口号)
- 主机资源的具体地址(绝对路径)
URL的格式通常为协议://用户名:密码@域名:端口号/路径?查询字符串#片段
网络请求方法
网络请求方法,通常指的是HTTP协议中定义的几种请求方式,它们决定了客户端和服务器之间如何进行通信。主要的请求方法包括GET、POST、PUT、DELETE、PATCH、OPTIONS、TRACE等。每种方法有其特定的用途和行为特征,下面将逐一进行详细介绍。
GET请求
GET请求用于从服务器上请求指定的资源。它是最常见的一种请求方法,通过URL来指定要访问的资源。例如,当我们访问一个网页时,就是在发送一个GET请求。GET请求的特点是简洁明了,它不会引起服务器的任何状态变化,因此它被认为是幂等的。
POST请求
POST请求用于向服务器提交数据,并请求服务器在目标位置执行某种操作。POST请求通常用于表单提交或文件上传,数据会被包含在请求体中。POST请求可能导致服务器的资源发生变化,因此它不是幂等的。
PUT请求
PUT请求用于更新或创建服务器上的资源。如果指定的资源存在,那么它将被更新;如果不存在,将会创建一个新的资源。PUT请求要求请求体中包含要更新的数据,且数据格式必须与请求的媒体类型相匹配。
DELETE请求
DELETE请求用于删除服务器上的资源。当删除操作完成后,指定的资源将不再存在。DELETE请求的特点是它能够彻底移除资源,因此在执行前需要确认是否需要进行此项操作。
PATCH请求
PATCH请求用于部分更新资源。它允许你更新资源的一部分字段,而不是整个资源。PATCH请求通常用于那些需要局部更新的场景,比如更新用户的某些属性信息。
OPTIONS请求
OPTIONS请求用于询问服务器关于特定资源所支持的方法和选项。通过OPTIONS请求,客户端可以了解服务器对特定资源能够执行的请求类型,比如是否支持GET、POST等。
TRACE请求
TRACE请求用于追踪请求的传递路径。服务器在收到TRACE请求后会将请求的内容原样返回给客户端,这样客户端就能看到请求在传递过程中经过的各个节点。
CONNECT请求
CONNECT请求用于建立一个连接,通常用于代理服务器。它允许客户端指定代理服务器来连接至最终的服务器。