看了TCP的交互数据流和成块数据流,个人觉得如果不使用Nagle算法,那么交互数据流使用的方法应该跟成块数据流一样。
TCP处理一个接收的报文将产生一个经受时延的确认,此ACK并不立即返回,这时分两种情况(隔一个报文或者定时器溢出):
(1)TCP处理下一个报文,然后返回一个ACK确认2个报文段(可以想象成捎带ACK);
(2)定时器溢出,返回ACK。如果溢出时,TCP接收缓冲区中还有数据没有被应用层读取完,那么返回报文段的窗口值将为初始窗口值减去缓冲区中的值。
滑动窗口:流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。
发送方使用PUSH标志通知接收方将所收到的数据全部提交给接收进程。这里的数据包括与 PUSH一起传送的数据以及接收方TCP已经为接收进程收到的其他数据。
拥塞窗口:
发送方开始发送一个报文,然后等待ACK。
当收到该ACK时,拥塞窗口从1增加到2,即可以发送2个报文段。
发送方再发送2个报文段,然后等待ACK,当收到这两个报文段的ACK时,拥塞窗口就增加为4。这是一种指数增加的关系。
注意,发送方取拥塞窗口和通告窗口中的最小值作为发送上限。
拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。
慢启动算法用于保证新分组进入网络的速率与另一端返回确定的速率相等。
紧急方式