TCP交互数据流:
对与交互性要求较高的应用采用交互性输入,一次发送较少的字节,当TCP在接受数据时并不急着立即发送ACK;相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送(捎带ACK)。绝大多数实现采用的时延为200ms,也就是说,TCP将以最大200ms的时延等待是否有数据一起发送。如果在200ms以内有数据与ACK一起发送则我们就无法观察到经受时延的确认,如果200ms内没有数据要与ACK一起发送则会在200ms后产生一个单独的ACK确认,这个确认就是经受时延的ACK确认。
TCP的成块数据流:
TCP通常使用“隔一个报文段确认”策略,即不一定对每一个报文段进行确认,而是累积ACK,可以一下确认两个报文段。当一个报文段过来时,接收端准备等待发送ACK(等待时候有数据一起与ACK发送),这时候又过来一个数据段,接收端见有两个报文段过来了,就不等待了直接把这两个报文段确认了。这个时候如果再过来一个报文段,正好200ms时间到了,这时接收端也就把这一个报文段确认了,如果200ms没到则继续等待有数据随ACK一起发送或者再来一个报文段请求确认才发送ACK。