LWIP与FreeRTOS调试记录

一、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所用内存分配

 

おすすめ

転載: blog.csdn.net/qq_34301282/article/details/120408441