一、网络数据包简介
TCP/IP是一种数据通信机制,因此,协议栈的实现本质上就是对数据包进行处理,为了实现高效的效率,lwIP数据包管理要提供一种高效处理的机制。协议栈各层能对数据包进行灵活的处理,同时减少数据在各层间传递时的时间与空间开销,这是提高协议栈工作效率的关键点。在lwIP中它称之为pbuf。
pbuf用于lwIP各层间的数据传递,避免了各层间拷贝数据
二、lwIP与标准TCP/IP协议栈区别
标准TCP/IP协议 | lwIP协议栈 |
---|---|
严格分层 | 模糊分层 |
数据传输层层拷贝 | 对数据直接操作 |
数据包私有 | 数据包共享 |
效率低 | 效率高 |
数据处理要求低 | 数据处理要求高 |
完整的TCP/IP协议栈 | 较完整的TCP/IP协议栈 |
lwIP是一种模糊分层的TCP/IP协议栈,数据传递大大提高
三、lwIP网络数据包结构
/* pbuf.h */
struct pbuf
{
struct pbuf *next; /* 指向下一个节点 */
void *payload; /* 指向数据区域 */
u16_t tot_len; /* 总长度 */
u16_t len; /* 当前pbuf数据区域大小 */
u8_t type_internal; /* pbuf的类型 */
LWIP_PBUF_REF_T ref; /* 引用计数 */
/* .............. */
};
四、lwIP网络数据包类型
注意:这些pbuf可以多种类型的组合分配
五、lwIP网络数据包函数
pbuf_alloc()函数