自学内容网 自学内容网

TCP协议特点

1、可靠协议

TCP是一种可靠的传输控制协议,即在网络条件正常的情况下,TCP协议能够保证接收端收到所有数据,并且接收到的数据顺序与发送端一致。TCP通过在发送端给每个数据包分配单调递增的序列号,以及在接收端发送ACK(acknowledgement)实现可靠传输。每个发送的数据包都包含序列号,当接收端收到数据包时,会发送ACK告诉发送端当前自己期待的下一个序列号是多少。例如,发送端分别发送了序列号为99、100、101、102的4个数据包,接收端收到数据包99后,会发送ACK100,意味着接收端期待下一个数据包编号100。如果由于某些原因,数据包100没有到达接收端,但数据包101、102到达了,那么接收端会继续发送ACK100。当发送端发现当前发送的数据包编号超过了100,但接收端仍然期望收到100,那么发送端就会重新发送数据包100。如果接收端收到了重新发送的数据包100,那么接收端会回复ACK103,继续进行剩下的数据传输,并且把数据包99、100、101、102按顺序传递给上一层。

2、流控制(flow control)

TCP使用了端到端流控制以避免发送端发送数据过快导致接收端无法处理。TCP采用了滑动窗口(sliding window)实现流量控制。接收端通过ACK告诉发送端自己还能够接收多少数据,发送端不能发送超过该值的数据量。当接收端返回的窗口大小为0时,发送端停止发送数据,直到窗口大小被更新。由于ACK是由发送端发送的数据触发的,可能接收端窗口已经打开,但是由于发送端已经停止发送,故接收端没有机会通过ACK告知发送端新的窗口大小,在这种情况下会造成死锁。在实际实现中,发送端会设置一个定时器,如果定时器到期,发送端会尝试发送小数据包,以触发接收端的ACK。

3、堵塞控制(congestion control)

为了控制传输速度防止堵塞网络,并且在网络容量允许的范围内尽可能多地传输数据,TCP引入堵塞控制,用以判断当前的网络负荷,并且调整传输速率。TCP通常采用加性增加、乘性减少(additive increasemultiplicative decrease)的阻塞避免机制,即如果按时收到对应的ACK,则下一次传输速率线性增加,否则则视为发生了网络堵塞,下一次传输的比特数折半。所谓的“按时”基于RTT:发送端会估计RTT,并且期望当数据包发送以后,在RTT时间内收到对应的ACK。

4、慢启动

慢启动的目标是逐步增加传输速率,找到网络的承载能力,减少拥塞风险。

其工作原理如下:

  1. 初始状态:当连接建立时,拥塞窗口(Congestion Window, CWND)从一个小值(通常为 1 或 2 个最大报文段 MSS)开始。

  2. 指数增长:每当收到一个确认(ACK)时,CWND 增加一个 MSS。这意味着在每个往返时间(RTT)内,CWND 增加的速度是指数级的。

  3. 拥塞检测:一旦发生丢包或延迟,TCP 会切换到拥塞避免阶段,从而减缓增长速度。通常是在检测到丢包后将 CWND 减半。

5、拥塞避免

拥塞避免机制通过逐步增加传输速率,旨在平衡网络利用率和拥塞风险,确保数据的可靠传输。

其工作机制如下:

  1. 阶段开始:在慢启动阶段后,CWND 达到一个阈值(慢启动阈值,ssthresh),TCP 切换到拥塞避免模式。

  2. 线性增长:在拥塞避免阶段,CWND 的增长速度减缓。每经过一个 RTT,CWND 增加一个 MSS 除以 CWND 的当前大小。这意味着增长是线性的,而非指数的。

  3. 拥塞检测:如果检测到丢包,TCP 会降低 ssthresh,然后将 CWND 重置为 1 或 2,从而重新进入慢启动阶段。

6、快速重传

TCP 快速重传是一种用于提高数据传输效率的机制,主要用于处理丢包情况。其工作流程如下:

  1. 触发条件

    当发送方连续接收到三个相同的 ACK(即确认收到的数据包序列号相同),这通常表示某个数据包在网络中丢失。
  2. 重传操作

    在收到第三个重复的 ACK 后,发送方立即重传被认为丢失的数据包,而不是等待重传定时器超时。这减少了因丢包导致的延迟。

7、快速恢复

TCP 快速恢复机制是在快速重传之后使用的一种拥塞控制策略,旨在提高网络性能并减少因丢包导致的延迟。其工作原理如下:

  1. 触发条件

    快速恢复机制在快速重传之后启动,当发送方重传丢失的数据包后,进入快速恢复阶段。
  2. 调整拥塞窗口

    将慢启动阈值(ssthresh)设置为当前拥塞窗口(CWND)的一半。将 CWND 设置为 ssthresh 加上 3 个 MSS(最大报文段大小),以反映已经确认的三个重复 ACK。
  3. 继续发送数据

    在快速恢复期间,发送方可以继续发送新的数据包,而不必返回到慢启动阶段,直到接收到新的 ACK 确认。
  4. 恢复条件

    一旦接收到新的 ACK(表明有新的数据被确认),TCP 将恢复到正常的拥塞控制阶段,继续增加 CWND。

原文地址:https://blog.csdn.net/melonbo/article/details/142356950

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!