最后更新:2022-03-25 11:08
目录
一、协议简介
二. 协定间协定的分拆和密封
三、LWIP简介
四. 关于Lwip文件的说明
四.1) 从哪里获得 LWIP 源文件?
四.2) LWIP 文件说明
lwip目录
src目录
core目录
4(3) 审查Lwip的解释性材料。
五. 三个LWIP方案拟订接口
5.1) RAW/Callback API
5.2)NETCONN API
5.3)SOCKET API
互联网的本质是数字通信,任何数字通信都不得与通信协议的创建分开,任何通信设备只能通过以商定、一致的方式密封和拆分数据,在接收方和发送方之间进行互动,TCP/IP是指互联网通信所使用的协议的收集。
TCP/IP是一个由协议组成的共同体,是一个多层次的协议体系,每个体系都发挥不同的作用,由若干协议履行,这些协议采用次级协议提供的服务,例如HTTP、FTP、MQTT等应用层面的协议,是开发商中最著名的协议。
TCP/IP是一个庞大的谈判者网络。是众多协议的结合,这些协定可根据其职能分为几个层次。有些协定依赖于其他协定的履行。这种依赖性可用来分层协议。下级协议支持上级协议。它是执行高级别协定的基础。
TCP/IP的分层如下图所示:

物理层(PHY)规定信号传输所需的物理水平和中度特性。
MAC:界定了在何种情况下网页卡可以接受数据包。最流行的方法是使用因特网卡的MAC地址。发件人使用收件人的网页卡,将MAC地址信息插入所需数据框架的开头部分。接收人只能监测他或她自己的MAC地址。将接收和分析这些信息。
网络一级说明应如何界定东道方的网络地址,如何将其翻译到网络地址和停战委员会地址以及ARP协议之间。
网络层负责在主机之间传输数据包。此外,每个东道主还可能运行若干网络应用程序。传输层的作用是确定软件包属于谁的应用。传输层负责数据包的端对端传输。另外,在传输过程中,数据包可能丢失、破碎或重复。该网络没有处理这些错误的系统。传输层有能力解决这些问题。如TCP协议。
分析:数据传输是通过在应用水平以下完成的工作完成的,而应用水平以下决定了如何应用和处理数据,并且由于互联网上传送的数据丰富多样,以及应用的多样性,有若干应用水平协议。
当用户发送数据时,数据将一次加密一个层 。第一步是将数据从应用层传送到传输层。这是应用层的操作,然后通过传输层将传输层的初始组成部分添加到数据中。然后降低到网络水平。随着网络的顶端,数据中加入同样的网络水平。然后将数据发送到链层。数据的最后密封将在链层上进行。这是数据之前的链条的一部分, 这是链条的初始部分, 和链条的初始部分, 在数据之前的链条的部分, 这是链条的初始部分。信息随后将发送到因特网卡上。最后,净卡将数据转换为有形链级信号。这就是如何将信息传送到互联网上。数据传输程序与TCP/IP层协议的封存数据程序相似。如下图所示:

