本文主要是介绍前端必懂!HTTP!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
TCP
的基础
三次握手
- 第一次握手:建立连接. 客户端发送请求报文,SYN位置为1,Sequence Number为x,客户端进入SYN_SEND状态,等待服务器响应
- 第二次握手: 服务器收到SYN报文,向客户端发送SYN请求,Sequence Number为y,服务器进入SYN_RECV状态
- 第三次握手:客户端收到服务器的SYN+ACK报文,并向服务器发送ACK报文,两端都进入ESTABLISHED状态
四次挥手
- 第一次挥手:主机1发送FIN报文,表示要断开连接
- 第二次挥手:主机2回复ACK报文,主机1进入FIN_WAIT_2
- 第三次挥手:主机2发送FIN报文,请求关闭连接,主机二进入LAST_ACK状态
- 第四次挥手:主机1发送ACK报文,进入TIME_WAIT,主机二收到后关闭连接,主机一等待2MSL后关闭连接
- 可能发生的意外
http2
的多路复用
- HTTP2用
二进制
格式传输,取代了HTTP1.x的文本
格式,二进制格式解析更高效。 - 多路复用代替了HTTP1.x的序列和阻塞机制,所有的相同域名请求都通过
同一个
TCP连接并发完成。 - 在HTTP1.x中,并发多个请求需要多个TCP连接,浏览器为了控制资源会有6-8个TCP连接都限制。
- HTTP2中
- 同域名下所有通信都在
单个
连接上完成,消除了因多个 TCP 连接而带来的延时和内存消耗。 - 单个连接上可以并行交错的请求和响应,之间
互不干扰
。
- 同域名下所有通信都在
常用头部
通用
Connection
:允许客户端和服务器指定与请求/响应连接有关的选项,http1.1默认是keep-aliveDate
:提供日期和时间标志,说明报文是什么时间创建的Transfer-Encoding
:告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式Cache-Control
:随报文传送缓存指示
请求
Host
:给出了接收请求的服务器的主机名和端口号Referer
:提供了包含当前请求URI的文档的URLUser-Agent
:将发起请求的应用程序名称告知服务器Accept
:告诉服务器能够发送哪些媒体类型Accept-Encoding
:告诉服务器能够发送哪些编码方式Accept-Language
:告诉服务器能够发送哪些语言Range
:如果服务器支持范围请求,就请求资源的指定范围If-Range
:允许对文档的某个范围进行条件请求Authorization
:包含了客户端提供给服务器,以便对其自身进行认证的数据Cookie
:客户端用它向服务器传送数据
响应
Age
:(从最初创建开始)响应持续时间Server
:服务器应用程序软件的名称和版本Accept-Ranges
:对此资源来说,服务器可接受的范围类型Set-Cookie
:在客户端设置数据,以便服务器对客户端进行标识
实体
Allow
:列出了可以对此实体执行的请求方法Location
:告知客户端实体实际上位于何处,用于将接收端定向到资源的位置(URL)上去Content-Base
:解析主体中的相对URL时使用的基础URLContent-Encoding
:对主体执行的任意编码方式Content-Language
:理解主体时最适宜使用的自然语言Content-Length
:主体的长度Content-Type
:这个主体的对象类型ETag
:与此实体相关的实体标记Last-Modified
:这个实体最后一次被修改的日期和时间
这篇关于前端必懂!HTTP!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!