技术文摘
HTTP 3.0为何彻底舍弃 TCP ?TCP 之过何在 ?
HTTP 3.0 为何彻底舍弃 TCP ?TCP 之过何在 ?
在网络通信的不断演进中,HTTP 3.0 做出了一个重大决策——彻底舍弃 TCP。这一举措引发了广泛的关注和讨论,那么究竟是什么原因让 HTTP 3.0 与 TCP 分道扬镳,TCP 的“过错”又在哪里呢?
TCP 作为传统的传输层协议,在可靠性方面表现出色,但也存在一些局限性。其中一个主要问题是队头阻塞。当数据包在传输过程中丢失或出现错误时,TCP 会等待丢失的数据包重新传输,这就导致后续的数据包即使已经到达,也必须等待,从而造成了延迟。在当今对实时性和低延迟要求极高的网络环境中,这种队头阻塞问题显得尤为突出。
另外,TCP 的三次握手建立连接过程也增加了额外的开销。在每次建立连接时,都需要进行三次数据包的交互,这在短连接频繁的场景下,会消耗大量的时间和资源,影响了网络传输的效率。
而 HTTP 3.0 选择的新协议 QUIC 则有效地解决了这些问题。QUIC 基于 UDP 协议,实现了类似 TCP 的可靠性,但避免了 TCP 的队头阻塞。它能够在单个连接上多路复用多个数据流,即使其中一个数据流出现问题,也不会影响其他数据流的传输。
QUIC 的连接建立过程也得到了极大的优化。它减少了握手次数,并且支持 0-RTT 连接恢复,即在之前连接的基础上,能够快速恢复连接,无需再次进行完整的握手过程,大大提高了连接建立的速度。
HTTP 3.0 舍弃 TCP 并非是对 TCP 的全盘否定,而是在技术发展的浪潮中,为了更好地适应新的网络应用需求和挑战做出的战略选择。随着互联网的不断发展,对于低延迟、高并发和高效传输的需求日益增长,HTTP 3.0 的出现正是对这些需求的有力回应。
TCP 在过去为网络通信的稳定可靠做出了重要贡献,但在新的技术环境下,其局限性逐渐显现。HTTP 3.0 勇敢地迈出了舍弃 TCP 的一步,开启了网络传输的新篇章,为未来更优质的网络体验奠定了基础。
- Spring6 所提供的四种远程接口调用利器!你了解哪种?
- 基于 Apache Kafka、Flink 与 Druid 的实时数据架构构建
- 图像处理中矩阵计算的基本原理与实现流程
- Go 未来发展:以共同目标与数据驱动做决策
- 线程组是什么?你掌握了吗?
- 基于 Java 编写 CLI 工具的方法
- Go 语言字符串拼接方式及性能比较分析与否
- 2023 年 CSS 全新特性汇总
- Java 中浮点型与双精度型的比较(Float 与 Double)
- 解析分布式数据库 TDSQL 的技术架构
- 故障现场:把控取值范围,杜绝他人犯错可能
- 专属女朋友的微信消息脚本(含脚本)
- Vue3 中 el-table 导出为 Excel 表格的问题及五个注意要点
- Linux 定时器在定时任务与计时器应用中的实现
- Python 已存在 Tuple 为何还设计 Namedtuple ?