简述同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别
1、TCP拥塞如何控制? (1)滑动窗口:TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据 滑动窗口指出接收缓冲区中的可用空间,从而确保发送方发送的数据不会溢出缓冲区。 窗口时刻动态变化:当接收发送发数据时,窗口大小减小;当接收方从缓冲区中读取数据时,窗口大小增大。 TCP的接收缓冲区满,它必须等待应用程序从这个缓冲区读取数据后才能再接收发送方传来的数据。 UDP不提供流控制,按发送方的速率发送数据,不管接收方的缓冲区是否装得下。 ## 参考文献:《UNIX网络编程》 (2)TCP拥塞的原因:在早期的时候,通信的双方不知道网络的状况,所以过程中可能会出现中间节点阻塞丢包,所以就有了滑动窗口机制来解决这个问题。 (3)滑动窗口协议:用于网络数据传输时的流量控制,以避免拥塞的发生。如果过多的发送方同时以很快的速度发送大量的数据包,接收方有可能并没有那么高的接收数据能力,因此极易导致网络的拥塞(并发服务器)。 (4)滑动窗口的值:网络中没有出现拥塞,滑动窗口的值可以增大一些(以便把更多的数据包发送出去);网络出现拥塞,滑动窗口的值应该减小一些(以减少注入到网络中的数据包数) (5)拥塞控制算法: 基于丢包的拥塞控制:将丢包视为出现拥塞,采取缓慢探测的方式,逐渐增大拥塞窗口,当出现丢包时,将拥塞窗口减小,如Reno、Cubic等。