其他分享
首页 > 其他分享> > 浅谈Http1.0 Http1.1 Http2 Https

浅谈Http1.0 Http1.1 Http2 Https

作者:互联网

HTTP协议

HTTP(超文本传输协议,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。工作在IOS七层网络模型上的最上层即应用层。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。是用于从WWW服务器传输超文本到本地浏览器的传输协议。HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而且对数据的完整性要求很高,然而TCP协议是安全可靠的(提供传输控制按顺序组织数据,和错误纠正),而UDP是不可靠的。

HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性。如TCP建立连接时三次握手有1.5个RTT(round-trip time)的延迟,为了避免每次请求的都经历握手带来的延迟,应用层会选择不同策略的http长链接方案。又如TCP在建立连接的初期有慢启动(slow start)的特性,所以连接的重用总是比新建连接性能要好。

HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

HTTP1.0

先是考这样一个问题:既然有了TCP可靠的传输协议,为什么应用层还需要一个http协议?

试想,若直接使用TCP协议进行数据传输,那么对于一个网站服务器来说,它一定会在同一时刻保持有大量的tcp连接(tcp连接不会断开),而服务器维护这些tcp连接需要耗费大量的系统资源。因此出于保护服务器的目的,就出现了http协议1.0版本,处理的办法就是在每次请求-相应结束后就断开当前的tcp连接。

该协助规定,客户端想要与服务端通信,首先需要先建立连接即TCP连接(经过3次握手)。在连接建立完成之后进行一个请求,然后服务端响应。在客户端收到响应之后,服务端会立即释放tcp连接(确保不占用服务端资源)。

http1.0存在的问题:

1:每次请求都需要从新建立新的tcp连接,并且需要3次握手。来回的网络握手会消耗一定的时间,特别在网络差的环境下会凸显。

2:每次新的请求都需要在完成上一次的请求-响应之后进行,若上次的请求-响应是不健康的,那么就会阻塞当前的健康请求。即常说的线头阻塞问题(head of line blocking)

HTTP1.1

http1.1在解决上面第一个问题的处理办法是:使一次的tcp连接保持不断开。通过增加请求头来帮助实现;当connection请求头的值为keep-alive时,客户端告知服务端在返回请求结果后保持连接状态;若connection请求头值为close时,服务端在响应请求后会关闭连接。

标签:Http1.0,Http1.1,HTTP,请求,TCP,tcp,连接,服务端,浅谈
来源: https://blog.csdn.net/c1300292559/article/details/121799057