HTTP协议
本文字数:1.2k 字 | 阅读时长 ≈ 4 min

HTTP协议

本文字数:1.2k 字 | 阅读时长 ≈ 4 min

HTTP协议简介

我们日常生活中经常会使用浏览器访问web站点,但是大家有思考过在这个过程当中到底发生了什么吗?为什么我们在浏览器地址栏上面输入要访问的URL后就可以访问到web页面呢?

###浏览器背后的故事
当我们在浏览器地址栏上输入要访问的URL后,浏览器会分析出URL上面的域名,通过DNS服务器查询出域名映射的IP地址,浏览器根据查询到的IP地址与web服务器进行通信,而通信的协议就是HTTP协议。

TCP/IP协议

HTTP协议是构建在TCP/IP之上的协议,是TCP/IP的一个子集。

TCP/IP协议族是一个四层协议组成的系统,分别是应用层、传输层、网络层和数据链路层。

应用层
应用层是我们编写的应用程序,决定了向用户提供的应用服务。应用层可以通过系统调用与传输层进行通信。
常见的应用层协议:HTTP、FTP、SMTP、DNS

传输层
传输层通过系统调用向应用层提供处于网络连接中的两台计算机之间的数据传输功能。

传输层有两个性质不同的协议:TCP(传输控制协议)和UDP(用户数据报协议)

网络层
网络层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。规定了到达对方计算机的传输路线,并把数据包传输给对方。

链路层
链路层用来处理连接网络的硬件部分,包括控制操作系统、硬件设备驱动、NIC网络适配器以及光纤等物理可见部分。

TCP三次握手
TCP协议相对于UDP协议的特点是:TCP协议提供面向连接、字节流和可靠的传输
使用TCP协议进行通信的双方必须先建立连接,才能开始传输数据。
UDP协议是面向无连接的,在正式传递数据之前不需要先简历连接。UDP协议不保证有序且不丢失的传递到对端,不够稳定。

TCP协议三次握手的描述如下:

第一次握手:客户端发送带有SYN标识的连接请求报文段,然后进入SYN发送状态,等待服务端的确认。

第二次握手:服务端接收到客户端的SYN报文段后,需要发送ACK信息对这个SYN报文段进行确认。同时需发送自己的SYN请求信息。服务端会讲上述的信息放到一个SYN+ACK报文段中一并发送给客户端。

第三次握手:客户端接收到服务端的SYN+ACK报文段后,会向服务端发送ACK确认报文段,确认报文段发送完毕后,完成TCP三次握手。

DNS服务是通过DNS协议进行通信的,而DNS协议跟HTTP协议一样也是应用层协议。

HTTP请求方法

GET 一般用于获取服务器资源
POST 一般用于传输实体主体
PUT 一般用于传输文件
DELETE 一般用于删除文件
HEAD 用户获取报文首部,不返回报文主体
OPTIONS 一般获取请求URI资源支持的方法

状态码

200 客户端发来的请求在服务器端被正确处理
204 请求成功,响应报文不含实体的主体部分
301 永久性重定向
302 临时性重定向
304 无需重复请求,可以使用缓存内容
400 客户端请求错误
403 客户端的请求被服务器拒绝
404 客户端访问的页面不存在
500 服务器执行请求时发生了错误
501 服务器不支持当前请求
503 服务器暂时处于超负荷或停机维护,无法处理请求

Header字段

通用

字段 作用
Cache-Control 控制缓存行为
Connection 浏览器优先使用的连接类型
Date 创建报文时间

请求

字段 作用
Accept 正确接收的媒体类型
Accept-Charset 正确接收的字符集
Accept-Encoding 正确接收的编码格式列表
Authorization 客户端认证信息,一般存token用
Cookie 发送给服务器端的Cookie信息
Host 服务器域名
User-Agent 客户端信息
Referer 请求发起页面的原始URI

响应

字段 作用
Content-Encoding 内容编码格式
Content-Language 内容使用语言
Content-Length Request-body长度
Content-Type 内容使用的媒体类型
Expires 内容的过期时间
Last modified 内容最后修改时间
Jan 02, 2020
Nov 18, 2019
Nov 07, 2019
Nov 07, 2019