ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

浅谈Http1.0 Http1.1 Http2 Https

2021-12-08 20:32:47  阅读:155  来源: 互联网

标签:Http1.0 Http1.1 HTTP 请求 TCP tcp 连接 服务端 浅谈


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有