TCP超时与重传

1、TCP重传

A、基于时间信息

设置RTO:tcp协议对超时报文的处理响应比较剧烈,如:i、基于拥塞控制机制,减小发送窗口大小——限窗;ii、当一个重传报文段被再次重传时,则增大RTO退避因子——再次重传,会进行指数退避策略

B、基于确认信息:若没有延时发生,累积ACK报文数达dupthresh次数或ACK报文包含选择确认信息(SACK)表明出现失序报文段时,会启动快速重传机制。(快速重传:不必等待RTO,便重传报文,也可发送新报文,但会触发拥塞控制机制)

PS:TCP重传应尽量避免超时(RTO)重传。

2、带选择确认的重传(select ACK,作为tcp报文头部的option部分)

合理的SACK可以重传丢失的数据来填补接收端缓存中的空缺,同时也可保证不重传已正确接收到的数据。

空缺:ACK号与接收端缓存中的其他数据之间的间隔(有待接收报文的序号)

失序数据:序列号高于空缺的数据

报文失序时,收发端都必须启动SACK选项才可进行带选择确认重传。

发送端行为:第一个SACK块内包含的是最近接收到的报文段的序号范围。

接收端行为:根据SACK信息提供接收端数据序列号范围,从而推断需要重传的空缺数据。一般而言,先填空缺信息,再继续发送新数据。

扫描二维码关注公众号,回复: 3358916 查看本文章

PS:SACK存在“食言”行为,所以一切要以ACK确认号或重传计时器为准。

3、包失序与包重复

包失序:因为IP层不能保证包传输是有序进程的,所以会存在轻微失序(可自动恢复)、严重失序(启动快速重传)。

包重复:即同一个包产生了完全相同的多个副本,利用SACK可简单忽略此现象。

4、重新组包

当tcp超时重传时,并不需要完全重传相同的报文段。tcp允许执行重新组包,发送一个更大的报文段来提高性能。

5、与TCP重传有关的攻击

低速率DoS攻击:攻击者向网关或主机发送大量数据,使得受害系统持续处于重传超时的状态。

猜你喜欢

转载自blog.csdn.net/TT_love9527/article/details/82669072