这是在设备网络卡与数据包一起收到时获得数据的唯一手段。它将放置在因特网卡的接收缓冲地带。为了通知TCP/IP内核,TCP/IP内核随后开始运行。数据将从接收缓冲区提取。包件中的第一个信息已经逐层检查。最后,数据被发送到一份申请中。接收数据的行为与传输数据的过程截然相反。TCP/IP层协议可用于总结数据解释过程。
lwip (轻重 IP), TCP/IP 协议是轻量级的 。瑞典计算机科学院的Adam Dunkels创建了这个小的开放源码TCP/IP网页。建立LWIP结构是为了获得一个资源很少使用、更全面的TCP/IP兵营。重点是降低记录和档案管理利用率,同时保持TCP协议的基本功能。LWIP也可以转移到操作系统。该系统在没有系统的情况下也可以运作。
以下是LWIP的主要特性:
一. 支持ARP协议(拆分以太网地址的机制)。
2. 支持ICCMP(控制报告协议)网络调节和维护协议。
三. 支持IGMP(因特网集团管理议定书),使接收大量数据包成为可能。
四.UDP议定书(用户数据报告议定书)支助
支持TCP协议(传输控制协议)是第5号。
第六、公私伙伴关系议定书(点对点通信议定书)和方案支助
支持 DNS 域名解析为 7 号 。
支持DHCP协议,允许对IP地址进行动态分配。
9.IP协议支持,包括IPv4和IPv6,以及IP分区和重新组装特征和通过多网络接口传送的数据集。
支持SNMP议定书(简单网络管理议定书)是第10号。
11. 支持AUTOIP,它允许自动设置IP地址。
12. 单独安装内部回声接口(Raw API),以提高程序速度。
十三. 提供备用的Socket API 和 NetCONN API (多线配置)。
http://savannah.nongnu.org/projects/lwip/
Thoffers网页是LWIP的简短介绍,有几条连接,我们只着重其中两条。

访问网页时,请点击项目主页。该页面作为 lwip 的网站描述文件。该网站拥有大量有关Lwip的信息。这包括使用LWIP、数据副本、系统启动操作等等。下图显示以下点击次数:

单击下载区域按钮。会得到一个网页,通过这个网页,所有LWIP版本的源包和调试包(有些是LWIP移植和应用演示)均可下载。即应用实例),对于每个红色字体,请单击资源链接。浏览器将启动 FTP 连接 。协助您下载您需要的文件到您的 PC 中。以下是下载区域 :

还有Sig的后缀, 这是一个数字签名, 你可以忽略它。
打开 lwip2. 1。 三个文件夹在下面的图表中描述 。

该目录下的内容为:
1 变地学:本文件记录版本升级期间源代码的更改。
2 COPYING:公开源码软件的许可证LwIP有文件记录。一个软件开源,这并不意味着你可以永远使用它必须根据特定准则加以使用。这是规矩整个家族都可以在笔记本里打开这个 COPYING文件 来弄清楚它是怎么回事开放源码软件有几种类型。LwIP是根据BSD许可证获得执照的。LwIP是极其开放的来源。它几乎可以无穷无尽地使用。
3 FILES: 文件包含当前目录的目录信息 。
本文件是LwIP的基本介绍。
5 UPGRADING:每个大版本的文档记录 LwIP 更改 。LwIP使用和移植对用户的影响。最新消息的所谓巨大版本如下: 1. 3.x1. 四.x.小版本更新,照片来自Flickr用户pic. com1-2. 图片来自Flickr用户pic. com2-2. 图片来自Flickr用户pic.这一程序仅包括纠正错误和增强性能。用户行为不会受到任何影响。用户只需用新版本的文件替换原工程目录的旧 LwIP 相关版本 。重新编译, 就能直接使用。
6 doc:文件夹中含有某些与LwIP有关的材料,可以用作应用和移植LwIP的指南。 但是,用普通语言来说,这些材料是破碎、支离破碎和难以理解的,这并不重要。
7 测试: 文件夹包含用于评价 LwIP 内核性能的源代码 。与LwIP源代码一起添加到项目中,并共同构建它们。他们所服务的职能指:LwIP内核性能有若干迹象。这一核心业绩评价职能,它只能供高技能人员使用。
8 src: 此文件夹包含最重要的 LwIP 源文件, 详情见下文 。
如下图所示,打开 src 文件夹:

