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.前言 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.前言 本文是对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.前言 本文主要讲述链路层和网络层的几种协议:ARP,ipv4 2. ARP 2.1 ARP的主要应用 ARP的主要应用是在与互联网相连的以太网网络层,该层需要一些机制将MAC地址(该地址主要由制造商分发并固定在硬件里)转换成IP地址(该地址主要取决于设备接入的网络) 2.2 从应用的角度来看待ARP 一个支持ARP的网络接口会使 etharp_output 处理所有即将发送的数据包并设置与它相关的netif结构体里面的一个标志来使能“无理由(gratuitous)ARP”(“Writing …
1.前言 lwIP提供3种应用编程接口来跟TCP/IP内核通信,如下所示: 低水平的内核/回调或raw API 2个高水平序列API: 1) netconn API 2) socket API(为了兼容POSIX/BSD-socket) 2.选择合适的应用编程接口 序列API 序列API提供了一种普通.有序的程序来使用lwIP内核.它与BSD的socket API非常相似.该序列API的模型是建立在阻塞的打开-读-写-关闭(open-read-write-close)模式上. 由于TCP/IP栈…
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.前言 lwIP的内核并不是线程安全的.如果我们必须在多线程环境里使用lwIP,那么我们必须使用“upper”API层的函数(netconn或sockets).当使用raw API时,你需要自己保护你的内核. 2.并发处理 (1)Sockets通常来说并不能在多个应用线程中使用(在udp/raw netconn,sendto/recv可以实现). (2)一些上层操作的并发调用必须被应用层直接处理,如:socket,bind,connect,setsockopt和close. 有些情况必须要lw…
1.前言 2.Initialization for simple lwIP 查看doc/rawapi.txt来获得更多官方信息 #if NO_SYS /* Network interface variables */ struct ip_addr ipaddr, netmask, gw; struct netif netif; /* Set network address variables */ IP4_ADDR(&gw, ,,,); IP4_ADDR(&ipaddr, ,,,); IP…
1.前言 最近有一些讨论关于lwIP如何在单机的环境(比如,没有一个多线程的操作系统)使用. 本文的目的就是描述lwIP如何在无多线程操作系统或有多线程操作系统环境中运行 2.lwIP单线程内核 2.1 lwIP内核包含的组件 lwIP的内核包括了IP,ICMP,UDP协议的实现,还包括了对缓存和内存的管理. 当lwIP在一个单线程(不是操作系统)环境中运行只有内核组件是必须的. 你可以加入并运行DHCP.DNS,但它们并不是必须的.你编译代码可以只支持UDP或TCP. 2.2 lwIP内核接口…