LWIP协议栈的分析和设计

合集下载

LWIP协议栈详解

LWIP协议栈详解

LWIP协议栈详解LWIP(Lightweight IP)是一个轻量级的开源 TCP/IP 协议栈,旨在为嵌入式系统提供网络连接功能。

它非常适合资源受限的系统,如单片机和小型处理器,因为它非常小巧且具有很好的可移植性。

首先,让我们来看看LWIP的核心协议。

LWIP提供了IP协议、ARP协议、ICMP协议和UDP协议的实现。

IP协议层负责数据包的路由和分段,ARP协议层负责解析IP地址和MAC地址的映射,ICMP协议用于网络探测和错误报告,UDP协议提供简单的不可靠数据传输。

除了核心协议,LWIP还提供了一些可选的协议功能,如TCP协议和DHCP协议的实现。

TCP协议提供了可靠的数据传输,而DHCP协议用于自动获取IP地址。

LWIP的另一个重要特性是它的可移植性。

LWIP设计了一个适配层,将操作系统相关的功能与核心协议分离开来。

适配层提供了一组标准的API,操作系统只需要实现这些API就可以使用LWIP协议栈。

LWIP支持的平台非常广泛,包括常见的操作系统如Windows、Linux和FreeRTOS,以及嵌入式系统如ARM Cortex-M和Microchip PIC等。

最后,让我们来看看LWIP的应用协议扩展能力。

应用协议可以通过注册回调函数来扩展LWIP的功能。

例如,应用程序可以注册一个回调函数来处理HTTP请求,或者注册一个回调函数来处理自定义的应用层数据。

这种扩展机制使得LWIP非常灵活,可以满足各种应用需求。

总结起来,LWIP是一个轻量级的开源TCP/IP协议栈,适用于资源受限的嵌入式系统。

它将TCP/IP协议栈分为核心协议和应用协议两层,提供了IP、ARP、ICMP、UDP等核心协议的实现,并通过可移植的适配层支持各种平台。

此外,LWIP还提供了应用协议扩展的能力,通过注册回调函数来扩展功能。

无论是大型操作系统还是小型嵌入式系统,LWIP都是一个很好的选择。

TCPIP协议栈LwIP的设计与实现(可编辑)

TCPIP协议栈LwIP的设计与实现(可编辑)

TCPIP协议栈LwIP的设计与实现TCP/IP 协议栈 LwIP 的设计与实现Design and Implementation of the LwIPTCP/IP Stack[瑞典]Adam Dunkels著************翻译焦海波marsstory99@hotmailSwedish Institute of Computer ScienceFebruary 20, 2001TCP/IP 协议栈 LwIP 的设计与实现 - 1 -摘要LwIP 是 TCP/IP 协议栈的一个实现。

它的目的是减少内存使用率和代码大小,使 LwIP 适用于资源受限系统比如嵌入式系统。

为了减少处理和内存需求,LwIP 使用不需要任何数据复制的经过裁剪的 API。

本文描述了 LwIP 的设计与实现。

描述了在协议栈实现中以及像内存与缓冲管理这样的子系统中使用的算法和数据结构。

本文还包括 LwIP 的参考手册以及使用LwIP 的代码例子。

1 简介昀近几年,人们对计算机互联以及计算机无线网络支撑设备的兴趣一直不断的增长。

计算机逐渐与日常使用的设备无缝集成在了一起,并且价格一直在下降。

与此同时,无线网络技术比如蓝牙(Bluetooth)[HNI+98]及 IEEE 802.11b WLAN[BIG+97]正逐渐的出现在人们的视野中。

这些新技术的出现,在许多诸如卫生保健、安全保密、运输及工业处理等领域提供了一个非常诱人的应用前景。

一些像传感器一类的轻便设备可以连入互联网,以便随时随地进行监控。

在过去的近十年的时间里,互联网技术被证明拥有足够的灵活性以适应不断变化的网络环境。

从原始的 ARPNET 一类的低速网络发展起来的互联网,发展到今天,在带宽和误码率方面拥有巨大差异的光纤连接技术已经使互联网实现了巨大的跨越。

相当多的以互联网为基础的应用技术被开发出来。

因此,未来的无线网络??使用已经存在的互联网技术成为人们的首选。

LWIP协议栈架构与设计解析

LWIP协议栈架构与设计解析

