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信息提供接收端数据序列号范围,从而推断需要重传的空缺数据。一般而言,先填空缺信息,再继续发送新数据。
PS:SACK存在“食言”行为,所以一切要以ACK确认号或重传计时器为准。
3、包失序与包重复
包失序:因为IP层不能保证包传输是有序进程的,所以会存在轻微失序(可自动恢复)、严重失序(启动快速重传)。
包重复:即同一个包产生了完全相同的多个副本,利用SACK可简单忽略此现象。
4、重新组包
当tcp超时重传时,并不需要完全重传相同的报文段。tcp允许执行重新组包,发送一个更大的报文段来提高性能。
5、与TCP重传有关的攻击
低速率DoS攻击:攻击者向网关或主机发送大量数据,使得受害系统持续处于重传超时的状态。