TCP的组包大小控制,默认使用Nagle算法,即协议栈发送队列积压数据超过阀值MSS或收到一个ack确认后,才会发送下一包数据。
伪代码逻辑:
if there is new data to send
if the window size >= MSS and available data is >= MSS
send complete MSS segment now
else
if there is unconfirmed data still in the pipe
enqueue data in the buffer until an acknowledge is received(timeout 40ms)
else
send data immediately
end if
end if
end if
小包数据发送场景(telnet登录),则需要开启TCP_NODELAY模式,不论数据多小,立即发送tcp包;
TCP协议栈默认开启nagles算法,减少延时发送小包;
大量数据发送场景(如文件传输),则需要开启TCP_CORK模式,尽量以最大包MTU发送数据,0.6~0.8s没有组成一个MTU大包,则直接发送数据。
本文详细介绍了TCP协议中Nagle算法的工作原理,以及如何根据数据发送场景选择不同的优化模式,包括开启TCP_NODELAY模式立即发送小包数据,以及在大量数据传输时启用TCP_CORK模式以最大包MTU进行发送,旨在减少网络延迟和提高数据传输效率。
170

被折叠的 条评论
为什么被折叠?