LWIP协议栈及接口提取Version 1.02012/06/20版本历史目录一、LWIP介绍 (5)二、LWIP源码分析 (7)1.LWIP协议栈的架构 (7)2.各个文件夹介绍 (9)3.模块及源文件介绍 (13)三、LWIP协议栈处理数据流程 (26)四、接口提取 (28)一、LWIP介绍首先说明一下,这篇文档的主要目的是提取网络发送和接收数据的函数接口。

然后用我们自己的驱动网卡的接口函数替代程序中的接口。

如果对LWIP协议栈本身没什么兴趣的,可以跳过第一、二、三章,直接阅读第四章,使用我们的接口代替第四章的接口就行了。

写第一、二、三章的主要目的是为了方便理解数据的发送和接收在LWIP协议栈中是如何进行处理的。

这便于我们理解提取出来的接口。

LWIP是瑞典计算机科学院开发的一套用于嵌入式系统的开放源代码的轻量级的TCP/IP协议栈。

传统的,或者说是典型的TCP/IP协议族的设计都是按照分层的思想来设计的。

这样设计有个好处,就是每层相对于其他层独立,代码方便理解。

缺点就是,每层之间进行数据交互的时候必须要进行复制,而数据的复制是很耗时的,这就降低了实时性。

LWIP采用了一种不同的设计方式来实现TCP/IP协议族。

LWIP各层之间没有明显的界限,各层之间都可以访问到共享在内存中的数据。

因为各层都可以访问共享内存,所以这就避免了内存复制产生的性能损失。

但是并不是说LWIP就没有分层的概念了。

只不过LWIP各层都是逻辑意义上的层。

每个协议都以模块的形式被实现。

而这些模块就共同组成了LWIP整体。

下面一章将分析LWIP的源码,结合源码介绍这些模块。

了解各个协议是怎么通过模块被实现的。

其中这里最主要的是TCP协议模块的实现。

TCP协议在LWIP协议栈中占得比例最大,有将近一半的代码是专门用来实现TCP协议的。

所以重点会分析TCP 协议。

并且无线音频项目采用的也是TCP协议传输数据。

LWIP逻辑上被分为四个层:应用层,传输层,网络层和网络接口层。

基于ARM的LwIP协议栈研究与移植

基于ARM的LwIP协议栈研究与移植

LwIP(Lightweight IP)是一种专为嵌入式系统设计的轻量级TCP/IP协议。 它实现了TCP/IP协议栈的主要功能,包括IP、ICMP、IGMP、UDP、TCP等协议, 适用于内存受限的环境。LwIP具有可移植性、可扩展性、易用性等特点,因此 在嵌入式系统中得到了广泛应用。
三、基于FreeRTOS的LwIP移植
5、调试与测试:完成移植后,需要对系统进行调试和测试,确保网络连接的 稳定性和可靠性。这包括对网络接口的物理连接、软件配置、数据传输等进行 测试。
四、优化策略
为了提高基于ARM的LwIP协议栈的性能和效率,以下优化策略可以参考:
1、内存管理:由于嵌入式系统的内存资源有限,因此需要合理地管理内存。 可以采用内存池技术,预先分配一定数量的内存块,以减少内存碎片和内存分 配的时间开销。
一、实时操作系统FreeRTOS
FreeRTOS是一个开源的、可扩展的、适用于各种不同平台(包括ARM CortexM系列、AVR、PIC32等)的实时操作系统。FreeRTOS内核提供多任务调度、任 务优先级管理、中断处理等功能,使得嵌入式系统可以更加高效、可靠地进行 任务管理和资源分配。
二、LwIP协议
4、减少系统资源占用
在嵌入式系统中,资源通常是有限的。因此,为了优化系统的性能和可靠性, 可以减少系统资源占用的比例。例如,在使用任务堆栈时,可以使用较小的堆 栈大小来避免过多的内存占用;在使用中断处理函数时,可以尽量减少中断处 理函数的执行时间,避免长时间占用CPU资源。
五、结论
本次演示介绍了基于实时操作系统FreeRTOS的LwIP协议的移植和优化方法。 通过使用内存池技术、异步通信技术、优化协议栈处理函数以及减少系统资源 占用等优化方法,可以提高系统的性能和可靠性。在嵌入式系统中,基于 FreeRTOS的LwIP协议的移植和优化具有重要的意义和应用价值。

基于LwIP的嵌入式以太网系统的设计与实现

基于LwIP的嵌入式以太网系统的设计与实现

基于LwIP的嵌入式以太网系统的设计与实现近几年来,随着嵌入式系统的不断发展和普及,基于LwIP的嵌入式以太网系统的设计与实现日益受到关注。

