lwIP――TCP/IP协议栈的一种实现(1)[1]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

 

1 介绍

近几年来,对计算机互连及装备有无线联网设备的计算机的兴趣越来越流行。计算机和日常设备越来越无缝集成在一起并且价格也在下降。同时无线网络技术,如蓝牙和IEEE 80211b无线局域网也相继出现。这将在很多领域如健康保健,安全,保险,运输及处理产业等引发更多令人振奋的前景。小设备如传感器等能接入一些已经存在的网络基础设施如全球因特网,也能在任何地方被监测到。

互联网技术已经被证实足够灵活的适应过去几十年来不断变化的网络环境。互联网技术起初是在如ARPANET的慢速网络上发展起来的,但它现在却运行在大量的连接技术及许多不同特征的带宽和比特错误率上。由于大量使用互联网技术的应用已被广泛应用,在不久的无线网络中使用现有互联网技术有很大的益处。同时,全球互联网的巨大互联性是个很大的激励。

由于小设备如传感器经常被要求小型且便宜,网络协议的实现必须处理受限制的计算资源及内存。这篇文章描述了一个成为lwIP的小TCP/IP协议栈的设计及实现,它足够小便于在最小限度的系统中使用。

文章的安排如下:234部分给出了lwIP协议栈的概要,第5部分描述了操作系统仿真层,第6部分描述了内存及缓冲区管理,第7部分介绍了lwIP网络层的抽象接口,第8910部分描述了IPUDPTCP协议的实现,第1112部分描述了怎样使用lwIPAPI介绍,第1314部分分析了实现,最后,第15部分提供了lwIP API的使用手册,并且第1718部分给出了几个代码实例。

2 协议分层

TCP/IP协议族设计成分层模式,每个协议层解决不同的通信问题。分层思想主导了协议实现的设计,各个协议能被分开实现。以一种严格分层的方式实现协议导致了这么一种情况:协议层之间的通信降低了总体的性能。为了克服这个问题,一个协议的某些方面应当被其他协议所了解。必须小心,那样只有重要的信息在协议层间共享。

许多的TCP/IP实现都严格区分开应用层及其底下的协议层,不管这些层是否可以或多或少的交叉实现。在许多操作系统中,这些底层的协议被实现为操作系统内核的一部分,而只提供给应用层进程一些通信调用点。应用程序只知道TCP/IP实现的一个抽象方式,网络通信同进程间通信或文件I/O的差异很少。这样实现的原因是应用程序不会意识到底层使用缓冲区的机制,它不能使用该信息拒绝经常使用数据的缓冲区。同时,当应用程序发送数据时,该数据必须在被网络代码执行前从应用进程内存空间复制到内部缓冲区。

在最小限度系统上的操作系统通常不会维护内核及应用进程之间的严格界限保护。这就允许通过共享内存在应用层及底层协议间使用更为灵活的通信机制。特别地,应用层能意识到底层使用缓冲区的机制。因此应用程序能更高效地重用这些缓冲区。同时,由于应用进程可以使用网络层代码同样的内存,应用进程能直接读写那些内部缓冲区,因此也节省了复制的代价。

3 概要

本文关键:lwIP――TCP/IP协议栈的一种实现(1)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top