2021-10-18TCP队头阻塞

TCP队头阻塞导致的数据传输延迟问题影响了用户体验,尤其是在需要并行传输多部分数据的场景中。为了解决这个问题,谷歌提出了QUIC协议,它基于UDP并实现了类似TCP的可靠传输,但避免了队头阻塞。QUIC通过自己的丢包重传机制,实现了更快的数据传输,从而在一定程度上解决了队头阻塞问题。
摘要由CSDN通过智能技术生成

TCP队头阻塞
TCP的队头阻塞发生: 当一个TCP分节丢失的时候,因为TCP是可靠传输,所有后续分节将被接收端一直保存,直到丢失的第一个分节被发送端重传并且到达接受端为止才会继续被传输。

这种可靠的传输机制确保接收应用进程能够按照发送端的发送顺序接受数据。虽然可靠但是也有不利之处。

比如说,客户端向服务端请求3幅图片,为了营造这几幅图像在用户屏幕上并行显示的效果,服务器先发送第一幅图像的一个断片,再发送第二幅图像的一个断片,然后再发送第三幅图像的一个断片;服务器重复这个过程,直到这3幅图像全部成功地发送到浏览器为止。

如果第一幅图的某个断片的TCP分节丢失,客户端将保持已到达的不按序的所有数据,直到丢失的分节重传成功。这样一来延迟了第一幅图像的数据传送,也影响了后面两幅图像数据递送。

如何解决TCP队头阻塞问题
TCP中的队头阻塞的产生是由TCP自身的实现机制决定的,无法避免。想要在应用程序当中避免TCP队头阻塞带来的影响,只有舍弃TCP协议。

比如google推出的quic协议,在某种程度上可以说避免了TCP中的队头阻塞,因为它根本不使用TCP协议,而是在UDP协议的基础上实现了可靠传输。而UDP是面向数据报的协议,数据报之间不会有阻塞约束。

QUIC是一个在UDP之上的伪TCP +TLS +HTTP/2的多路复用的协议
注意:(UDP不管顺序,不管丢包(QUIC的一个任务是要像TCP一样稳定,所以QUIC有自己的丢包重传的机制))

参考文章:

什么是队头阻塞以及如何解决
HTTP的前世今生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值