本文将对这方面的内容进行探讨。

LwIP是一个轻量级的TCP/IP协议栈,它可以将TCP/IP协议栈移植到嵌入式系统中,使嵌入式系统可以与其他计算机进行通信,实现网络互联。

在实现基于LwIP的嵌入式以太网系统时,需要对以下几个方面进行设计与实现:首先,要进行网络驱动程序的开发。

网络驱动程序是嵌入式以太网系统与硬件之间的接口程序,它负责将数据从硬件读取到系统内存中,或将数据从系统内存传输到硬件中发送。

开发驱动程序时需要了解硬件的详细信息和寄存器的使用方法,同样也需要根据LwIP的特点进行适当的优化。

以太网驱动程序开发中需要注意对底层协议的支持,因为以太网是数据链路层的一种实现方式。

其次,需要实现TCP/IP协议栈。

协议栈是网络通信过程中维护连接、传输数据、确保可靠性的核心算法,也是LwIP的核心功能。

根据协议栈中的不同层次,LwIP由链路层、网络层、传输层和应用层四层协议组成。

详细的实现步骤包括建立数据结构,定义接口函数,实现各个协议的处理函数等。

接着,还需要实现应用程序。

应用程序是基于协议栈,为用户提供数据服务的高层接口程序,实现诸如网络配置、数据传输和数据接收等功能。

最后,进行系统综合测试和调试。

在系统开发的过程中,进行测试和调试是很必要的步骤。

需要针对不同的操作系统进行测试,并根据测试结果进行问题分析和解决。

总的来说,基于LwIP的嵌入式以太网系统设计与实现并不容易,需要深入理解LwIP的实现原理、网络性能优化的技术、硬件设备的详细信息和操作系统的细节。

然而,这种设计实现还是具有很多优势的,能够大大提高嵌入式系统与外界互联的能力,增强系统的可靠性和适用性。

lwip协议栈源码详解

lwip协议栈源码详解

lwip协议栈源码详解《LWIP协议栈源码详解》协议书甲方(以下简称"LWIP方"):职务:律师地址:XXX联系电话:XXX邮箱:XXX乙方(以下简称"使用方"):姓名/单位名称:XXX地址:XXX联系电话:XXX邮箱:XXX一、协议目的:LWIP方向使用方提供供代码使用的途径。

双方在平等、自愿、公平的基础上,协商并达成协议,共同保护双方利益,为推进协议栈的使用和发展,促进LWIP技术的普及和提高,达成以下协议:二、使用授权:1. LWIP方免费向使用方提供LWIP协议栈源码,使用方有权利在其自身的项目中使用LWIP技术。

2. 使用方对LWIP协议栈源码的使用应遵守相关法律法规和契约精神。

3. 使用方在使用LWIP协议栈源码时,须注明LWIP方的著作权声明,不得擅自修改、删除、遮挡、涂改、移动LWIP方的著作权声明。

4. 未得到LWIP方的书面授权批准,使用方不得将LWIP协议栈源码用于商业目的的销售、分销、出租、出借等行为。

三、权利和义务1. LWIP方有权对使用方进行规范化管理,监督其对LWIP协议栈源码的合法使用情况,并有权利要求使用方在使用LWIP协议栈源码后所开发的衍生产品中注明LWIP 方的著作权归属、著作权声明。

2. 使用方有权根据自身开发需求的需要,对LWIP协议栈源码进行修改、增补或裁减等操作,但应该严格遵守本协议中相关条款,在修改后的代码中完整保留著作权声明及本协议中的完整条款,在使用LWIP协议栈源码的基础上,开发相应应用程序。

3. 使用方在使用LWIP 协议栈源码时,应当保证其自主开发的应用程序,不侵犯他人的合法权益,不得在任何情况下利用LWIP协议栈源码和开发的应用程序从事非法活动,包括但不限于利用网络发送垃圾邮件、病毒等的行为。

4. 若发现使用方存在侵犯LWIP方的权益或违反本协议的行为,LWIP方有权要求使用方停止使用LWIP 协议栈源码,并有权追究使用方的法律责任。

lwip协议栈源码详解

lwip协议栈源码详解

lwip协议栈源码详解lwIP(lightweight IP)是一个轻量级的开源TCP/IP协议栈,它被广泛应用于嵌入式系统中。

lwIP协议栈源码的详细解析对于理解其内部原理和实现机制具有重要意义。

