TCP的交互数据流是指由一些交互式的命令产生的数据流(比如一个简单的回显服务器)数据内容较少。
TCP的成块数据流可以认为是指很多数据块不停的被发送。
对于这两种数据的传输,采用不同的方法。
交互数据流主要使用到Nagle算法:
该算法要求一个TCP连接上最多只能有一个未被ACK的小分组。也就是说,如果上一个小分组没有被确认,之后的分组将会被积压在缓冲区中,直到收到ACk,才可以被发送,这个时候可以将积压的分组合并为一个。积压的分组个数是由网络传输速率决定的,因此这个算法具有良好的自适应性:确认送到的越快,分组发送的越快。
但在一些实时性很高的应用中这个算法会被关闭。
成块数据流的传输使用滑动窗口的方法:
每次发送ACK时,告知发送方自己还可以接受多大的数据(TCP首部中的窗口字段)。