| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> HTTP及其版本(HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0)详解 -> 正文阅读 |
|
[网络协议]HTTP及其版本(HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0)详解 |
HTTP协议基础知识HTTP协议是超文本传输协议的缩写,是用于从万维网传输超文本到浏览器的传输协议。 HTTP基于TCP/IP通信协议来传递数据(HTML文件,图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
(1)无连接:无连接是指限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。这种方式可以节省传输时间。 (2)无状态:HTTP协议自身不对请求和响应之间的通信状态进行保存,任何两次请求之间都没有依赖关系。(每次请求都是独立的,与前面的请求和后面的请求都没有直接联系。协议本身不保留之前一切的请求或响应报文的信息。)
关于Http请求方法,以及在前面的文章详细说明了,点击跳转 4、Http状态码
常见状态码: Http版本Http1.0HTTP1.0默认使用 Http1.1HTTP1.1默认使用
Http协议的初始版本中,每进行一次Http通信就要断开一次TCP连接。每次请求都会造成TCP连接的建立和断开,增加通信量的开销。 持久连接的特点:
(1)高延迟,带来页面加载速度的降低。(网络延迟问题只要由于队头阻塞,导致宽带无法被充分利用) (2)无状态特性,带来巨大的Http头部。 (3)明文传输,不安全。 (4)不支持服务器推送消息。 Http2.0SPDY协议:2009年谷歌公开了SPDY协议,主要解决Http1.1效率不高的问题。 HTTP2.0:基于SPDY,专注于性能,目标是在用户和网站直接只用一个连接。
(1)二进制传输 http2.0将请求和响应数据分割为更小的帧,并且它们采用二进制编码(http1.0基于文本格式)。多个帧之间可以乱序发送,根据帧首部的流表示可以重新组装。 (2)Header压缩 Http2.0开发了专门的“HPACK”算法,大大压缩了Header信息。 (3)多路复用 http2.0中引入了多路复用技术,很好的解决了浏览器限制同一个域名下的请求数量的问题。 多路复用技术可以只通过一个TCP链接就可以传输所有的请求数据。 (4)服务端推送 HTTP2.0在一定程度上改不了传统的“请求-应答”工作模式,服务器不再完全被动地响应请求,也可以新建“流”主动向客户端发送消息。(例如,浏览器在刚请求html的时候就提前把可能会用到的JS,CSS文件发送给客户端,减少等待延迟,这被称为“服务端推送Server Push”) 服务器也不能随便将第三方资源推送给服务器,必须经过双方确认。
(1)TCP以及TCP+TLS建立连接的延迟(握手延迟) (2)TCP的队头阻塞没有彻底解决(http2.0中,多个请求是跑在一个TCP管道中的,一旦丢包,TCP就要等待重传(丢失的包等待重新传输确认),从而阻塞该TCP连接中的所有请求) 因为HTTP2.0存在这些缺点,所以出现了HTTP3.0。 Http3.0Google在推行SPDY的时候意识到了上述http2.0一系列问题,于是又产生了基于UDP协议的“QUIC”协议,让HTTP跑在QUIC上而不是TCP上。从而产生了HTTP3.0版本,它解决了“队头阻塞”的问题。
(1)实现了类似TCP的流量控制,传输可靠性的功能。 (2)实现了快速握手功能(QUIC基于UDP,UDP是面向无连接的,不需要握手和挥手,比TCP快) (3)集成了TLS加密功能 (4)多路复用,彻底解决TCP中队头阻塞的问题(单个“流”是有序的,可能会因为丢包而阻塞,但是其他流不会受到影响) 总结
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:27:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |