HTTP 全称 HyperText Transfer Protocol(超文本传输协议),是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是在 Web 上进行数据交换的基础。
HTTP 使用 TCP 作为通信协议
HTTP 协议是建立在 TCP(全称 Transmission Control Protocol,即传输控制协议)协议之上的一种应用。TCP 协议提供可靠的连接服务,可以保证数据不丢失。建立起一个 TCP 连接需要经过三次握手,断开需要经过四次挥手。
-
三次握手🤝:
- 第一次握手:客户端:hi,服务器,在吗?我想和你建立连接,你能收到我的消息吗?(客户端给服务端发送了一个 SYN 和 Sequence Number=X,并进入 SYN_SEND 状态,等待服务器确认)
- 第二次握手:服务器:hi,客户端,我在呢,我收到你的消息了,我们可以建立连接,你能收到我答复的消息吗?(服务器收到客户端的 SYN 报文,向客户端发送 SYN、Sequence Number=Y 和 Acknowledgment Number=X+1 进行确认,并进入 SYN_RCVD 状态)
- 第三次握手:客户端:我收到你的答复了,很开心能和你建立连接。(客户端收到服务器的 SYN、Sequence Number 和 Acknowledgment Number,向服务器发送 Acknowledgment Number=Y+1 进行确认,发送完毕,客户端和服务器进入 ESTABLISHED 状态)
-
四次挥手👋(主动方可能是客户端或服务器):
- 第一次挥手:主动方:我们分手吧?我不想和你联系了。(发送 FIN、Sequence Number=X+2 和 Acknowledgment Number=Y+1 报文,并进入 FIN_WAIT_1 状态)
- 第二次挥手:被动方:好的,我收到你分手的消息了,我同意分手。(发送 Acknowledgment Number=X+3 报文,并进入 CLOSE_WAIT 状态)
- 第三次挥手:被动方:还有,我也要和你分手,再也不想和你联系了。(发送 FIN 和 Sequence Number=Y+1 报文,并进入 LAST_ACK 状态)
- 第四次挥手:主动方:好的,我收到你同意分并提出分手的消息了,祝你幸福!(发送 Acknowledgment Number=Y+2 报文,进入 TIME_WAIT 状态)

HTTP 的请求响应过程(当我们在浏览器中输入 URL 并点击回车时,发生了什么):
- 首先 DNS 服务器会进行域名的映射,将域名解析为 IP 地址;
- 根据 IP 地址去寻找相应的服务器,HTTP 客户端进程在 80 端口(默认端口)发起一个到服务器的 TCP 连接(三次握手);
- HTTP 客户端找到相应的资源库,并返回页面信息;
- 浏览器根据自身的执行机制解析页面;
- HTTP 服务器随即通知 TCP 断开连接(四次挥手)。
-
HTTP 协议的组成
-
start line
起始行- 响应行
- 请求行
-
headers
-
Request Headers
请求头 -
Response Headers
响应头
-
-
body
-
Request Body
请求体 -
Response Body
响应体
-
-
HTTP 的请求方法有哪些 👉 MDN
方法 | 描述 | 版本 |
---|---|---|
GET | 请求一个指定资源,主要用于获取数据。 | 1.0+ |
POST | 将数据提交到指定的资源,例如提交表单或者上传文件。 | 1.0+ |
PUT | 将数据提交到指定的资源,用于更新指定的文档的内容。 | 1.1+ |
DELETE | 请求删除指定的资源。 | 1.1+ |
HEAD | 与 GET 请求类似,但没有响应体。 | 1.0+ |
OPTIONS | 允许客户端查看服务器的性能。 | 1.1+ |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新。 | 1.1+ |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 | 1.1+ |
CONNECT | 预留给能够将连接改为管道方式的代理服务器。 | 1.1+ |
HTTP 响应状态码 👉 MDN
-
分类
-
1**
:指示信息 -
2**
:成功 -
3**
:重定向 -
4**
:客户端错误 -
5**
:服务器错误
-
-
常见的状态码
-
200
:请求成功。一般用于 GET 与 POST 请求。 -
301
:请求的资源被永久的移动到新 URI,返回信息会包括新的URI,浏览器会自动定向到新URI。 -
400
:客户端请求的语法错误,服务器无法识别。 -
401
:请求要求用户的身份认证 -
403
:服务器理解请求客户端的请求,但是拒绝执行此请求 -
404
:请求的资源(网页等)不存在 -
500
:服务器内部错误 -
503
:超载或系统维护,服务器暂时的无法处理客户端的请求
-
HTTPS 👉 维基百科
HTTP 一般是明文传输,很容易被攻击者窃取重要信息。HTTPS 是 HTTP 协议的加密版本,全称 HyperText Transfer Protocol Secure(超文本传输安全协议)。HTTPS 和 HTTP 有很大的不同在于 HTTPS 是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在 HTTP 的基础上增加了 SSL 层,也就是说 HTTPS = HTTP + SSL。
网友评论