简单描述:收到一个包之后,暂时没有什么数据要发给对方,延迟一段时间之后再确认(一般200ms以上),假如在这段时间里恰好有数据要发送,那确认信息和数据就可以在一个包里面发出去了
上图是开启了延迟确认,等待200ms再回复确认
下图是关闭了延迟确认,收到后就马上回复ack
好处:假如在延迟确认这段时间里刚好有包要发,就可以在发数据的时候把确认信息带过去,省了一个纯粹的确认包,很多TCP默认协议栈默认启动了延迟确认,正是这样可以节省带宽。
坏处:多出一段延迟,一般来说偶尔的浪费200ms不算什么严重问题,但是如果在同一窗口存在大量这种情况,就会严重影响性能,因为延迟太久甚至会导致超时重传。还有如果TCP窗口极小的情况,出现延迟超时会雪上加霜