做网站小代码大全,wordpress无法重定向,分销商管理系统,上海聚众网站建设公司HTTP/1.1 的优点有哪些#xff1f; 「简单、灵活和易于扩展、应用广泛和跨平台」
1. 简单
HTTP 基本的报文格式就是 header body#xff0c;头部信息也是 key-value 简单文本的形式#xff0c;易于理解。
2. 灵活和易于扩展
HTTP 协议里的各类请求方法、URI/URL、状态码… HTTP/1.1 的优点有哪些 「简单、灵活和易于扩展、应用广泛和跨平台」
1. 简单
HTTP 基本的报文格式就是 header body头部信息也是 key-value 简单文本的形式易于理解。
2. 灵活和易于扩展
HTTP 协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死都允许开发人员自定义和扩充。
同时 HTTP 由于是工作在应用层 OSI 第七层则它下层可以随意变化比如
HTTPS 就是在 HTTP 与 TCP 层之间增加了 SSL/TLS 安全传输层HTTP/1.1 和 HTTP/2.0 传输协议使用的是 TCP 协议而到了 HTTP/3.0 传输协议改用了 UDP 协议。
3. 应用广泛和跨平台 HTTP/1.1 的缺点有哪些 HTTP 协议里有优缺点一体的双刃剑分别是「无状态、明文传输」同时还有一大缺点「不安全」。
1. 无状态双刃剑
无状态的好处因为服务器不会去记忆 HTTP 的状态所以不需要额外的资源来记录状态信息这能减轻服务器的负担。
无状态的坏处没有记忆能力那么在完成有关联性的操作时会非常麻烦。
例如登录-添加购物车-下单-结算-支付这系列操作都要知道用户的身份才行。但服务器不知道这些请求是有关联的每次都要问一遍身份信息。
通常使用 Cookie 技术来解决无状态问题。
Cookie 通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
相当于在客户端第一次请求后服务器会下发一个装有客户信息的「小贴纸」后续客户端请求服务器的时候带上「小贴纸」服务器就能认得了
2. 明文传输双刃剑
明文传输虽然易于阅读但也增加了信息泄露的风险。 HTTP/1.1 的性能如何 HTTP 协议是基于 TCP/IP并且使用了「请求 - 应答」的通信模式所以性能的关键就在这两点里。
1. 长连接
早期 HTTP/1.0 性能上的一个很大的问题那就是每发起一个请求都要新建一次 TCP 连接三次握手而且是串行请求做了无谓的 TCP 连接建立和断开增加了通信开销。
HTTP/1.1 提出了长连接的通信方式也叫持久连接。这种方式减少了 TCP 连接的重复建立和断开所造成的额外开销减轻了服务器端的负载。
持久连接的特点是只要任意一端没有明确提出断开连接则保持 TCP 连接状态。
如果某个 HTTP 长连接超过一定时间没有任何数据交互服务端就会主动断开这个连接。
2. 管道网络传输
HTTP/1.1 采用了长连接的方式这使得管道pipeline网络传输成为了可能。
即可在同一个 TCP 连接里面客户端可以发起多个请求只要第一个请求发出去了不必等其回来就可以发第二个请求出去可以减少整体的响应时间。
举例来说客户端需要请求两个资源。以前的做法是在同一个 TCP 连接里面先发送 A 请求然后等待服务器做出回应收到后再发出 B 请求。那么管道机制则是允许浏览器同时发出 A 请求和 B 请求如下图 但是服务器必须按照接收请求的顺序发送对这些管道化请求的响应。
如果服务端在处理 A 请求时耗时比较长那么后续的请求的处理都会被阻塞住这称为「队头堵塞」。
所以HTTP/1.1 管道解决了请求的队头阻塞但是没有解决响应的队头阻塞。 注意
实际上 HTTP/1.1 管道化技术不是默认开启而且浏览器基本都没有支持知道有这个功能但是没有被使用就行了。
3. 队头阻塞
「请求 - 应答」的模式会造成 HTTP 的性能问题。
当顺序发送的请求序列中的一个请求因为某种原因被阻塞时在后面排队的所有请求也一同被阻塞了会招致客户端一直请求不到数据这就是「队头阻塞」好比上班的路上塞车。 总之 HTTP/1.1 的性能一般后续的 HTTP/2 和 HTTP/3 就是在优化 HTTP 的性能。 HTTP/1.1采用了长连接来提高性能只要客户端和服务器端没有一方主动断开连接就会在一定时间内保持连接从而避免了多次连接和断开产生的开销长连接使得管道网络传输成为可能之前的情况是必须等第一个请求得到响应时才能发送第二个请求如果使用管道网络传输那么就可以在发送的第一个请求没有得到响应时就发送第二个请求但是服务器必须按照接收请求的顺序发送对这些管道化请求的响应如果服务端在处理某一个请求时耗时比较长那么后续的请求的处理都会被阻塞住这称为「队头堵塞」就和堵车一样会导致客户端一直请求不到数据。
所以HTTP/1.1 管道解决了请求的队头阻塞但是没有解决响应的队头阻塞不过管道网络传输默认关闭且大多数浏览器没有支持知道就行。