LWIP协议栈

1. LWIP协议介绍

LWIP 是瑞典计算机科学院(SICS)的Adam Dunkels 等开发的一个小型开源的TCP/IP 协议栈。LWIP 是轻量级 IP 协议,有无操作系统的支持都可以运行, LWIP 实现的重点是在保持 TCP 协议主要功能的基础上减少对 RAM 的占用,它只需十几 KB 的 RAM 和 40K 左右的 ROM 就可以运行,这使LWIP协议栈适合在低端的嵌入式系统中使用。

LWIP支持的协议种类:

  • DNS,域名解析;
  • SNMP,简单网络管理协议;
  • DHCP,动态主机配置协议;
  • UDP 协议,用户数据报协议;
  • TCP 协议,支持 TCP 拥塞控制, RTT 估计,快速恢复与重传等;
  • 提供三种用户编程接口方式:raw/callback API、sequential API、BSD-style socket API;
  • IP 协议,包括 IPv4 和 IPv6,支持 IP 分片与重装,支持多网络接口下数据转发;
  • AUTOIP, IP 地址自动配置;
  • ICMP 协议,用于网络调试与维护;
  • IGMP 协议,用于网络组管理,可以实现多播数据的接收;
  • ARP 协议,以太网地址解析协议;
  • PPP,点对点协议,支持 PPPoE

LWIP协议源码模型如下图示:

2. LWIP编程接口

LWIP提供了三种编程接口,分别为 RAW API、 Netconn API和Socket API

  • RAW API:内核回调型API,在没有操作系统支持的中,只能使用RAW API进行开发
  • Netconn API:基于操作系统的IPC机制(即信号量和邮箱机制)实现的,将LWIP内核代码和网络应用程序分离成了独立的线程,因此LWIP内核线程就只负责数据包的TCP/IP封装和拆封,而不用进行数据的应用层处理,大大提高了系统对网络数据包的处理效率
  • Socket API:即套接字,它对网络连接进行了高级的抽象,使得用户可以像操作文件一样操作网络连接

RAW API和Netconn/Socket API的区别如下表所示:

3. LWIP硬件接口

LWIP可以通过链表挂载多个以太网外设,每个外设的interface结构体中包含IP地址、硬件信息、驱动相关信息以及其他可选项

  • IP information:包括IP地址、子网掩码和网关相关信息

  • Hardware information:包括MAC地址和Flags标示相关信息

  • Driver function:包括输入、输出和回调函数相关信息


LWIP应用开发|LWIP协议栈相关推荐

  1. 物联网LWIP网络开发 LWIP网卡设计原理11.2 协议栈内存管理

    LwIP网卡设计与实现上 netif相关结构体 netif flag /** 这个netif网络接口,可以进行正常使用(lwIP可以正常使用了)*/ #define NETIF_FLAG_UP 0x0 ...

  2. 物联网LWIP网络开发 LWIP网卡设计原理11.1 协议栈内存管理

    lwIP协议栈内存管理上 lwIP 内存管理需求 常用内存管理需求 静态分配的变量 -> RAM 任务堆栈 动态存储器管理 malloc & free lwip内存管理需求 lwip 内 ...

  3. LWIP网络开发从入门到精通

    LWIP网络开发从入门到精通 1. LWIP应用开发 | LWIP协议栈 2. LWIP应用开发 | 以太网基础知识 3. LWIP应用开发 | TCP/IP协议簇一 4. LWIP应用开发 | TC ...

  4. LwIP应用开发笔记之十:LwIP带操作系统基本移植

    现在,TCP/IP协议的应用无处不在.随着物联网的火爆,嵌入式领域使用TCP/IP协议进行通讯也越来越广泛.在我们的相关产品中,也都有应用,所以我们结合应用实际对相关应用作相应的总结. 1.技术准备 ...

  5. LwIP应用开发笔记之一:LwIP无操作系统基本移植

    现在,TCP/IP协议的应用无处不在.随着物联网的火爆,嵌入式领域使用TCP/IP协议进行通讯也越来越广泛.在我们的相关产品中,也都有应用,所以我们结合应用实际对相关应用作相应的总结. 1.技术准备 ...

  6. 【程序】在STM32单片机上用1700行代码实现基于LwIP 2.1.2协议栈raw API和FatFs文件系统的FTP服务器(20200703版)

    此程序是旧版本,请下载最新的20230315版使用. lwipopts.h里面的MEM_SIZE这个选项非常重要!一定要尽可能大(至少10240以上,最好是102400以上),这样lwip才有足够的内 ...

  7. 【程序】在STM32单片机上用1700行代码实现基于LwIP 2.1.2协议栈raw API和FatFs文件系统的FTP服务器(20230315版)

    [更新记录] 本程序基于20200703版的程序,作出了如下更新: 1. 解决了当accept函数的参数err!=ERR_OK时,程序出现HardFault错误的bug. 2. 当lwip MEM_S ...

  8. LWIP学习 (1) LWIP简介

    文章目录 LWIP 简介 LWIP 文件说明 core内核文件简介 LWIP 三种编程接口 RAW NETCONN SOCKET API ETH(以太网) 介绍 SMI接口 MII接口 RMII接口 ...

  9. LWIP:RTThread + LWIP

    1. 序言 今天跟大家简单分享 LWIP + RTThread 的移植注意事项,记得以前刚接触 LWIP 那会,是跟着野火的教程一起走,而大部分 LWIP 移植教程都是以 freeRTOS 为主,本着 ...

最新文章

  1. python数据分析是什么意思_python数据分析有什么用
  2. pandas中drop用法_python进行数据清理之pandas中的drop用法
  3. FastClick使用之trigger触发click失效
  4. LAMP 搭建BBS论坛实战
  5. Html常用标签元素
  6. javadoc 标签_新的Javadoc标签@ apiNote,@ implSpec和@implNote
  7. OpenJDK作为Linux上的默认Java
  8. 将Github中Fork的代码,克隆到本地
  9. Oracle 统计信息备份/表分析
  10. turtle fillcolor_python3的turtle画模仿3d星空、运动的恒星小宇宙
  11. 脚本化CSS类-HTML5 classList属性
  12. 设置代理,多进程爬虫
  13. python运维自动化老男孩_老男孩Python高级运维自动化实战 老男孩Python高级运维开发10期 全套Python视频教程下 ......
  14. volatile 与诡异事件
  15. 后端知识点:互联网中B端客户和C端客户的区别
  16. centos查看显卡型号时出现 NVIDIA Corporation
  17. 陈艾盐:春燕百集访谈节目第二十六集
  18. MySQL read_only 与 super_read_only 之间的关系
  19. kali linux xfce桌面修改锁屏背景图片
  20. C# WebForm

热门文章

  1. win无线网卡怎么进入监听模式_建议收藏(笔记本搜不到无线网的教程)
  2. np.pad()详解
  3. 计算机桌面个性化怎样设置方法,win10电脑中右键桌面无法打开个性化和显示设置如何处理...
  4. 基于T5的模型微调以及对应的数据介绍
  5. 20190928多益网络前端笔试总结
  6. 利用毫米波雷达点云进行多目标聚类跟踪的算法设计
  7. pytest装饰器实现批量造数
  8. 企业智慧屏应用场景有哪些
  9. html实现鼠标拖拽按钮,JS实现鼠标按下拖拽效果
  10. IP冲突导致访问不了请求