http3不再使用tcp协议的原因

简介: http3不再使用tcp协议的原因

http3不再使用tcp协议的原因

上一篇文章整理了http0.9-http3的整个变化过程,但是说的不是很详细。比如浏览器是如何利用http1.1的,多个请求如何处理?http2到http3的底层协议特点以及对应的改变背景都没有说清楚。

今天就专门针对http3不再使用底层的tcp协议这个问题作为引子,详细阐述下对应的改变原因。

首先说我们经常提到的TCP协议

TCP协议通过数据分片、到达确认、超时重发、滑动窗口、失序处理、重复处理、数据校验等规定,为使用TCP连接的双方提供一个面向连接、可靠的字节流服务。

但是TCP连接这个概念还是比较抽象。

我们可以这么理解,电话两端有两个接线员,电话之间通过电话线进行连接。在正式通话时,电话员A向接线员B拨号并说了这么一句话:有人吗?接线员B回了一句:我在!接线员A又说道:ok我知道了。这相当于TCP连接建立时的三次握手,用来确定双方状态。之后两边电话员就可以正常你来我往的通话了。

同时为了避免两个人的沟通内容有缺失等问题,两边还规定了如何交流,信号中断了如何处理等等。

TCP断开时则需要进行四次挥手过程,这个就没必要细说了。至于为什么是前三后四,这是因为校验太多了也没用,所以就采取了最少验证次数。

接下来聊聊UDP协议

我们要知道,它最大的特点是无连接。也就是信息在传输数据之前不需要建立连接,当想要发送数据时,就把数据包尽可能快地扔到网络上,至于收没收到,就不管了(虽然这很重要)

那么,既然UDP协议这么不可靠,HTTP3为何还要使用UDP协议?

我们在上一篇文章中也讲到了HTTP2的一些问题,其中基于TCP协议的HTTP协议永远无法解决队头阻塞的问题,这样的话,数据传输速度无法进一步加快。

HTTP3是基于UDP协议的,它同时还做了一些其他处理,比如增加数据包重传、拥塞控、调整传输节奏等等。其其核心思想是将TCP协议在内核实现的诸如可靠传输、流量控制、拥塞控制等功能转移到用户态来实现,同时在加密传输方向的尝试也推动了TLS1.3的发展。

至于说http3的缺点,那就是后话了,等五年后有兴趣了我再来补充!

相关文章
|
24天前
|
网络协议 Linux iOS开发
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
55 1
|
1月前
|
网络协议 Linux
HTTP协议基本原理简介(二)
HTTP协议基本原理简介(二)
23 1
|
2月前
|
安全 前端开发 网络协议
|
1月前
|
缓存 前端开发
HTTP协议基本原理简介(三)
HTTP协议基本原理简介(三)
15 1
|
2月前
|
缓存 移动开发 JSON
【网络安全 | 网络协议应用层】结合Wireshark讲解HTTP协议
【网络安全 | 网络协议应用层】结合Wireshark讲解HTTP协议
108 0
|
8天前
|
缓存 网络协议
【计算机协议】第一章——HTTP协议详解
【计算机协议】第一章——HTTP协议详解
|
10天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
12天前
|
缓存 安全 网络协议
Http协议是什么
【4月更文挑战第12天】HTTP是用于从WWW服务器传输超文本到浏览器的协议,基于TCP/IP,特点包括无连接、无状态、面向对象、无阻塞和可缓存。它的工作原理是客户端发送请求,服务器处理后返回响应。自1989年创建以来,HTTP已发展支持多媒体内容传输,并通过HTTPS提供安全保护。学习更多可参考计算机网络技术文献。
18 6
|
14天前
|
存储 JSON 前端开发
网络原理(4)HTTP协议(下)
网络原理(4)HTTP协议
26 0
|
24天前
|
XML JSON JavaScript
推荐一个比较好用的c++版本http协议库-cpp-httplib
推荐一个比较好用的c++版本http协议库-cpp-httplib
38 1