1.前言 本文是对LwIP Application Developers Manual的翻译 lwIP是模块化的并支持广泛的协议,这些大部分协议可以被裁减从而减小代码的尺寸 2.协议概览 链路层和网络层协议 ARP(地址解析协议),一个链路层协议,该协议常用于将原始的硬件地址(比如MAC地址)转换成IP地址. IPv4,在网络层协议中占主要地位 IPv6,IPv4的替代者,该协议将IP地址拓展到了128位. ICMP(网际控制报文协议),一个IP的控制协议 IGMP(网际组管理协议),一个管理I…
1.前言 本文主要是对LwIP Application Developers Manual的翻译 2.读者(应用开发手册的读者) 谁适合读这份手册 网络应用的开发者 想了解lwIP的网络应用开发者 阅读前需要了解的知识 熟悉 C ANSI的编程.熟悉TCP/IP的一般知识 阅读前需要阅读什么 若要阅读lwIP Platform Developers Manual或lwIP Developers Manual请先阅读本手册 3.lwIP的介绍 3.1 提出lwIP的原因 在最近几年,人们对计算机的…
1.前言 lwIP的内核并不是线程安全的.如果我们必须在多线程环境里使用lwIP,那么我们必须使用“upper”API层的函数(netconn或sockets).当使用raw API时,你需要自己保护你的内核. 2.并发处理 (1)Sockets通常来说并不能在多个应用线程中使用(在udp/raw netconn,sendto/recv可以实现). (2)一些上层操作的并发调用必须被应用层直接处理,如:socket,bind,connect,setsockopt和close. 有些情况必须要lw…
1.前言 你已经编译lwIP协议栈在你的目标平台上,并且网络驱动正常工作.你可以ping你的设备. 干得好,为你感到骄傲.虽然一个设备可以响应ping,但并不能算一个完整的应用. 现在你可以通过网络接口来实际做点东西.从哪里开始呢?你可以通过他人的例子来学习lwIP应用编程. 你可以在如下的地方找到一些应用例程,该例程被参与者所维护. lwIP source code repository site. 应用工程如下所示: Character Generator application (char…
1.前言 最近有一些讨论关于lwIP如何在单机的环境(比如,没有一个多线程的操作系统)使用. 本文的目的就是描述lwIP如何在无多线程操作系统或有多线程操作系统环境中运行 2.lwIP单线程内核 2.1 lwIP内核包含的组件 lwIP的内核包括了IP,ICMP,UDP协议的实现,还包括了对缓存和内存的管理. 当lwIP在一个单线程(不是操作系统)环境中运行只有内核组件是必须的. 你可以加入并运行DHCP.DNS,但它们并不是必须的.你编译代码可以只支持UDP或TCP. 2.2 lwIP内核接口…
1.前言 lwIP提供一个基本的DNS客户端(1.3.0后引进),通过使用DNS(Domain Name System)协议来允许应用程序解决主机名到地址的转换. 在文件lwipopts.h里面定义LWIP_DNS的值为非零值可以使能DNS. 如果DHCP与lwIP DNS客户端一起工作,那么DNS将会自动被配置使用提供的DNS服务器(如果DHCP提供一个). 2.Application DNS requests with Raw/Native API Raw API应用可以使用dns_geth…
1.前言 本文主要讲述高层协议,包括DHCP 2.DHCP 2.1 从应用的角度看DHCP 你必须确保在编译和链接时使能DHCP,可通过在文件lwipopts.h里面定义LWIP_DHCP选项,该选项会加入一个dhcp struct的指针到netif结构体里面. dhcp_start()将会分配一个dhcp 结构体.另外,LWIP_UDP一定要设置为非零的数值,由于DHCP是一个运行在UDP上的协议. 使用DHCP的设置很简单,你只要在初始化完接口后调用函数 dhcp_start() 为了能更好…
1.前言 本文主要讲解传输层协议UDP TCP 2.UDP 2.1 UDP from an application perspective 2.2 UDP support history in lwIP 2.3 External references RFC 768 User Datagram Protocol RFC 3828 Lightweight User Datagram Protocol. 3.TCP 3.1 TCP from an application perspective 3.…
1.前言 本文主要讲述链路层和网络层的协议IPV6,ICMP 2.IPV6 2.1 IPV6特性 IPv6是IPv4的更新.其最显著的差别在于地址空间由32位转换成128位 2.2 从应用的角度看IPv6 lwIP正在加入IPv6,直到版本为1.4.x才可以使用IPv4或IPv6,但是并不能同时使用IPv4和IPv6. 双协议栈的代码已经在当前的开发版本中(可以通过git下载).能同时支持双协议栈的代码版本号将会为1.5.0.一些人认为LwIP的IPv6已经非常稳定了. 开发版本可以从下面的地址…
1.前言 2.LwIP makefiles With minimal features C_SOURCES = \ src/api/err.c \ src/core/init.c \ src/core/mem.c \ src/core/memp.c \ src/core/netif.c \ src/core/pbuf.c \ src/core/stats.c \ src/core/udp.c \ src/core/ipv4/icmp.c \ src/core/ipv4/inet.c \ src/…