首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP状态TCP_CA_Recovery与TCP_CA_Loss

TCP状态TCP_CA_Recovery与TCP_CA_Loss
EN

Stack Overflow用户
提问于 2018-01-15 19:33:02
回答 1查看 589关注 0票数 0

在tcp文件传输中,以下状态之间的区别是什么?

TCP_CA_Recovery和TCP_CA_Loss ?!

传输的状态何时设置为这些值?丢包leads=到恢复、丢失还是两样都没有?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 20:18:26

TL;DR -当检测到重复的acks或选择性的acks时达到恢复.数据包丢失会导致TCP_CA_Recovery状态,如果达到重传超时,则会导致TCP_CA_Loss

这两个标志都是Linux中TCP拥塞避免实现的5种状态之一。

代码语言:javascript
复制
enum tcp_ca_state
{
    TCP_CA_Open = 0,
#define TCPF_CA_Open    (1<<TCP_CA_Open)
    TCP_CA_Disorder = 1,
#define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
    TCP_CA_CWR = 2,
#define TCPF_CA_CWR (1<<TCP_CA_CWR)
    TCP_CA_Recovery = 3,
#define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
    TCP_CA_Loss = 4
#define TCPF_CA_Loss    (1<<TCP_CA_Loss)
};

这里

因此,所有异常(非打开)状态都是TCP实现“感觉到”链路拥塞后恢复的步骤。

  • TCP_CA_Open - ACK处理的正常状态(正常调节拥塞窗口)。
  • TCP_CA_Disorder -检测/接收重复ACK(DUPACK)或选择性确认(SACKS)。
  • TCP_CA_CWR -拥塞窗口减少状态。在这种状态下,Linux堆栈开始减少拥塞窗口。此状态可由TCP_CA_RecoveryTCP_CA_Loss中断。
  • 在重新传输数据包时输入TCP_CA_Recovery状态.

发送方处于恢复状态,直到成功地确认输入恢复状态时未完成的所有段。在此之后,发送方返回到Open状态。重传超时也可以中断恢复状态。

(资料来源如下)。

  • TCP_CA_Loss -在TCP RTO (重传超时)过期时输入状态。

您可以阅读更多关于它的这里。还有的书。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48269542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档