本文将对lwIP协议栈源码进行详细解析,帮助读者深入了解lwIP的工作原理和实现细节。

lwIP协议栈源码主要包括核心协议栈、网络接口、协议实现、应用接口等部分。

核心协议栈包括IP、ICMP、UDP、TCP等协议的实现,网络接口包括以太网、WiFi等网络接口的驱动程序,协议实现包括DHCP、DNS、SNMP等协议的实现,应用接口包括Socket API等应用层接口的实现。

首先,我们来看核心协议栈的实现。

lwIP协议栈采用了事件驱动的设计,通过回调函数的方式处理网络事件。

在核心协议栈中,IP协议负责数据包的路由和转发,ICMP协议负责处理网络错误消息,UDP和TCP协议负责数据的传输和可靠性保证。

lwIP协议栈通过轻量级的设计和实现,使得其在资源有限的嵌入式系统中也能够高效运行。

其次,网络接口的实现也是lwIP协议栈源码中的重要部分。

网络接口的实现包括网络接口的初始化、数据包的发送和接收、中断处理等。

不同的网络接口需要实现相应的驱动程序,以适配不同的硬件平台。

lwIP协议栈提供了通用的网络接口API,使得用户可以方便地移植和扩展网络接口的实现。

另外,协议实现部分包括了一些常用的网络协议的实现,如DHCP协议用于动态获取IP地址、DNS协议用于域名解析、SNMP协议用于网络管理等。

这些协议的实现为嵌入式系统的网络连接和管理提供了重要支持。

最后,应用接口部分包括了Socket API的实现。

Socket API是应用程序与网络协议栈之间的接口,通过Socket API,应用程序可以方便地进行网络通信。

lwIP协议栈提供了对标准Socket API的支持,使得基于lwIP的应用程序可以方便地移植和开发。

总的来说,lwIP协议栈源码详解涉及了核心协议栈、网络接口、协议实现、应用接口等多个方面。

LWIP协议栈的分析和设计

LWIP协议栈的分析和设计

LWIP协议栈的分析和设计LWIP(轻量级IP)协议栈是一个基于嵌入式系统设计的开源TCP/IP协议栈,它具有高度的可移植性和灵活性。

在分析和设计LWIP协议栈时,我们需要考虑以下几个方面:架构设计、模块功能、代码实现等。

首先,LWIP协议栈的架构设计非常重要。

它采用了分层的设计结构,将整个协议栈分为多个模块,每个模块负责处理不同的功能。

整个架构可以分为三层:网络层、传输层和应用层。

网络层包括IP协议、ARP协议和ICMP协议等,主要负责网络地址分配、路由选择和数据包转发等功能。

传输层包括TCP协议和UDP协议等,主要负责可靠的数据传输和提供对应用层的接口。

应用层包括HTTP协议、FTP协议和DHCP协议等,主要负责各种应用程序的数据传输。

其次,每个模块的功能需要进行详细的分析。

例如,在网络层中,IP协议负责将数据包从源主机发送到目的主机。

它需要实现IP地址分配、路由选择和数据包转发等功能。

在传输层中,TCP协议负责提供可靠的数据传输。

它需要实现三次握手、拥塞控制和重传等机制。

在应用层中,HTTP协议负责进行超文本传输。

它需要实现URL解析、数据传输和页面呈现等功能。

然后,我们需要进行代码实现的设计。

在LWIP协议栈中,每个模块的代码都可以独立实现。

这样可以提高代码的可读性和可维护性。

同时,可以根据实际需求选择需要的模块进行组合。

例如,如果只需要实现一个简单的网络通信功能,可以只选择TCP/IP协议和网络驱动层进行实现,其他模块可以根据实际需求进行添加。

最后,我们需要考虑LWIP协议栈的可移植性和灵活性。

作为一个嵌入式系统的TCP/IP协议栈,它需要能够适应不同的硬件平台和操作系统。

因此,在设计代码时应该考虑到这一点,保持代码的可移植性。

同时,LWIP协议栈也应该具备灵活性,能够根据不同的应用场景进行配置和定制。

总结起来,对于LWIP协议栈的分析和设计,我们需要考虑架构设计、模块功能和代码实现等方面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

---《计算机网络与控制》论文LWIP协议栈的分析摘要近些年来,随着互联网和通讯技术的迅猛发展,除了计算机之外,大量的嵌入式设备也需求接入网络。

目前,互联网中使用的通讯协议基本是TCP/IP协议族,可运行于不同的网络上,本文研究的就是嵌入式TCP/IP协议栈LWIP。

