TCP有一个传输效率的公式:
Delivery Rate = CWND / RTT
CWND
:拥塞窗口大小,以字节为单位。
* 在没有出现拥塞时,CWND = 对端通告window大小
* 出现拥塞时,CWND 受本端拥塞算法控制,原则上<=带宽最大值*RTT
RTT
:TCP报文一来一去的延迟,以秒为单位。
如果想
充分利用100M带宽,需要尽可能增加CWND大小,而在没有拥堵时,等于对端advertised window (对端缓存)的大小
,假定RTT时间是基本不变的。
为何TCP多线程可以充分利用带宽?
变相增加对端的缓存大小。
为何UDP可以充分利用带宽?
因为UDP没有拥塞机制,应用程序发送的速率 = 链路的最大带宽。