计算机网络知识总结
一、TCP流量控制
TCP用滑动窗口做流量控制,TCP头里有一个字段叫Advised Window,用来通知发送方自己还有多少缓存区可以用来接收数据。而发送方根据接收方的处理能力来处理数据,避免发送数据过多,接收方处理不过来。

计算方法:
- 接收方在
Ack中记录自己的AdvertisedWindow=MaxRcvBuffer– (LastByteRcvd-LastByteRead),随Ack回复到发送方。 - 发送方根据
Ack中的AdvertisedWindow值,需保证LastByteSent-LastByteAcked≤AdvertisedWindow,则窗口内剩余可发送的数据大小EffectiveWindow=AdvertisedWindow- (LastByteSent-LastByteAcked),以保证接收方可以处理。(就是说保证已经发送过去待确认的数据+这次即将发送的数据 <=AdvertisedWindow)。
二、QUIC(HTPP/3.0)
1.为什么需要QUIC?
在HTTP2.0的版本中,已经实现了多路复用,但是TCP报文数据是依赖报文数据之间的顺序的,所以HTTP2.0并没有从根本上解决队头阻塞的问题。Google考虑到修改TCP协议难度较大,而使用UDP并不需要三次握手,可以从根本上解决队头阻塞的问题。因此对UDP下手,基于UDP提出了QUIC(Quick UDP Internet Connections)。
2.QUIC的特点

- 与
TCP不同,不需要三次握手来建立链接 - 实现了自己的加密层,也不不需要
TLS,TLS握手也避免了 - 由于
UDP数据包不依赖于数据包的顺序,因此从根本上解决了队头阻塞问题 - 由于
UDP并没有建立链接,没有重传机制,但是有自己的前向纠错机制:发送的每个数据包还包含了足够的其他数据包的数据,可以重建出丢失的数据 TCP的链接依赖IP和端口号,只要有一个发生了变化,就得重新建立链接,这使得移动端的网络体验会因为wifi的切换或者基站的切换而变差。而QUIC拥有自己的标识符(Connection UUID),不依赖于IP和端口号,不会因为上述问题导致重连。
参考博文:
[1]: https://juejin.cn/post/6844903588922130440
[2]: https://ma.ttias.be/googles-quic-protocol-moving-web-tcp-udp/#why-fewer-packets-matter-so-much
本文介绍了TCP的流量控制机制,通过滑动窗口和AdvertisedWindow字段确保发送速率适应接收方处理能力。同时,探讨了QUIC协议的出现原因,包括为了解决HTTP/2.0的队头阻塞问题以及QUIC的特点,如快速连接建立、无队头阻塞、前向纠错等,旨在提高网络传输效率。
7万+

被折叠的 条评论
为什么被折叠?