文章首先分析了LWIP的整体结构和协议栈的实现,再介绍协议栈的内存管理,最后讲解协议栈应用程序接口。

关键词: 嵌入式系统;协议;LWIP;以太网AbstractWith the rapid development of internet and communication technology, Not only computers but also embeded equipments are need to connect networks. At present, the basic communication protocol using in internet is TCP/IP, it can run in different network. This paper analyses the Light-Weight TCP/IP. The process model of a protocol implementation and processing of every layer are described first, and then gives the detailed management of Buffer and memory. At last, a reference lwIP API is given.Key words: Embedded System, Protocol, Light weight TCP/IP,Ethernet引言近期互联网络硬件、软件的迅猛发展,使得网络用户呈指数增长,在使用计算机进行网络互联的同时,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备在逐步地走向网络化,以便共享网络中庞大的信息资源。

在电子设备日趋网络化的背景下,引人TCP/IP 协议栈,以支持嵌人式设备接人网络,成为嵌人式领域重要的研究方向。

本文分析一个轻量级的嵌入式系统的TCP/IP 协议栈-LWIP,LWIP是一个比较完整和可靠的TCP/IP协议栈,具有开源,易用,系统资源要求不高等优点。

一、LWIP概览LWIP是瑞典计算机科学院(Swedish Institute of Computer Science)开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。

LWIP的含义是Light Weight(轻型)IP协议。

LWIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少处理和内存需求,因为LWIP使用无顺数据复制并经裁剪的API,一般它只需要几十KB的RAM和40KB左右的ROM就可以运行。

同时LWIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。

这使LWIP协议栈适合在低端嵌入式系统中使用。

LWIP的特性如下:1.支持多网络接口下的IP转发;2.支持ICMP协议;3.支持主机和路由器进行多播的Internet组管理协议(IGMP);4.包括实验性扩展的UDP(用户数据报协议);5.包括阻塞控制,RTT估算和快速恢复和快速转发的TCP;6.提供专门的内部回调接口(raw API)用;7.支持DNS;8.支持SNMP;9.支持PPP;10.支持ARP;11.IP fragment的支持;12.支持DHCP协议,动态分配IP地址;13.可选择的Berkeley接口API(多线程情况下);LWIP的源代码从作者Adam Dunkels的官方网站上下载(网址为:www.sics.se/~adam/lwip/),版本号为1.3.1。

以下为解压后的目录结构。

LWIP的目录结构主要分为五个部分:1.Api\ : 应用程序接口文件,包括RAW,BSD以及正式提供的3种API。

2.Arch\ :与硬件和OS有关的文件,包括网络驱动,移植需要修改的文件。

3.Core\ :ICMP,IP,TCP,UDP协议的实现文件,以及一些辅助函数,LWIP实现的核心代码。

4.Include\ :LWIP的包括文件。

if\ :ARP协议和LWIP网络设备驱动程序的模板,用户为自己的网络接口设计的驱动程序应该与ethernetif.c中给出的驱动框架相同。

二、LwIP 的整体构架和进程模型:传统的TCP/IP协议栈的实现方法严格分层,一般每一层都是一个独立的进程。

这样方法虽然有利于协议栈的调试,但是,其最大的弊端为数据包跨层传递时会引起频繁的上下文的切换,尤其是在多任务系统中,这样导致时间的浪费而直接影响到系统的实时性。

LWIP 将所有TCP/IP 协议都放在在一个进程当中,这样TCP/IP 协议栈就和操作系统内核分开了。

而应用层程序既可以是单独的进程也可以驻留在TCP/IP 进程中。

如果应用程序是单独的进程,可以通过操作系统的邮箱、消息队列等通讯机制和 TCP/IP 进程进行通讯。

如果应用层程序驻留在 TCP/IP 程中,那应用层程序就利用内部回调函数接口(Raw API)和 TCP/IP 协议栈通讯。

LWIP进程模式的主要优点是可以很方便的移植到各种操作系统上去,进行应用程序的开发。

图2 - 1 LWIP的进程模型LwIP 的进程模型如图2-1。

在图2-1 中可以看到整个 TCP/IP 协议栈都在同一个名为“tcpip_thread”任务中,而位于图中最上方的“Application layer”(应用层)和下方的“Network interface layer”(网络接口驱动层)由用户自己来实现。

