IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> LwIP协议栈浅析 -> 正文阅读

[网络协议]LwIP协议栈浅析

原文链接:
https://blog.csdn.net/c12345423/article/details/109831396

https://blog.csdn.net/c12345423/article/details/109831396?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163953014116780271970981%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163953014116780271970981&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-109831396.pc_search_insert_es_download&utm_term=lwip%E5%8D%8F%E8%AE%AE%E6%A0%88&spm=1018.2226.3001.4187

https://blog.csdn.net/qq_42992084/article/details/109606919

一、前言

LwIP协议栈是TCP/IP协议的一种实现,由于其轻量级的特性,一般用于资源比较有限的嵌入式设备中,本文是学习了野火的LwIP教程之后做了一些学习总结,主要讲解LwIP协议栈包含的功能,如有侵权,请联系本人。

LwIP源码可以直接到官网下载:LwIP官网

二、LwIP简介

LwIP(Light weight IP)是一种轻量级的TCP/IP协议栈,其设计初衷是用少量的资源消耗实现一个较为完整的TCP/IP协议栈,有无操作系统均可运行。LwIP 具有主要特性:

1. 支持 ARP 协议(以太网地址解析协议)。
2. 支持 ICMP 协议(控制报文协议),用于网络的调试与维护。
3. 支持 IGMP 协议(互联网组管理协议),可以实现多播数据的接收。
4. 支持 UDP 协议(用户数据报协议)。
5. 支持 TCP 协议(传输控制协议),包括阻塞控制、 RTT 估算、快速恢复和快速转发。
6. 支持 PPP 协议(点对点通信协议) ,支持 PPPoE。
7. 支持 DNS(域名解析)。
8. 支持 DHCP 协议,动态分配 IP 地址。
9. 支持 IP 协议,包括 IPv4、 IPv6 协议,支持 IP 分片与重装功能,多网络接口下的数据包转发。
  1. 支持 SNMP 协议(简单网络管理协议)。
  2. 支持 AUTOIP,自动 IP 地址配置。
  3. 提供专门的内部回调接口(Raw API),用于提高应用程序性能。
  4. 提供可选择的 Berkeley 接口 API,即 Socket 套接字 (在多线程情况下使用) 。

三、LwIP的优缺点

  1. 资源开销低,流程运行只需要40K的代码空间和几十K的内存空间;高度可剪裁,任何不需要的功能都可以通过宏编译选项去掉;LwIP有自己的内存管理策略和数据包管理策略,因此内核数据包处理很高效。

2.几乎支持TCP/IP中所有常见的协议,并且实现了一些常见的应用程序,比如:DHCP客户端、DNS客户端、HTTP服务器、MQTT客户端、TFTP服务器、SNTP客户端等。LwIP相对于其他嵌入式TCP/IP协议栈(uC-TCP/IP、FreeRTOS-TCP等)历史比较悠久,且经过更多的验证和测试,所以被广泛使用在嵌入式网络设备中。而且开源、免费。

3.对处理器和操作系统相关的地方进行了抽象,可以方便的进行跨处理器和操作系统的移植,源代码全部用C实现。提供3种编程接口:RAW API 、NETCONNN API 、Socket API,用户根据实际需要和他们各自特点选择使用。

缺点:由于面向资源有限的嵌入式设备,没有完整的实现TCP/IP协议栈,但是对于物联网的大部分场景已经足够了。

四、LwIP协议栈移植

4.1 LwIP内核

  LwIP内核由多个模块组成,包括:TCP/IP协议栈的各种协议、内存管理模块、数据包管理模块、网卡管理模块、网卡接口模块、基础功能类模块、API模块。

4.2 LwIP内核的三种编程接口

RAW/Callback API

   优点:有无操作系统均可使用,通过回调的方式可以提高应用程序的效率,节省内存开销(用户程序和内核程序处于同一个线程中,节省了任务切换和任务间通信的开销)。

   缺点:利用回调函数开发应用程序,实现过程比较复杂,可读性差;应用程序和内核程序处于同一线程,如果应用程序占用时间过长,会影响内核程序的执行,导致丢包等问题。

NETCONN API

    优点:在操作系统环境下,基于IPC机制实现,将内核程序和应用程序分离为独立的线程,LwIP内核线程只负责数据包的TCP/IP封装和拆封,应用程序负责处理应用数据,因此相对于RAW/Callback API的方式提高了协议栈对数据包的处理效率。

    对网络连接进行了抽象,简化了编程工作,用户可以像操作文件那样操作网络连接,而且通过内核的pbuf、netbuf结构体来传递数据,避免了数据包在内核和应用程序之间的拷贝,

    缺点:需要依赖操作系统,且IPC机制(信号量,邮箱)、任务切换需要耗费时间和内存,效率也比回调函数方式低。

    虽然可以通过类似操作文件那样去操作网络连接,但是用户操作的参数是内核的相关结构体,需要用户对LwIP使用的数据结构有一定了解,不像操作文件直接读写数组那么简单。

SOCKET API

优点:基于NETCONN API 实现,进行了更高级的抽象,操作更加简单易用,有很好的移植性。

缺点:内核程序和应用程序之间存在数据拷贝,降低了数据处理的效率。

4.3 LwIP协议栈移植步骤

LwIP移植又可分为有操作系统移植和无操作系统移植,有操作系统移植步骤如下:

    1.底层移植:时钟systick 中断的实现,tick->ms的转换,网卡收发线程的实现,操作系统接口的适配 ;

    2.基于上面底层和操作系统的移植工作,要使LwIP跑起来,还要初始化,包括:调用lwip_init()初始化内核(内核自动创建tcpip_thread线程),挂载网卡,设置默认网卡;

    3.移植完成后用电脑ping开发板测试。

备注:

    a. 以太网的最大传输字节一般是1500,在IP层决定是否对数据包进行分片处理,因为链路层不提供任何差错处理机制;

    b. 挂载网卡:将描述网卡的结构体通过netif_add()挂载到netif_list链表上;

    c. 几种内存分配策略 :动态内存池管理、动态内存堆管理(分两种:1.C标准库自带,2.LwIP自身实现的,两者通过宏选择);

    d. 在操作系统环境下,LwIP作为一个线程运行,初始化LwIP的时候,内核自动创建这个线程;
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 18:03:49  更:2021-12-16 18:06:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 7:51:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码