该目录下的内容为:
1 api: 此文件夹对 NETCONN API 和 Socket API 源文件的解调源文件, 只能在操作系统环境中建立 。
2 Apps: 文件夹包含应用程序的源文件, 包括 httpd、 mqtt、 tftp、 sntp、 snmp 等通用程序 。
3 核心 : 文件夹包括 LwIP 的内核源文件, 将会进行深度讨论 。
4 包括: 此文件夹包含所有 LwIP 模块的页眉文件 。
5 netif:该文件夹载有与网络卡移植有关的文件,向我们提供了我们可立即使用的模板。
Lwip核心由若干模块组成。存储管理模块、数据包管理模块、网页卡管理模块、网页卡接口模块、基本功能类模块和API模块属于TCP/IP阵列中的模块。每个模块由多个源文件和信头文件组成。某些函数、宏和数据类型通过信头文件提供。允许其他模块容易访问此模块的能力 。此外,构成每个模块的文档按包含目录分类。另一方面,源文件则按 pi、 应用程序、 核心 和 Netif 目录中的类型排列。
程序的核心是一个 LWIIP 内核源文件, 显示以下图表 :

现在,一个接一个地, 下面是我们要做的 这些源文件:
ipv4: 此文件夹包含 IPv4 模块的源代码 。它完成了IPv4协议下的不同数据集活动。ipv4 子目录中的若干文件与IP协议无关。DHCP、ARP、IPCMP和IGMP是可能受IP协议影响的协议的原始文件。
ipv6: 此文件夹包含 IPv6 模块的源代码 。它已完成了IPV6协定所要求的不同数据集程序。IPv6 子目录中的若干文件与 IP 协议无关 。尽管如此,将受知识产权协议影响的协议的来源如下:DHCP、ARP、ICCMP和IGMP都包括在内。
我不确定您在说什么, Altcp.C, altcp_alloc, altcp_tcp.c。 文件是应用程序的分层 TCP 连接 API, 由 TCPIP 线索使用, 是一个抽象的层, 复制了应用程序的 tcp 响应 API 。
我不知道你在说什么 亲爱的 报纸上写了一些基本功能类别例如,转换主机和网络字节序列,搜索和比较字符串,将整数值转换成字符串等等。LWIP核心中的若干模块称这些例行程序。在包含目录中发现了缺陷。 h 文件做了公开宣布。 c 函数已实现,同时定义了许多宏,我不知道我会做什么, 但我不会做它。例如,最大值、最低值、价值长度等等。
我不知道你在说什么,但 Dns.c 文件执行域名解析功能。有了它,如果您可以访问服务器域名, 您可以使用服务器域名 。获取服务器的 IP 地址 。我们经常想起简单的服务器域名,而不是服务器IP地址。比如,"ww",我不知道你在说什么,亲爱的" 这是一个域名。"通过dns功能,使用服务器域名, 我们可能获得 IP 地址 。这大大改善了用户的可获取性。
我不确定,Inet_chksum.c 报价请求书给出了LWIP的核查,这些核查必须在实施IP、UDP和TCP协议时计算。
我不知道你什么意思, Init. c 文件测试了 LWIIP 用户宏设置,以这种方式设置它是不正确和不合逻辑的。使用编译器的 #error 和 #waring 方法来配制 。另外,我不知道你在说什么, Init. c 这个文件定义了 lwip_init 启动功能 。此方法将 lwip 模块逐个初始化 。
我不知道你在说什么 ip.c File 执行IP协议相关活动 但只在 ipv4 和 ipv6 目录中进行
我不知道你们在说什么,Mem.c文件 实现了一种动态的记忆池管理技术 允许灵活的记忆应用 并释放Lwip内核模块
对不起,Memps.c文件建立了静态内存反应堆管理技术, 能够快速应用和释放Lwip核心模块的内存。
我不知道你在忙什么 Netif. (c) 文件使网页卡能够运作例如,因特网卡登记和删除、因特网卡激活和停用、因特网卡IP地址配置等。lwip 的 Netif 模块是由 Netif 文件在 Netif 中的公开使用构成的, 并包含文件夹 。这是网络卡的简化版本它简化了LWIP核心具有不同特点的若干实物网卡的管理。
对不起, pbuf.c 文件对 lwip 网络数据包进行了不同的操作。 在 liwip 内核中以 pubf 结构的形式存在基于网络的数据包, 提高了 lwip 调节包的处理性能, 以及各层之间数据包传输的效率 。
抱歉, Raw.c) 完成了传输层协议的框架,在此基础上,我们可以更新和增加代码。为了创建独特的传输层协议同意使用UDP/TCP作为传输层。但有时,较低级别的网络开发商将不如联合民主党那么可靠。相反,假设TCP是可靠的,但是,这需要时间和大量的记忆。它们必须受需求驱动。平衡利弊,其独特的传输层协议得到界定。
我不知道你们在说什么 STAT.c文档执行Lwip内核的统计功能 使用户能够监测Lwip网络数据包的实时处理
音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调、音调。
对不起,tcp。 对不起,ctcp_in。 对不起,c和tcp_out。 c 论文符合TCP协议。其中包括TCP连接操作、TCP数据包输入输出操作、TCP定时活性连接操作、TCP数据包输入输出操作和TCP定时器。这些组成 LWIP 的 TCP 模块, 以及包含目录中名为 tcp 的页眉文件 。
我不知道,超时,c 定义LWIP内核的超时机制。使用费时的处理程序,必须实现LWIP核心中的许多模块。其中包括ARP清单时间统计、IP分报告重新加载、不同的TCP计时器,以及实现各种应用级别协议所需的耗时处理。
我不知道你们在讨论什么, Udp.c 文件完成了UDP协议, 包括UDP连接的操作和UDP数据包的操作。
我们通常点击左侧的“模块”,然后查看模块的相关说明和示例,如下图所示:

