LWIP应用开发|LWIP协议栈
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协议栈相关推荐
- 物联网LWIP网络开发 LWIP网卡设计原理11.2 协议栈内存管理
LwIP网卡设计与实现上 netif相关结构体 netif flag /** 这个netif网络接口,可以进行正常使用(lwIP可以正常使用了)*/ #define NETIF_FLAG_UP 0x0 ...
- 物联网LWIP网络开发 LWIP网卡设计原理11.1 协议栈内存管理
lwIP协议栈内存管理上 lwIP 内存管理需求 常用内存管理需求 静态分配的变量 -> RAM 任务堆栈 动态存储器管理 malloc & free lwip内存管理需求 lwip 内 ...
- LWIP网络开发从入门到精通
LWIP网络开发从入门到精通 1. LWIP应用开发 | LWIP协议栈 2. LWIP应用开发 | 以太网基础知识 3. LWIP应用开发 | TCP/IP协议簇一 4. LWIP应用开发 | TC ...
- LwIP应用开发笔记之十:LwIP带操作系统基本移植
现在,TCP/IP协议的应用无处不在.随着物联网的火爆,嵌入式领域使用TCP/IP协议进行通讯也越来越广泛.在我们的相关产品中,也都有应用,所以我们结合应用实际对相关应用作相应的总结. 1.技术准备 ...
- LwIP应用开发笔记之一:LwIP无操作系统基本移植
现在,TCP/IP协议的应用无处不在.随着物联网的火爆,嵌入式领域使用TCP/IP协议进行通讯也越来越广泛.在我们的相关产品中,也都有应用,所以我们结合应用实际对相关应用作相应的总结. 1.技术准备 ...
- 【程序】在STM32单片机上用1700行代码实现基于LwIP 2.1.2协议栈raw API和FatFs文件系统的FTP服务器(20200703版)
此程序是旧版本,请下载最新的20230315版使用. lwipopts.h里面的MEM_SIZE这个选项非常重要!一定要尽可能大(至少10240以上,最好是102400以上),这样lwip才有足够的内 ...
- 【程序】在STM32单片机上用1700行代码实现基于LwIP 2.1.2协议栈raw API和FatFs文件系统的FTP服务器(20230315版)
[更新记录] 本程序基于20200703版的程序,作出了如下更新: 1. 解决了当accept函数的参数err!=ERR_OK时,程序出现HardFault错误的bug. 2. 当lwip MEM_S ...
- LWIP学习 (1) LWIP简介
文章目录 LWIP 简介 LWIP 文件说明 core内核文件简介 LWIP 三种编程接口 RAW NETCONN SOCKET API ETH(以太网) 介绍 SMI接口 MII接口 RMII接口 ...
- LWIP:RTThread + LWIP
1. 序言 今天跟大家简单分享 LWIP + RTThread 的移植注意事项,记得以前刚接触 LWIP 那会,是跟着野火的教程一起走,而大部分 LWIP 移植教程都是以 freeRTOS 为主,本着 ...
最新文章
- python数据分析是什么意思_python数据分析有什么用
- pandas中drop用法_python进行数据清理之pandas中的drop用法
- FastClick使用之trigger触发click失效
- LAMP 搭建BBS论坛实战
- Html常用标签元素
- javadoc 标签_新的Javadoc标签@ apiNote,@ implSpec和@implNote
- OpenJDK作为Linux上的默认Java
- 将Github中Fork的代码,克隆到本地
- Oracle 统计信息备份/表分析
- turtle fillcolor_python3的turtle画模仿3d星空、运动的恒星小宇宙
- 脚本化CSS类-HTML5 classList属性
- 设置代理,多进程爬虫
- python运维自动化老男孩_老男孩Python高级运维自动化实战 老男孩Python高级运维开发10期 全套Python视频教程下 ......
- volatile 与诡异事件
- 后端知识点:互联网中B端客户和C端客户的区别
- centos查看显卡型号时出现 NVIDIA Corporation
- 陈艾盐:春燕百集访谈节目第二十六集
- MySQL read_only 与 super_read_only 之间的关系
- kali linux xfce桌面修改锁屏背景图片
- C# WebForm