TCP的队首阻塞

紧接上篇博客HTTP/2 并没有解决 TCP 的队首阻塞问题,它仅仅是通过多路复用解决了以前 HTTP1.1 管道化请求时的队首阻塞问题。


TCP发生队首阻塞的原因:

HTTP/2虽然可以解决http队首阻塞问题,但是 TCP 层面的队首阻塞是 HTTP/2 无法解决的(HTTP 只是应用层协议,TCP 是传输层协议),TCP 的阻塞问题是因为传输阶段可能会丢包TCP是一个按序传输的通道,一旦丢包就会等待重新发包,阻塞后续内容传输

TCP的队首阻塞问题,我们经常会在http2协议中去讨论因为http2中TCP通道很少,可能只有一个



在http2中丢包了会怎么办?

采用HTTP/2时,浏览器一般会在单个TCP连接中创建并行的几十个乃至上百个传输。如果HTTP/2连接双方的网络中有一个数据包丢失,或者任何一方的网络出现中断,整个TCP连接就会暂停,丢失的数据包需要被重新传输。因为TCP是一个按序传输的通道,因此如果其中一个点丢失了,通道上之后的内容就都需要等待。

随着丢包率的增加,HTTP/2的表现越来越差。在2%的丢包率(一个很差的网络质量)中,测试结果表明HTTP/1用户的性能更好,因为HTTP/1一般有六个TCP连接哪怕其中一个连接阻塞了,其他没有丢包的连

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
TCP报文头部(首段)包含了TCP协议的一些基本信息,如源端口号、目的端口号、序列号、确认号、标志位等,具体如下: 1. 源端口号(Source Port Number):占用两个字节,指明发送端口号。 2. 目的端口号(Destination Port Number):占用两个字节,指明接收端口号。 3. 序列号(Sequence Number):占用四个字节,用于标识本报文段的数据在数据流的序号,以便接收方按照序列号进行重组。 4. 确认号(Acknowledgment Number):占用四个字节,用于标识接收方期望接收的下一字节的序号。 5. 数据偏移量(Data Offset):占用四个比特,表示TCP头部的长度,以4字节为单位,最大值为15,即最大长度为60字节。 6. 保留(Reserved):占用6个比特,保留字段,必须置0。 7. 标志位(Flags):占用6个比特,共有6个标志位,如下所示: - URG:紧急指针是否有效。 - ACK:确认序号是否有效。 - PSH:接收方是否应该立即将数据交给应用层处理。 - RST:重置连接。 - SYN:同步序号用于建立连接。 - FIN:结束连接。 8. 窗口大小(Window Size):占用两个字节,表示接收方的窗口大小,即接收方还能接收多少字节的数据。 9. 校验和(Checksum):占用两个字节,用于检验TCP头部和数据的完整性。 10. 紧急指针(Urgent Pointer):占用两个字节,如果URG标志位被置位,则该字段表示紧急数据的字节数。 以上就是TCP报文头部(首段)的各个字段的解释。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codingWeb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值