TCP的交互数据流

经受延时的确认

  TCP在接收到数据时并不立即发送ACK,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送。

Nagle算法

  该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。相反, TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去。该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。而在希望减少微小分组数目的低速广域网上,则会发送更少的分组(小是小于报文段的分组)。

  在需要实时交互时,需要关闭nagle算法。

窗口大小通告

  窗口大小通告是字节数,在建立TCP连接时,SYN分节会相互通告窗口大小,此窗口就是内核缓冲区大小,通常为MSS的偶数背。通过SO_RCVBUF和SO_SNDBUF可以查看本地socket的发送和接受缓冲区大小。

  SO_RCVLOWAT和SO_SNDLOWAT 表示本地TCP接受low water,如果接受的字节大于该值,内核将其标识为可读;如果发送缓冲区的可用空间大于SO_SNDLOWAT,内核将其标识为可写;一般该值缺省为2048字节。

posted on 2020-03-04 15:08  tianzeng  阅读(216)  评论(0编辑  收藏  举报

导航