TCP会被UDP取代吗

回复
头像
雷雨
论坛版主
论坛版主
帖子: 480
注册时间: 2017年 2月 13日 11:34

TCP会被UDP取代吗

帖子 雷雨 »

  TCP 协议可以说是今天互联网的基石,作为可靠的传输协议,在今天几乎所有的数据通信都会通过 TCP 协议传输,然而 TCP 也有自身的设计缺陷。

  在网络通信中,从发送方发出数据开始到收到来自接收方的确认的时间被叫做往返时延(Round-Trip Time,RTT)。

  弱网环境是丢包率较高的特殊场景,TCP 在类似场景中的表现很差,当 RTT 为 30ms 时,一旦丢包率达到了 2%,TCP 的吞吐量就会下降 89.9%,从下面的表中我们可以看出丢包对 TCP 的吞吐量极其显著的影响:

图片
TCP的一些传输特性

拥塞控制

  TCP 拥塞控制算法是互联网上主要的拥塞控制措施,它使用一套基于线増积减(Additive increase/multiplicative decrease,AIMD)的网络拥塞控制方法来控制拥塞[^4],也是造成 TCP 性能问题的主要原因。

  第一次发现的互联网拥塞崩溃是在 1986 年,NSFnet 阶段一的骨干网的处理能力从 32,000bit/s 降到了 40bit/s,该骨干网的处理能力直到 1987 和 1988 年,TCP 协议实现了拥塞控制之后才得到解决。正是因为发生过网络阻塞造成的崩溃,所以 TCP 的拥塞控制算法就认为只要发生了丢包当前网络就发生了拥堵,从这一假设出发,TCP 就使用了慢启动和线增积减的机制实现拥塞控制。

  TCP 使用三次握手建立连接应该是全世界所有工程师都十分了解的知识点,三次握手的主要目的是避免历史错误连接的建立并让通信的双方确定初始序列号,然而三次握手的成本相当高,在不丢包的情况下,它需要建立 TCP 连接的双方进行三次通信。

重传机制

  TCP 传输的可靠性是通过序列号和接收方的 ACK 来保证的,当 TCP 传输一个数据段时,它会将该数据段的副本放到重传队列上并开启计时器:

  如果发送方收到了该数据段对应的 ACK 响应,当前数据段就会从重传队列中删除;

  如果发送方在计时器到期之间都没有收到该数据段对应的 ACK,就会重新发送当前数据段;
TCP 的 ACK 机制可能会导致发送方重新传输接收方已经收到了数据段。TCP 中的 ACK 消息表示该消息之前的全部消息都已经被成功接收和处理,例如:

  发送方向接收方发送了序号为 1-10 的消息;

  接收方向发送方发送 ACK 8 响应;

  发送方认为序号为 1-8 的消息已经被成功接收;
这种 ACK 的方式在实现上比较简单,更容易保证消息的顺序性,但是在以下情况可能会导致发送方重传已经接收的数据:

总结

  TCP 协议的一些设计在今天来看虽然仍然具有巨大的价值,但是并不能适用于所有场景。为了解决 TCP 的性能问题,目前业界有两种解决方案:

  使用 UDP 构建性能更加优异、更灵活的传输协议,例如:QUIC 等;

  通过不同的手段优化 TCP 协议的性能,例如:选择性 ACK(Selective ACK, SACK),TCP 快开启(TCP Fast Open, TFO);

  由于 TCP 协议在操作系统内核中,不利于协议的更新,所以第一种方案目前发展的更好,HTTP/3 就使用了 QUIC 作为传输协议。我们在这里重新回顾一下导致 TCP 性能问题的三个重要原因:

  TCP 的拥塞控制在发生丢包时会进行退让,减少能够发送的数据段数量,但是丢包并不一定意味着网络拥塞,更多的可能是网络状况较差;

  TCP 的三次握手带来了额外开销,这些开销不只包括需要传输更多的数据,还增加了首次传输数据的网络延迟;

  TCP 的重传机制在数据包丢失时可能会重新传输已经成功接收的数据段,造成带宽的浪费;

  TCP 协议作为互联网数据传输的基石可以说是当之无愧,虽然它确实在应对特殊场景时有些问题,但是它的设计思想有着非常多的借鉴意义并值得我们学习。
霖儿
逍遥游侠
逍遥游侠
帖子: 39
注册时间: 2017年 3月 26日 17:15

Re: TCP会被UDP取代吗

帖子 霖儿 »

应该不会,就算是有设计缺陷,也不会这么快的被取代,像HTTPS早就有了,但是现在都才刚刚普及
jackson
逍遥游侠
逍遥游侠
帖子: 52
注册时间: 2017年 5月 11日 19:30

Re: TCP会被UDP取代吗

帖子 jackson »

目测不会,什么东西都一样,被应用的越发广泛,时间越发的长,想取代他的占有率越发的难
头像
王旨祎
闻弦雅士
闻弦雅士
帖子: 96
注册时间: 2017年 2月 13日 11:30

Re: TCP会被UDP取代吗

帖子 王旨祎 »

不存在的,各尽其职而已
头像
黄健
初来乍到
初来乍到
帖子: 9
注册时间: 2019年 10月 17日 12:07

Re: TCP会被UDP取代吗

帖子 黄健 »

一般不会
回复