用户经常使用其他 API 函数, 可在“ 模式” 中找到 。

在“应用程序”中也有关于应用水平的说明,在“数据结构”中也有关于适用数据结构的说明。
Lwip提供三个编程界面:RAW/Callback API、NetCONN API和SOCKET API。 它们的使用简单性从左向右上升,但执行效率下降。
RAW/Callback API是指在用C语言创建各种通信协议时所使用的内部缠绕的API,对于从未参与回声编程的个人来说,可能很难理解。
RAW/Callback API是LWIIP的一个关键要素。在一个没有操作系统的裸露环境中,这个API是创造它的唯一方法。同时,API可用于操作系统环境。以下是对“返回”概念的基本解释。您新建了 TCP 或 UDP 连接 。你应该等到它得到数据后再处理它。下一步必须将数据处理程序转换成函数。此函数的指针随后在 LWIP 核心中注册。当需要数据时,LWIP内核确定连接正在接收数据。如果接收到数据,注册的函数将首次被内核调用 。它被称为回调。此注册函数被称为“ echo 函数 ” 。这种回响提供了理想的商业逻辑。在这个函数中,您可自由处理获得的数据。您也可以发送任何类型的数据 。因此,这个回声函数是你的程序。
在回调编程中,LWIP核心使用一个基本功能呼叫向应用程序传输数据。这是一个在时间和空间两方面都非常有用的资源。每个回声函数只是一个C函数。TCP/IP内核中称此函数。每个回声函数都作为参数提供给当前的 TCP 或 UDP 连接。而且,为了维持这个方案的具体状态您可以使用回声函数发送特定状态 。这一界定的国家不受TCP/IP军营的影响。
在一个有操作系统的系统中,当RAW/Callback API被使用时,用户的程序包含在内核代码中,作为回声函数。内核程序和用户应用程序将在同一线索中运行 。这节省了特派团间通信和交换活动的费用。
简言之,RAW/Callback API有两个优势:
(1) 可以在没有操作系统的情况下使用。
(2) 在操作系统环境中使用时,与其他两个API相比,它可以提高程序效率,节省记忆费用。
RW/Callback API的好处是巨大的,但缺点也是巨大的。
(1) 根据回声功能构建应用程序的想法过于复杂,利用回声功能创建复杂的商业软件耗时且代码不易辨认。
(2) 在操作系统方面,应用程序和内核代码都在同一线索中运行。虽然在特派团间通信和调换职责上节省资金是可以想象的,但在调换任务上节省资金是不可能的,但在特派团间通信和调换职责上节省资金是不可能的,但在调换任务上却不可能节省资金。但是相应的,应用实施将对内核方案的执行施加限制。方案之间也有限制。在申请执行过程中,启动内核软件将很困难。这可能影响处理基于网络的数据集的效率。如果申请完成时间过长,恰好有很多数据包 到达。因为内核密码很久没更新了网络卡获得一个缓存数据包,这些数据包会随着时间的流逝而积累。由于它们已装入,一些数据包很可能在当时被删除。而造成丢包的现象,
通过使用NetCONN API或Socket API,可在操作系统环境中创建网络应用程序。
NETCONN API以操作系统的IPC机制(即信号量和邮箱机制)为基础。其目的是为LWIP内部核代码和网络应用建立一个独特的线索。如此一来,LWIP程序仅包括TCP/IP包装和拆散数据集。我们不必用应用层处理数据该系统对网络数据包的处理现在大大提高了效率。
前面提到,RW/Callback API的使用对内核程序和网络应用以及各种网络应用施加限制。如果使用 NETCONN API 或 Socket API, 则此限制将被删除 。在操作系统环境中,LWIP核心将作为一个单独线索实现。它被称为tcpip_thread。使用 NetCONN API 或 Socket API 的程序正在几条线索中运行 。我们可以根据特派团的重要性来完成这个任务。这是一个如何给这些线索分配各种权重的问题。为确保按期完成关键活动,该表详细解释了优先派任原则。

