一、TCP发送机制?
1.1、Nagle算法
TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多小数据块。
Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段。 所谓“小段”,指的是小于MSS尺寸的数据块,所谓“未被确认”,是指一个数据块发送出去后,没有收到对方发送的ACK确认该数据已收到。
1.2、TCP、UDP数据包大小的限制
摘自:TCP、UDP数据包大小的限制_草上爬的博客-CSDN博客_udp包最大长度1、概述首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}} 不同的协议层对数据包有不同的称谓,在传输层叫做段(sehttps://blog.csdn.net/caoshangpa/article/details/51530685
首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。
其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}
UDP?包的大小就应该是?1500 - IP头(20) - UDP头(8) = 1472(Bytes) TCP?包的大小就应该是?1500 - IP头(20) - TCP头(20) = 1460 (Bytes)
1.3、LWIP协议栈中的配置项
TCP_MSS? :TCP最大段尺寸
对象上述的Nagle算法的描述,若TCP连接要发送长度较大的字节数,修改协议中这个宏的配置
?LWIP所用的内存分配 MEM_SIZE
??LWIP 块的最小尺寸配置。
?FreeRTOS所用内存分配
?
|