应用层程序既可以是独立的任务(如图中正上方的“tftp_thread”和“tcpecho_thread”),通过 mbox(消息队列)和 LWIP 进程通讯;也可以在“tcpip_thread”(如图左上角)中利用原始接口(Raw API)和 TCP/IP协议栈通讯。

LWIP的数据流程主要分为接收和发送两种情况。

●接收数据时:数据包从一个网络接口被接收,如果网络接口驱动通过low_level_input函数读到这个数据包,简单的区分是ARP包还是IP包。

如果是ARP包,将调用ARP的功能处理这个包。

通常将更新一个ARP地址映射表,然后将数据包发送给IP_input函数处理。

如是查一个IP包,将把数据包发送给ip_input函数处理。

IP_input函数将数据包进行简单的处理(如计算校验和)后,分析该包是发送到本机的正常数据包,IP_input则根据包的类型,分别发送给udp_input、tcp_input、icmp_input函数处理。

如果是发送给UDP或TCP协议的数据包,UDP、TCP协议的处理函数将做相应的处理,最后发送给应用程序。

●发送数据流程:当应用程序需要发送一个数据包的时候,它将调用UDP和TCP协议处理函数udp_sender或tcp_write函数发送该数据包。

UDP和TCP协议的处理函数接收数据后,将数据打包、分段,然后发送给IP层ip_output_if函数(需要时,将调用ip_route函数进行路由选择),该函数把数据打包、封装,然后调用网络接口驱动的low_level_output函数传给网络接口。

三、LWIP协议栈的实现3.1 网络接口LwIP使用一个与BSD中相似的网络接口结构来表示底层网络驱动,结构体的原型定义如下所示。

struct netif {struct netif *next;char name[2];int num;struct ip_addr ip_addr;struct ip_addr netmask;struct ip_addr gw;void (* input)(struct pbuf *p, struct netif *inp);int (* output)(struct netif *netif, struct pbuf *p,struct ip_addr *ipaddr);void *state;}next指针用于将网络接口链入到全局链表中。

Name域用于表示网络接口的类型,只用于这个接口在运行时由人工操作进行配置。

Name由设备驱动设置并且应该反映硬件的种类。

num用来区分相同类别的不同网络接口。

三个IP 地址ip_addr,netmask与gw分别用来表示IP地址,子网掩码,网关。

State表示设备驱动所包含的网络接口状态,由设备驱动设置。

当设备驱动接受到一个信息包的时候需要调用input指向的函数。

而网络接口通过output指针与设备驱动连接。

这个指针指向处于设备驱动中的发送信息包的函数,这个函数将在一个信息包发送出去后,被IP层调用。

指针output将在设备驱动初始化的时候赋值。

3.2 IP处理LwIP仅实现了IP层大部分的基本功能,能够发送、接收以及转发信息包,但是不能接收和发送 IP分片包,也不能处理携带 IP参数选项的信息包。

不过对大多数的应用来说,这不会引起任何问题。

●接收信息包收到的IP信息包,由网络设备驱动调用ip_input()函数开始处理。

在这里完成对IP版本字段及包头长度的初始完整性检查,同时还要计算和验证包头校验和。

协议栈假定代理会重新组合IP分片包为一个完整的包。

接下来,函数检查目的地址是否与网络接口的IP地址相符以确定信息包是否到达预定主机。

网络接口在链表中被排序并且采用了线性检索。

如果一个到达的信息包被发现已经到达了目的主机,则由协议字段来决定信息包应该传送到哪一个上层协议。

●发送信息包外发的信息包由ip_output()函数处理,该函数使用ip_route()函数查找适当的网络接口来传送信息包。

当外发的网络接口确定后,信息包传给以外发网络接口为参数的ip_output_if()函数。

在这里,所有的IP包头字段被填充,并且计算 IP包头校验和。

IP信息包的源及目标地址作为参数被传递给ip_output_if()函数。

●转发信息包如果没有网络接口的地址与到达的信息包的目标地址相同,信息包应该被转发。

这项工作由ip_forward()函数完成。

在这里,TTL字段值被减少(Time To Live的简写,生存时间的意思,译者注),当减为0 的时候,将会给IP 信息包的最初发送者发送ICMP错误信息,并抛弃该信息包。

最后,信息包被转发到适当的网络接口。

查找适当的网络接口的算法与发送信息包使用的算法相同。

●ICMP处理网际控制报文协议ICMP(Intemet Control Message Protoc01)总是与IP协议配置在一起,它运行在IP协议之上,发送一些控制信息,帮助Intemet处理差错。

相关文档
最新文档