![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LwIP
文章平均质量分 92
龙赤子
15年开发猿,linuxer,分享经验,获得快乐. LCCZ_QRS
展开
-
Lwip之TCP协议实现(三)
描述Lwip中TCP/IP的发送处理原创 2022-08-28 15:43:53 · 3687 阅读 · 1 评论 -
Lwip之TCP协议实现(二)
描述Lwip中TCP/IP中接收处理原创 2022-08-28 15:28:29 · 3853 阅读 · 0 评论 -
Lwip之TCP协议实现(一)
描述Lwip中TCP协议的实现原创 2022-08-27 16:15:39 · 3370 阅读 · 2 评论 -
Lwip之PPP、PPPoE实现(二)
介绍Lwip中PPP和PPPoE的实现流程原创 2022-08-23 23:05:52 · 1846 阅读 · 0 评论 -
Lwip之PPP、PPPoE实现(一)
介绍PPP、PPPoE协议及在Lwip中的实现原创 2022-08-22 21:08:05 · 2557 阅读 · 0 评论 -
Lwip中实现DM9000/DM9003驱动之二
接上文,继续描述驱动的实现原创 2022-08-17 22:51:51 · 1214 阅读 · 0 评论 -
Lwip中实现DM9000/DM9003驱动之一
介绍如何在Lwip中开发DM9000系列网卡驱动原创 2022-08-17 22:35:00 · 921 阅读 · 0 评论 -
Lwip之SNMP协议与实现
SNMP介绍及在Lwip中的实现原创 2022-08-14 22:26:00 · 2759 阅读 · 0 评论 -
Lwip之内存与包缓冲管理
Lwip中实现内存以及包缓冲管理的主要文件有如下三个mem.c实现堆内存的管理memp.c实现对常用数据结构的管理pbuf.c实现对包缓冲的管理所有这些内存在使用前都是分配好的,以数组的形式提供。这些全局变量的数组在程序的整个运行过程中都是不被释放的。对lwip来说,它们就像是已经存在的物理内存供自己使用。正如作者所说的,内存管理者使用系统所有内存的一个专有部分,这将保证网络系统不会使用所有其他可用内存,并且如果网络系统已经使用了它的所有内存,其他程序的操作也不会被干扰。2.1功能功能。...原创 2022-07-24 17:16:29 · 2276 阅读 · 0 评论 -
TCP/IP协议栈Lwip的设计与实现:之七
这部分利用LWIPAPI实现了一些简单的BSDsocketAPI。这里所提供的实现仅仅作为参考,不期望在实际程序中使用。这里没有错误捕获的示例。同样,这里的实现不支持BSDsocketAPI的select()和poll()函数,因为LWIPAPI中没有任何函数可以用来实现它们。为了实现这些函数,BSDsocket实现将不得不直接与LWIP协议栈通信而不是使用API。...翻译 2022-07-20 22:05:14 · 1059 阅读 · 0 评论 -
TCP/IP协议栈Lwip的设计与实现:之六
这在发送的数据在ROM中时是很有用的,因此是不可变的。创建一个新的连接的抽象数据结构。在为UDP的情况下,使用通过连接发送的UDP消息的remote_addr和remote_port来设置远程接收者。这里的类型与netconn_new中的参数的类型是一样的,或者是NETCONN_TCP或者是NETCONN_UDP。如果连接已经被远程主机关闭了,就返回NULL,否则,一个包含有接收到的数据的netbuf就被返回。如果基于数据可变性的大量控制被需要,可以使用复制和非复制数据的结合,这在下面的例子中可以看到。..翻译 2022-07-20 21:41:28 · 757 阅读 · 0 评论 -
TCP/IP协议栈Lwip的设计与实现:之五
data和len是可以获得返回结果的参数,data将被指向该数据的指针填充,len将被指向数据长度的指针填充。使用netbuf_alloc()为netbuf分配内存与使用malloc()分配内存并使用netbuf_ref()使之参考与该内存的区别就在于在前一中情况下,协议头的空间也被分配,这使得处理和发送缓冲数据更加快速。该函数返回一个指向已分配内存的指针。这里,200字节的数据分配于协议栈上来捕获数据,即使netbufbuf有多于200字节的数据,也仅仅有200字节的数据被拷贝到data指向的内存中。..原创 2022-07-18 21:43:32 · 1055 阅读 · 0 评论 -
TCP/IP协议栈Lwip的设计与实现:之四
可以有两种方式使用TCP/IP协议栈提供的服务,或者直接调用TCP和UDP模块提供的函数,或者使用LWIP的API,这些API会在下一节讲述。TCP和UDP模块对网络服务提供一个基本的接口。该接口基于回调函数,因此使用接口的应用程序就不能以连续的方式操作。这会使得应用程序很难编写并且代码也很难理解。为了接收数据,应用程序注册一个栈的回调函数,这个回调函数与一个特定的连接关联,当链路中有数据包到达,栈就会调用该回调函数。......原创 2022-07-17 21:47:14 · 1192 阅读 · 0 评论 -
TCP/IP协议栈Lwip的设计与实现:之三
接上文:TCP是传输层协议,它为应用程序提供可靠字节流服务。TCP相比于其他协议更加复杂,TCP代码量是整个LWIP协议栈代码的50%。基本的TCP处理被分为6个函数来完成(如图9所示)。函数tcp_input()、tcp_process()以及tcp_receive()与TCP输入处理相关,相应的tcp_write()、tcp_enqueue()以及tcp_output()处理输出相关。 当应用程序想要发送TCP数据时,调用tcp_write()。函数tcp_write()传输控制给tcp_enqueue原创 2022-07-10 16:28:08 · 1793 阅读 · 0 评论 -
TCP/IP协议栈Lwip的设计与实现:之二
接上文:TCP/IP协议栈Lwip的设计与实现:之一_龙赤子的博客-CSDN博客目录7.网络接口8.IP处理8.1接收包8.2发送包8.3转发包8.4 ICMP处理9.UDP处理在LWIP中,对于物理网络硬件的设备驱动通过类似于在BSD中所使用的一个网络接口数据结构来表示。该网络接口结构如图5所示。这个网络接口被放置在一个全局的链表上,这个链通过结构体中的next指针连接起来。每一个网络接口都有它自己的名称,这被保存在结构体的name域中。这个两个字母的名称指示了用于网络接口的设备驱动的种类,并且只有在人工原创 2022-07-10 16:10:07 · 1093 阅读 · 0 评论 -
TCP/IP协议栈Lwip的设计与实现:之一
LWIP是TCP/IP协议栈的实现。LWIP协议栈关注于减少内存的使用和代码尺寸,从而使得LWIP适用于像嵌入式系统这样资源非常有限的小客户端。为了减少对处理能力和内存的要求,LWIP使用一个不需要任何数据复制的剪裁后的API。这篇文章将描述LWIP的设计与实现。协议的实现以及像内存与缓冲管理这样的子系统中用到的算法与数据结构在这里都有描述。另外,这里也包括LWIP API的使用参考和一些使用LWIP的代码实例。纵观过去的几年,连接计算机以及支持计算的设备到无线网络的需求在稳步增长。计算机正在越来越无缝的集原创 2022-07-10 16:02:23 · 1193 阅读 · 0 评论 -
Lwip之IP模块实现
IP协议是TCP/IP协议簇的核心协议,处于链路层之上,传输层之下。IP层处理底层接收的ip数据包,封装上层协议数据包,并进行发送。(所有tcp,udp,icmp以及igmp协议都最终封装进ip包,以ip包的格式进行发送。) 参见数据结构部分。ip.c文件是ip协议的主要实现文件。函数名:ip_init(void)功能:初始化ip层操作:暂为空 函数名:ip_route(struct ip_addr *dest)功能:根据给定的ip地址,找到相关的网络接口。操作:该函数线性遍历网络接口链,如果给定原创 2022-07-10 15:27:06 · 867 阅读 · 0 评论 -
Lwip之定时机制
这里主要介绍lwip的定时机制Lwip的设计是基于进程模型,整个协议栈的处理是由一个进程来处理的,通常也说是一个任务。在Lwip中没有使用任何操作系统相关的函数,取而代之的是提供了一个操作系统仿真层,操作系统仿真层提供唯一的一个接口给操作系统服务,这些服务包括定时器,进程同步以及消息传递机制。进程的同步使用信号量来实现,消息传递使用邮箱实现,而对于定时器的实现则是这一部分需要介绍的。Lwip通过维护一个任务相关的定时链表来管理相应的定时事件。该链表的基本结构如下图所示。定时事件总体结构:通过上图可以看出,系原创 2022-06-26 15:36:48 · 1103 阅读 · 0 评论 -
Lwip之ARP模块实现
一:数据结构这里主要介绍arp表结构该结构是ARP模块操作的主要数据结构,主要数据项包括:IP地址:表示要获取该ip地址对应的端口的mac地址MAC地址:用来保存获取后的mac地址状态:表示当前的表项的状态时间计数:每一个表项都有一个有效时间,通过该域可以知道当前的表项是否还有效另外,还可能包含一个pbuf指针,用来指向等待该入口的数据包。这个数据项选用与否根据外部设置来决定。通常,arp表是一个数组,其中的每一项表示一个ip-mac地址对,每时每刻,不断有新的地址对被添加进来,同时清除失效的地址对,原创 2022-06-26 15:23:12 · 1183 阅读 · 1 评论 -
Lwip之Arch目录文件
介绍Lwip中arch目录下文件的作用原创 2022-06-05 22:42:46 · 510 阅读 · 0 评论 -
Lwip之API接口与原理
一:API涉及的文件Socket.c:该文件封装了底层接口,对上层提供了一个类似于伯克利形式的接口供应用层调用。当前的封装还是比较简单的,一些选项并没有实现,而只是提供了实现的框架。Api_lib.c:该文件提供了本协议栈的应用接口,应用程序可以直接调用这些接口完成具体的功能,这些接口都是需要在应用任务环境中运行的。调用该文件中提供的接口的好处就是效率的提高,避免了数据的再次复制,但是不足之处就是需要对这些接口提供的功能比较熟悉,因为它们都是依赖于特定的实现的。Api_msg.c:该文件中所.原创 2021-02-11 11:34:46 · 4224 阅读 · 0 评论