当前位置: 首页> 文旅> 美景 > 企业网站托管哪家好_越南b2b电子商务平台_淘宝店铺怎么免费推广_b站视频推广怎么买

企业网站托管哪家好_越南b2b电子商务平台_淘宝店铺怎么免费推广_b站视频推广怎么买

时间:2025/8/25 18:26:47来源:https://blog.csdn.net/bifudoph/article/details/147498267 浏览次数:0次
企业网站托管哪家好_越南b2b电子商务平台_淘宝店铺怎么免费推广_b站视频推广怎么买

LWIP(Lightweight IP)是为嵌入式系统设计的轻量级TCP/IP协议栈。pbuf(Packet Buffer)和PCB(Protocol Control Block)是LwIP中两个核心数据结构,分别负责数据包管理和协议状态维护。


1. pbuf(Packet Buffer)

作用:

用于管理协议栈中的数据包(零拷贝设计),支持链式结构,可高效处理数据分片。

关键特性:
  • 内存类型
    • PBUF_RAM:从堆分配,允许读写(常见于发送数据)。
    • PBUF_POOL:预分配的固定大小内存池,适合快速分配(如接收数据)。
    • PBUF_ROM/REF:指向只读数据(避免复制大文件)。
  • 链表结构
    • 多个pbuf通过next指针连接,tot_len记录总长度,适合分片场景。
    • 如IP分片、TCP流重组。
  • 字段说明
    struct pbuf {struct pbuf *next;    // 指向下一个pbufvoid *payload;        // 数据存储地址u16_t len;            // 当前pbuf数据长度u16_t tot_len;        // 所有链式pbuf的总长度u8_t type;            // 内存类型(PBUF_RAM/POOL/ROM等)u8_t ref;             // 引用计数(自动释放时用到)
    };
    
操作函数:
// 分配pbuf
struct pbuf *pbuf_alloc(pbuf_layer layer, u16_t size, pbuf_type type);// 释放pbuf(自动处理引用计数)
u8_t pbuf_free(struct pbuf *p);// 复制pbuf数据
u16_t pbuf_copy(struct pbuf *p_to, struct pbuf *p_from);// 连接两个pbuf链
void pbuf_cat(struct pbuf *head, struct pbuf *tail);

2. PCB(Protocol Control Block)

作用:

维护网络协议状态(如TCP/UDP连接参数、端口绑定等)。

常见类型:
  1. TCP_PCB
    管理TCP连接状态(e.g., SYN_SENT、ESTABLISHED), 包含:

    • 本地/远端IP和端口
    • 发送/接收窗口、序号
    • 重传定时器、拥塞控制参数
    struct tcp_pcb {IP_PCB;                // IP相关字段(地址、端口)TCP_STATE_MACHINE;     // TCP状态机u32_t snd_nxt, rcv_nxt; // 发送/接收序号struct tcp_pcb *next;  // 链表指针
    };
    
  2. UDP_PCB
    UDP协议控制,绑定本地端口和处理回调:

    struct udp_pcb {IP_PCB;struct udp_pcb *next;udp_recv_fn recv;      // 接收数据回调函数
    };
    
  3. RAW_PCB
    直接操作IP层数据包(如自定义协议)。

操作示例(TCP服务器):
// 创建TCP PCB
struct tcp_pcb *pcb = tcp_new();// 绑定本地端口
err_t err = tcp_bind(pcb, IP_ADDR_ANY, 8080);// 进入监听状态
struct tcp_pcb *listen_pcb = tcp_listen(pcb);// 设置连接建立回调
tcp_accept(listen_pcb, server_accept_callback);

协作流程示例(数据接收)

  1. 网卡收到数据 → 分配PBUF_POOL类型的pbuf链。
  2. 解析以太网头 → IP层处理 → 查找匹配的PCB(通过IP和端口)。
  3. TCP层通过PCB管理连接状态,将数据传递给应用层。
  4. 应用程序通过pbuf链读取数据 → 处理后释放pbuf

注意事项

  • 内存管理:嵌入式资源有限,合理配置PBUF_POOL大小。
  • 线程安全:LWIP默认单线程,多线程需通过tcpip_callback安全操作。
  • 性能优化:减少pbuf拷贝,优先使用PBUF_REF/ROM引用数据。
关键字:企业网站托管哪家好_越南b2b电子商务平台_淘宝店铺怎么免费推广_b站视频推广怎么买

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: