TCP发送大小

TPC一次可以发送的大小是多少:由两个因素决定:接收窗口和拥塞窗口;
rwnd:接收方最多可以接受的字节大小;TCP不使用停等协议,而是一次发送多个报文段,然后等待确认,通过滑动窗口机制,把发送缓冲区中的数据分为4类:已发送且确认的;已发送没有确认的;可以发送的;不能发送的;接收方也有一个接收缓冲区,里面有已经接收的,可以接收的,不能接收的;发送窗口大小就是可以接收的大小。每次发送方收到一个ACK,就把窗口下沿向前滑动,根据接收窗口算出发送窗口,并把上沿向前滑动;如果接收方rwnd=0,则启动一个定时器,超时了则发送一个探测包(1个字节的数据),接收方告诉此时rwnd的值;
cwnd:用于拥塞控制;有慢启动,开始时cwnd=1或比较小的值;每收到一个ACK,cwnd+MSS(也就是一个RTT,翻倍),当cwnd达到ssthresh(有一个初始值)时,进入拥塞避免,每一个RTT,cwnd+MSS;当收到3个冗余ACK,ssthresh=cwnd/2,cwnd=ssthresh,并再次进入拥塞避免;如果超时,则ssthresh=cwnd/2,cwnd=1,进入慢启动;
TCP发送方能发送的大小=min(rwnd,cwnd);

你可能感兴趣的:(tcp)