NETCONN API利用了操作系统的IPC技术。網絡连线已被涡轮充电。与操作文件一样,用户可以控制网络连接(打开/关闭、读/写数据)。然而,NETCONN API并不像API那样容易用于操纵文件。关于Netconn API的阅读数据,API,向用户提供具体的数据结构(网布),用户必须熟悉内核的网布和网布结构,以便有效地加以利用。我们会再看下去的NETCONN API使用这一概念。为了防止数据包在不同项目和应用之间重复使用,这降低了进程的效率。当然,如果用户在提供数据时效率不高,他(她)将能够使用这些数据。网布中的数据也可以传送到数组中。然后我们去研究这个阵列
简言之,NETCOONN API的利弊如下:
(1) NETCONN API与RAW/Callback API相比,简化了编程。使使用者能够以使用操作文件的同样方式使用网络连接。但是,数据包在内核和网络进程之间发送。必须利用信号数量和操作系统的信箱机制来完成这项工作。它需要更多的时间和记忆。此外,还列入了更换工作的时间。效率低。
(2) NETCONN API与Socket API不同,它防止在内核和网络应用之间复制数据。数据传输的效率有所提高。但是,NETCONN API比Sockst API更难使用。他希望用户了解LWIP核心使用的数据格式。
套接 套接 套接 套接 套接 套接 套接 套接 套接 套接 套接 套接 套接 套接 套接这是一个高级网络抽象。使使用者能够使用网络连接,仿佛它是一个操作文件。他十分易用,Socket现在是网络编程的行业标准。在若干操作系统中,目前正在使用单独的TCP/IP议定书。然而,只要它达到索克特界面,因此,Socket的网络应用可能在其中运作。因此,Socket的网络应用非常便携。
每个系统都有自己的套接字界面。WinSock支持Windows, 但UNIX/Linux则支持BSD Socket, 尽管两者的审美相互冲突, 但情况并非如此。但是大同小异,您可以使用它们将网络应用程序从不同的操作机器迁移到使用 LWIIP 的系统 。需要注意。
这篇文章是Netconn API报导内容的一部分。Socket API 更方便用户使用。Socket API 的软件很容易理解。便于维护,它还很容易适应各种操作系统。内部核程序与应用程序之间的数据通过Socket API复制。因此,数据传输的效率低于使用NetCONN API的效率。另外,Iwip的Socket API建在Netconn API上。因此,它的效率低于前者。
本文由 在线网速测试 整理编辑,转载请注明出处。