搜档网
当前位置:搜档网 › Vxworks网络协议栈

Vxworks网络协议栈

《嵌入式操作系统VxWorks中网络协议存储池原理及实现》

周卫东蔺妍刘利强

(哈尔滨工程大学自动化学院,黑龙江哈尔滨,150001)

摘要本文讨论了网络协议存储池的基本原理和在嵌入式操作系统中的

实现方法。为在嵌入式系统中实现TCP/IP协议栈,提供了一种有效、简洁、可靠的缓冲区管理。

关键词 VxWorks; mBlk; clBlk; 网络协议存储池

VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS)。它以良好的持续发展能力、高性能的内核以及卓越的实时性被广泛的应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。VxWorks操作系统有着优越的网络性能,而缓冲区的数据拷贝是影响网络性能的主要因素。

众所周知,缓冲区在网络协议栈中有两个作用:第一,提供载体,使分组或报文可以在各协议层中流动;第二,为各级缓冲区提供空间。缓冲区的设立使得TCP/IP协议栈支持异步I/O操作,异步操作对于协议栈的I/0性能是非常重要的。在网络输出的过程中每一层需要在数据的首部或者尾部添加数据头和数

据尾来对数据进行封装使得接收端对应的层能够进行正确的接收,在输入的过程中每层都需要将本层的数据头和数据尾去掉而最终还原成发送端发送的数据。上述的封装/去封装和拷贝操作使得网络协议对内核的存储器管理能力提出了很多要求。这些要求包括能方便地操作可变长缓存,能在缓存头部和尾部添加数据(如低层封装来自高层的数据),能从缓存中移去数据(如当数据包向上经过协议栈时要去掉首部),并能尽量减少这些操作所作的数据复制。

1 使用netBufLib管理存储池的基本原理

网络协议存储池使用mBlk结构、clBlk结构、簇缓冲区和netBufLib提供的函数进行组织和管理。mBlk和clBlk结构为簇缓冲区(cluster)中数据的缓冲共享和缓冲链接提供必要的信息。netBufLib例程使用mBlk和clBlk来管理cluster和引用 cluster中的数据,这些结构体中的信息用于管理cluster

中的数据并且允许他们通过引用的形式来实现数据共享,从而达到数据“零拷贝”的目的。

1.1 结构体mBlk和clBlk及其数据结构

mBlk是访问存储在内存池中数据的最基本对象,由于mBlk仅仅只是通过clBlk来引用数据,这使得网络层在交换数据时就可以避免数据复制。只需把一个mBlk连到相应mBlk链上就可以存储和交换任意多的数据。一个mBlk结构体包括两个成员变量mNext和mNextPkt,由它们来组成纵横两个链表:mNext来组成横的链表,这个链表中的所有结点构成一个包(packet);mNextPkt来组成纵的链表,这个链表中的每个结点就是一个包 (packet),所有的结点链在一起构成一个包队列,如图1所示。

图1 包含两个数据包的mBlk链

结构体mBlk和clBlk的数据结构如下所示:

struct mBlk

{

M_BLK_HDR mBlkHdr; /* header */

M_PKT_HDR mBlkPktHdr; /* pkthdr */

CL_BLK * pClBlk; /* pointer to cluster blk */

} M_BLK;

struct clBlk

{

CL_BLK_LIST clNode;/* union of next clBlk */

UINT clSize;/* cluster size */

int clRefCnt;/*countof the cluster */

struct netPool * pNetPool; /* pointer to the netPool */

} CL_BLK;

/* header at beginning of each mBlk */

struct mHdr

{

struct mBlk * mNext;/* next buffer in chain */

struct mBlk * mNextPkt;/* next chain in queue/record */

char *mData; /* location of data */

int mLen;/* amount of data in this mBlk */

UCHAR mType;/* type of data in this mBlk */

UCHAR mFlags; /* flags; see below */

} M_BLK_HDR;

/* record/packet header in first mBlk of chain; valid if M_PKTHDR set */ struct pktHdr

{

struct ifnet * rcvif;/* rcv interface */

int len; /* total packet length */

} M_PKT_HDR;

1.2 网络协议存储池的初始化

VxWorks在网络初始化时给网络协议分配存储池并调用netPoolInit()函数对其初始化,由于一个网络协议通常需要不同大小的簇,因此它的存储池也必须包含很多簇池(每一个簇池对应一个大小的簇)。如图2所示。另外,每个簇的大小必须为2的方幂,最大可为64KB(65536),存储池的常用簇的大小为64,128,256,512,1024比特,簇的大小是否有效取决于CL_DESC表中的相关内容,CL_DESC表是由 netPoolInit()函数调用设定的。

图2 网络协议存储池初始化后的结构

1.3 存储池的链接及释放

存储池在初始化后,由netPool结构组织几个下一级子池:一个mBlk池、一个clBlk池和一个cluster池。mBlk池就是由很多mBlk组成的一条mBlk链;clBlk池就是由很多clBlk组成的一条clBlk链。cluster池由很多的更下一级cluster子池构成,每一个 cluster子池就是一个cluster链。每一个cluster 链中的所有cluster的大小相同,不同链中的cluster大小不同。但要实现不同进程访问同一簇而不需要作数据的拷贝,还需要把mBlk结构,clBlk结构和簇结构链接在一起。创建这三级结构一般要遵循这样五步:

a.调用系统函数netClusterGet()预定一块簇缓冲区;

b.调用系统函数netClBlkGet()预定一个clBlk结构;

c.调用系统函数netMblkGet()预定一个mBlk结构;

d.调用系统函数netClBlkJoin()把簇添加到clBlk结构中;

e.调用系统函数netMblkClJoin()把clBlk结构添加到mBlk结构中。

这样,就构成了最后的缓冲区。

在缓冲区中的数据使用完毕后要及时的释放内存,这一过程只需要调用系统函数netMblkC1ChainFree()释放存有数据的mBlk链表。例如当数据向上层传送时,在本层中可以释放已经不再使用的mBlk链表,由于在clBlk中记录着指向本模块的mBlk的个数,虽然释放了mBlk链表,但是这并不表示将cluster 中的数据释放掉了,上层复制的链表仍然控制着这些数据,直到clBlk中的mBlk 计数为0时才真正的将数据占用的簇释放掉,将数据占用的内存空间释放、归还给系统将来使用。

2 网络协议存储池与数据的封装处理

VxWorks操作系统之所以采用mBlk—clBlk—cluster这样的网络数据存储结构,目的就是减少数据拷贝的次数,提高网络数据的传输速率。

图3 存储带有1460个字节数据的mBlk

在网络输出的过程中当从上层向下层传递数据时,下层协议需要对数据进行封装使得接收端对应的层能够进行正确的接收。下面通过实例分析网络数据的封装过程。例如要在如图3所示的mBlk链中添加IP和UDP的首部。

在mBlk链表中封装数据的方法是分配另外一个mBlk,把它放在链首,并将分组首部复制到这个mBlk。IP首部和UDP首部被放置在新mBlk的最后,这个新mBlk就成了整个链表的首部。如果需要,它允许任何其它低层协议(例如添加以太网首部)在IP首部前添加自己的首部,不需要再复制IP和 UDP首部。在第一个mBlk中的mBlkHdr.mData指针指向首部的起始位置,mBlkHdr.mLen的值是28。在分组首部和IP首部之间有 72字节的未用空间留给以后的首部,通过适当地修改mBlkHdr.mData指针和mBlkHdr.mLen添加在IP首部的前面。注意,分组首部已经移到新mBlk中了,分组首部必须放在mBlk链表的第一个mBlk中。在移动分组首部的同时,在第一个mBlk设置M_PKTHDR标志。在第二个 mBlk中

分组首部占用的空间现在未用。最后,改变在此分组首部中的长度成员mBlkPktHdr.len,成员mBlkPktHdr.len的值是这个分组的mBlk链表中所有数据的总长度:即所有通过mBlkHdr.mNext指针链接的mbuf的mBlkHdr.mLen值的和。本例中由于增加了 28个字节变成了1488。如图4所示。

图4 添加完IP和UDP首部的mBlk

这样,当报文在协议栈中流动时,不会拷贝报文链,而只需把指向mBlk的指针通过参数传递。当报文需要进人缓冲区时,也是通过链表的指针操作将报文插入或添加到队列中。

3 结论

网络协议存储池的职责有两个:为协议栈提供合适的缓冲区,如果太大会浪费系统资源,太小会影响协议栈的吞吐量;提供合适的数据结构装载网络报文,既可以使协议栈方便地处理报文,又可以减少缓冲区拷贝的次数。减少拷贝次数不仅降低了CPU的负荷,还可以降低存储器的消耗。本文剖析了嵌入式操作系统 VxWorks中网络协议存储池的原理,实现了数据能够动态增删、但在逻辑上又呈现连续性的数据结构。能够满足在各协议层之间传递数据而不需要进行内存拷贝。

参考文献

[1] 翟东海,李力.mbuf的实现原理剖析及其在网络编程中的应用[J].计算机工程与应,2004(8):104-106.

[2] [美]DouglasE.Comer著.张娟等译.用TCP/IP进行网际互联第二卷:设计、实现与内核(第三版)[M].北京:电子工业出版社,2001.05.

[3] [美]GaryR.Wright W.RichardStevens著.陆雪莹,蒋慧等译.TCP/IP 详解卷2:实现[M].北京:机械工业出版社.2000.07:10—50.

[4] Wind River System Inc.VxWorks Network

收稿日期:8月25日修改日期:9月2日

《VxWorks任务追踪实例分析》

VxWorks中如果稍有不慎,就可能导致task suspend,如果运气好,shell没有

被挂起,则可以通过系统的一些命令追踪一下挂起的原因。其中用到的主要命令

是i、tt、ti、d等。

首先从出错信息开始:

0xfc8125b8 (t_Lcd): memPartFree: invalid block 0xfdfc6f38 in partition 0xfe508894.

由于memPartFree了一个非法的内存块,导致了任务挂起,我们需要确定到底是

哪条语句导致了这个异常的产生,可能是什么原因引起的。

首先,需要通过“i”命令察看任务状态:

-> i

NAME ENTRY TID PRI STATUS PC SP ERRNO DELAY

---------- ------------ -------- --- ---------- -------- --------

------- -----

tExcTask excTask fdffec80 0 PEND fe3c5f50 fdffeb60 3006b 0

tLogTask logTask fdffc298 0 PEND fe3c5f50 fdffc188 0 0

tShell shell fdf5fa48 1 READY fe1f3afc fdf5f628 0 0

……

t_Lcd fe392a30 fc8125b8 100 SUSPEND fe1f24b0 fc8120b8

d0003 0

……

可以看到任务t_Lcd的状态为SUSPEND,即被挂起的状态。其他各项的含义都比

较清楚,ENTRY是任务的入口函数,如果没有symbol,则直接显示地址,TID是

任务的ID号,一般用任务的栈底地址表示,PC是当前的指令位置,SP是当前栈

顶位置。

然后通过”tt”来追溯函数调用过程:

-> tt "t_Lcd"

fe3c14f4 vxTaskEntry +68 : fe392a30 ()

fe392b48 initLcdComponent+2e8: fe392bdc ()

fe392bec initLcdComponent+38c: fe392bfc ()

fe39333c initLcdComponent+adc: lcdShowPassWord ()

fe398590 lcdShowPassWord+84 : saveModifiedSetting ()

fe3a3790 saveModifiedSetting+220: saveSettingValue (1)

fe1fd6d0 saveSettingValue+148: fe1fc428 (0, 5, ffffffff)

fe1fc888 getDeviceSettingValue+64c: fclose ()

fe1aab48 fclose +ec : free ()

fe1bb7d4 free +1c : memPartFree ()

fe1bb2dc memPartFree +148: taskSuspend ()

我们可以了解到函数的调用过程,vxTaskEntry()?->fe392a30()->fe392bdc ()->fe392bfc ()->lcdShowPassWord ()->saveModifiedSetting

()->saveSettingValue (1)->fe1fc428 (0, 5, ffffffff)->fclose ()->free ()->memPartFree ()->taskSuspend ()。其他相关信息:第一栏是发生跳转(即函数调用)后的返回地址,稍后会作详细解释,第二栏是离返回地址最近的symbol和偏移量,一般情况下会是发起调用的那个函数的名称,除非该函数是内部函数,系统中没有symbol,第三栏是被调用的函数。

再来查看一下t_Lcd任务的栈里的内容,从前面的任务信息里已经得知当前栈顶位置为fc8120b8,通过“d”命令显示该地址的内容。

-> d 0xfc8120b0

fc8120b0: fc81 25b8 fc81 25b8 fc81 20c8 fe1f 24b0 *..%...%... ...$.* fc8120c0: fe50 8894 fdfc 6f30 fc81 20e8 fe1b b2dc *.P....o0.. .....* fc8120d0: fdf2 6b08 0000 0100 0000 000c 0000 0000 *..k.............* fc8120e0: 0000 0000 fdf1 ed80 fc81 20f8 fe1b b7d4 *.......... .....* fc8120f0: fd9a 3538 fdf1 ed80 fc81 2108 fe1a ab48 *..58......!....H* fc812100: fd9a 3538 fc81 2108 fc81 2238 fe1f c888 *..58..!..."8....* fc812110: 0000 0000 0000 0005 ffff ffff 0000 0600 *................* fc812120: 0000 000a fdf1 ed80 4230 312e 7874 6373 *........B01.xtcs* fc812130: 5f62 7566 2e69 6c32 0000 0000 0000 0000 *_buf.il2........*

这里我们可以看到一些熟悉的地址,注意看最后两列,在这里可以找到”tt”中显示的第一栏地址即函数调用的返回地址。两个返回地址之间是该函数的栈空间,用于保存栈指针、局部变量或者相关寄存器的值。要具体了解这些值是怎么来的,就要用到反汇编了。

反汇编通过objdump命令来实现,不同类型的cpu会有不同的可执行文件,例如

objdumpppc -D vxworks >xx.s

反汇编的结果可能会很大,耐心等待吧。我们来看一下fclose()里调用free()的这一过程,在汇编代码里查找返回地址fe1aab48。

fe1aaa5c :

……

fe1aab44: 48 01 0c 75 bl fe1bb7b8

fe1aab48: 38 00 00 00 li r0,0

bl是无条件跳转指令,free()执行完之后,应返回fe1aab48继续执行。

查找fe1bb7b8,看看free被调用时干了些什么?

fe1bb7b8 :

fe1bb7b8: 94 21 ff f0 stwu r1,-16(r1)

fe1bb7bc: 7c 08 02 a6 mflr r0

fe1bb7c0: 90 01 00 14 stw r0,20(r1)

fe1bb7c4: 7c 64 1b 78 mr r4,r3

fe1bb7c8: 3c 60 fe 51 lis r3,-431

fe1bb7cc: 38 63 88 94 addi r3,r3,-30572

fe1bb7d0: 4b ff f9 c5 bl fe1bb194

fe1bb7d4: 80 01 00 14 lwz r0,20(r1)

fe1bb7d8: 7c 08 03 a6 mtlr r0

fe1bb7dc: 38 21 00 10 addi r1,r1,16

fe1bb7e0: 4e 80 00 20 blr

虽然不同类型cpu的汇编指令不同,但还是可以大致猜出其中的含义。stwu指令将r1保存到地址(r1-16)位置,然后让将r1减去16保存到r1中,完成了保存并更新栈指针的过程;第2、3条语句将返回地址保存到r1+20的位置;下面几条语句实际上是准备参数的过程,r3,r4一般用来保存函数的形参值,随后调用了memPartFree。从memPartFree返回后,先从堆栈上读取返回地址,然后将栈顶下移16字节,即恢复到原来的位置,最后跳转到返回地址。

对着内存内容校验一下,fclose调用free后的返回地址为fe1aab48,按照上面的分析,这个地址会被free()函数保存在r1+20 的位置,因此r1+20=fc8120fc,r1=fc8120e8,而free中将r1减去了16,所以刚进入free()时,r1应该等于fc8120f8,这个数值会被保存在fc8120e8处,事实正是如此。

这里栈内空间的利用有点交叉混杂,暂时没有弄的太明白,并且free()中没有用到过fc8120f0-fc8120f8空间的内存,推测可能是栈的大小至少为16字节所以留空了,里面的内容是历史遗留产物,是否如此,还有待进一步的研究。

以上是比较通用的分析过程,本来还涉及到结合c代码的分析,跟具体的例子结合太紧密,就不赘述了,有一点可以提一下,想追溯函数调用过程中某一参数的运行值,可能会在调用者的栈中,也可能会在调用者的调用者的栈中,这个需要结合具体的汇编码来分析。因为函数的栈开辟出来是为了保存一些临时的乱七八糟的东西,比如需要用到r38,就会把r38临时保存到栈上,返回时再恢复。而对本函数有用的变量,通常会被优化到寄存器中保存,除非寄存器不够用了,才会用到栈空间。

《VxWorks5.5的内存结构》

内存结构

VxWorks5.5中的内存是平板式的,基本的结构如上图所示,整个内存分区被划分成一个个区块(Block)。每一个区块都有一个区块头,如果是空闲的内存块,是FREE_BLOCK,如果是已分配的,则是BLOCK_HDR。这两个结构在

private/memPartLibP.h中定义。

FREE_BLOCK 和 BLOCK_HDR的前半部分的结构是一样的,先是32bit的pPrevHdr 指针,指向前一个区块头,接着是31bit的nWords,余下的 1bit用于指示该区

块是否空闲。这里nWords的单位是Word,等于2 Byte。当前的区块头地址加上2倍的nWords就是下一个区块的地址。这最后的1bit看起来有些讨厌,使得nWords的数值并不那么直观,但实际上我们用到的总是2*nWords,也就是nWords<<1,刚好空出了最后一位,从一个例子可以说的更明白些,数据格式为Big Endian。

0x0088ca00: 0088c9c0 00001125 ……

我们可以知道前一个区块的地址为0×88c9c0,这个区块的长度为0×1124 Byte,这个区块是空闲的,通过计算我们还能得出下一个区块的地址为

0×88ca00+0×1124=0×88db24。

如果内存分配时需要按16Bytes对齐,BLOCK_HDR还包含8 Byte的空白区,然后才是实际的数据区。

FREE_BLOCK则还包含一个DL_NODE,即双向链表节点,这些节点被串在memSysPartId->freelist中,这些节点并不一定按照地址高低排列。

操作函数

memPartLibP.h中提供了一些宏和函数来操作这些结构,本质上都是指针的移动。

?NEXT_HDR(pHdr)和PREV_HDR(pHdr),得到前后区块的地址

?HDR_TO_BLOCK(pHdr)和BLOCK_TO_HDR(pBlock),在区块头和数据区之间转换;

?HDR_TO_NODE(pHdr)和NODE_TO_HDR(pNode),在空闲节点和区块头之间转换。

对于freelist,则采用dllLib中的双向链表操作函数来维护。

?DLL_FIRST和DLL_LAST,得到链表头或尾;

?DLL_NEXT(pNode)和DLL_PREVIOUS(pNode),得到下一个或前一个节点;

?dllAdd和dllRemove,增加或删除一个节点;

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。 ◆在2.45GHz频带内定义了16个通道;在915MHz频带内定义了10个通道;在868MHz频带内定义了1个通道。 为了使供应商能够提供最低可能功耗的设备,IEEE(InstituteofElectricalandElectronicsEngineers,电气及电子工程师学会)定义了两种不同类型的设备:一种是完整功能设备(full.functionaldevice,FFD),另一种是简化功能设备

网络的基本概念和分类

第八章网络的基本概念和分类 本章主要讲述了网络的基本概念、网络的分类及一些基本功能:并介绍了网络通信协 议和网络编址,使读者对网络有一个基本的了解。 8.1 网络的基本概念 8.1.1 网络的定义 “网络”已经成为了当今社会最流行的词汇之一,但是网络的实质到底是什么?这个 问题到现在还没有一个统一的、被认同的答案。这是因为网络对于不同的人、不同的应用层 次会有如下不同的作用: ●它是一个可以获取各种信息、资料的海洋。 ●它是一个能够进行科研、办公、商业贸易等活动的地方。 ●它可以使各领域的专业人士在全球领域中直接进行学术研讨。 ●它可以为人们提供各种各样的娱乐服务,提高人们的生活质量。 ●它是能使人们与位于全球各地的朋友和家人进行通话的场所。 为了让读者先对网络有…‘个初步的印象,我们先给出网络的基本定义:“网络是一个数据通信系统,它将不同地方的计算机系统互相连接在·…起。网络可由LAN(局域网)、MAN(城域网)和W AN(广域网)的任意组合而构成。”在最简单的情况下,——个网络可由两台计算机或终端设备组成,它们之间用电缆连接,以便进行通信;在最复杂的情况下,一个网络(如Internet)则是全球的多学科技术和多操作系统的综合结晶,是全球1亿台电脑连在一起形成的巨大的信息高速公路。 8.1.2 网络的发展历史 1.ARPAnet的诞生及发展 在今天,读者可以悠闲地坐在显示屏前面,通过点击鼠标,在瞬息间与世界的另一端通信。无数的节点和服务器默默而迅速地帮您将触角伸向世界上任何一个可能达到的角落。

1960年前,人们印象中的电脑都是一些体积庞大的家伙,“连接”的概念尚未深入人心。 远程连接相当罕见,通常只有那些教育和研究机关的用户才能与一些由政府提供资金的项目连接。电脑间的连接受限于一条特殊数据电缆的最大长度。1957年美国国防部(DOD)颇有先见之明地设想开发出一种新技术,叫作“包交换”。他们的主要想法是制定一套方法,能够将国与国之间的电脑连接起来,而且使最终建立起来的干线结构尽可能稳定,同时具有强大的容错性。即便其中的一部分由于灾难性的事件甚至战乱而被破坏,其他部分仍然能够正 常通信。由此诞生了一个示范性的网络,叫作ARPAnet,其中ARPA是DOD的一个部门“高级研究工程管理局”(AdvancedResearchProjectsAgency)的缩写。这个示范性的网络便是今I 天Web的前身,在当时,只有—些大学和研究机构通过一条50bitls的环路连接在——起。 从这些连接在…—起的少数机构中,人们认识到了协同工作的价值和便利条件,因而越 来越多的人们逐渐地将各自的机构连接起来。为科研任务提供设备、-计算机和软件的制造商也陆续加入了这种连接。在20多年的发展中,网络为科研工作提供了良好的服务。随着早期连接的较大机构中的工作人员向较小机构的转移和扩散,网络每年也得到了新的发展。 在70年代中期,最早的协议Telnet、FTP(文件传输协议) 和“网络控制协议”(NCP) 的最初版本被正式制定出来。但那时只提供了极少的客户机/服务器功能。通过Telnet,机器可从一个远程位置登录,并执行命令行操作。利用FTP,可以在不同机器间传输文件。NCP 提供了基本的数据传输控制和网间定址代码。{ 1972年,在华盛顿召开的“国际计算机通信会议”(1CCC)为公众演示了——个示范性网络,普通人可以用它跨越国界运行程序。同时会议还建立了“国际信息处理联盟”(1EIP),它是今天因特网的国际化连接基础。 2.网络实施方案的新发展 以太网的概念最开始是在1973年由Xerox(施乐公司)的Palo Alto(帕拉图)研究中心提出来的。这个概念的基础是将随机访问无线系统的方法应用到一个同轴电缆里的想法。今天的 以太网是世界-卜最流行的网络媒介。在开始开发的时候,以太网就将自己的设计目标定在填补长距离、低速率网络连接所造成的真空地带,专门建立高速率、专门化、短距离的电脑间的连接。 那时出现的另—‘个流行标准是令牌环,令牌环网络最开始时是由IBM公司在开发以太网的同——个时期里设计出来的。即使到现在令牌环仍然是IBM的主要局域网技术,它的流行程度仅次于以太网。 互联网络正在持续得以扩展,越来越多的研究人员需要访问计算系统,那时主要是为了发电子邮件。远程连接服务也开始得到开发。跨越众多的公共数据网络(PDN),需要通过

项目三了解无线传感器协议栈

项目三了解无线传感器协议栈 项目三了解ZigBee无线传感器网络协议栈知识目标1.掌握zigbee无线传感器网络的协议栈和协议的区别等知识。 2.掌握Z-Stack协议栈的OSAL分配机制。 3.了解Z-Stack协议栈的OSAL运行机制。 4.掌握Z-Stack协议栈的OSAL常用函数。 项目三了解ZigBee无线传感器网络协议栈技能目标1.掌握 Z-Stack协议栈的运行机制。 2.掌握Z-Stack协议栈中OSAL的添加新任务的方法。 项目三了解ZigBee无线传感器网络协议栈在实际zigbee无线传感器网络工程的开发过程中首先借助TI提供的协议栈中例程SampleApp,接着根据需要完成的功能,查看支持Z-Stack协议栈的硬件电路图,再查阅数据手册(CC2530的数据手册、Z-Stack协议栈说明、Z-Stack协议栈API函数使用说明等)文件,然后再进行协议栈的修改。 最后,还需要烧录器下载到相应的硬件,实现zigbee无线传感器网络的组建和开发。 设计思路3.1.1协议与协议栈协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发;议栈是协议的具体实现形式。 通俗的理解为代码实现的函数库,以便于开发人员调用。

3.1Z-Stack协议栈3.1.1协议与协议栈协议栈是指网络中各层协议的总和,一套协议的规范。 其形象地反映了一个网络中文件传输的过程由上层协议到底层协议,再由底层协议到上层协议。 使用最广泛的是因特网协议栈,由上到下的协议分别是应用层(Http、Tel、DNS、Email等),运输层(TCP、UDP),网络层(IP),链路层(WI-FI、以太网、令牌环、FDDI等)。 3.1Z-Stack协议栈3.1.1协议与协议栈3.1Z-Stack协议栈3.1.1协议与协议栈Zigbee协议栈开发的基本思路如下。 ①借助TI提供的协议栈中例程SampleApp进行二次开发,用户不需要深入研究复杂的zigbee协议栈,这样可以减轻开发者的工作量。 ②Zigbee无线传感器网络中数据采集,只需要用户在应用层加入传感器的读取函数和添加头文件即可实现。 ③如果考虑节能,可以根据数据采集周期(zigbee协议栈例程中已开发了定时程序)进行定时,定时时间到就唤醒zigbee终端节点,终端节点唤醒后,自动采集传感器数据,然后将数据发送给路由器或者直接发给协调器,即监测节点定时汇报监测数据。 ④协调器(网关)根据下发的控制命令,将控制信息转发到具体的节点,即控制节点等待控制命令下发。 3.1Z-Stack协议栈3.1.2使用Z-Stack协议栈传输SampleApp.c 中定义了发送函数static voidSampleApp_SendTheMessage(void)。 该函数通过调用AF_DataRequest来发送数据。

CycloneTCP协议栈移植与使用简介

Arda Technology Arda Tech P.F.FU 2014-12-19 Ver 0.1 #elif defined(USE_XXXXXX) #include "os_port_xxxxxx.h"

NicType type;//控制器类型。0:以太网接口,1:PPP接口,2:6LowPan接口 NicInit init;//控制器初始化函数指针 NicTick tick;//控制器周期性事务处理函数指针 NicEnableIrq enableIrq;//打开控制器中断函数指针 NicDisableIrq disableIrq;//关闭控制器中断函数指针 NicEventHandler eventHandler;//控制器中断响应函数指针,这个是下半段的中断处理部分。 NicSetMacFilter setMacFilter;//配置多播MAC地址过滤函数指针 NicSendPacket sendPacket;//发送包函数指针 NicWritePhyReg writePhyReg;//写PHY寄存器函数指针 NicReadPhyReg readPhyReg;//读PHY寄存器函数指针 bool_t autoPadding;//是否支持自动填充 bool_t autoCrcGen;//是否支持自动生成CRC校验码 bool_t autoCrcCheck;//是否支持自动检查CRC错误 NicSendControlFrame sendControlFrame;//发送控制帧函数指针 NicReceiveControlFrame receiveControlFrame;//接收控制帧函数指针 NicPurgeTxBuffer purgeTxBuffer;//清除发送缓冲函数指针 NicPurgeRxBuffer purgeRxBuffer;//清除接受缓存函数指针 xxxxEthInitGpio(...)//用于在init中初始化GPIO。 xxxxEthInitDmaDesc(...)//用于在init中初始化DMA任务描述符列表。 XXXX_Handler(...)//用于MAC中断的上半段处理。 xxxxEthReceivePacket(...)//用于在eventHandler中收包,把数据从dma的缓冲复制到外部缓冲。xxxxEthCalcCrc(...)//计算CRC值,这个函数基本上是固定的。 xxxxEthDumpPhyReg(...)//用于调试的打印PHY寄存器列表值。

网络基本概念(一)

网络基本概念(一) (总分:96.00,做题时间:90分钟) 一、{{B}}选择题{{/B}}(总题数:50,分数:50.00) 1.组建一个星形网络通常比组建一个总线型网络昂贵,是因为________。 (分数:1.00) A.星形集线器非常昂贵 B.星形网络在每一根电缆的末端需要昂贵的连接头 C.星形网络接口卡比总线型接口卡昂贵 D.星形网络较之总线型需要更多的电缆√ 解析: 2.网络协议精确地规定了交换数据的________。 (分数:1.00) A.格式和结果 B.格式和时序√ C.结果和时序 D.格式、结果和时序 解析: 3.在下列传输介质中,________的抗电磁干扰性最好。 (分数:1.00) A.双绞线 B.同轴电缆 C.光缆√ D.无线介质 解析: 4.关于因特网,以下说法错误的是________。 (分数:1.00) A.用户利用HTTP协议使用WEB服务 B.用户利用NNTP协议使用电子邮件服务√ C.用户利用FTP协议使用文件传输服务 D.用户利用DNS协议使用域名解析服务 解析: 5.下列有关网络拓扑结构的叙述中,正确的是________。 (分数:1.00) A.网络拓扑结构是指网络结点间的分布形式 B.目前局域网中最普遍采用的拓扑结构是总线结构 C.树形结构的线路复杂,网络管理也较困难√ D.树形结构的缺点是,当需要增加新的工作站时成本较高 解析: 6.在网络环境下,每个用户除了可以访问本地机器上本地存储之外,还可以访问服务器上的一些外存,这种配备大容量的海量存储器的服务器是________。 (分数:1.00) A.文件服务器 B.终端服务器 C.磁盘服务器√ D.打印服务器 解析:

无线传感器网络协议栈研究与设计-第3章

第3章 低功耗无线传感器网络协议栈整体设计 本章的目标是对低功耗环境测控网络协议栈进行整体设计。首先对环境测控系统进行需求分析明确其适用场景和网络设备类型;然后,根据需求分析确定协议栈的设计目标,并选择适合的网络拓扑结构和协议栈的分层架构。协议栈的网络层和MAC 层将作为本章的设计的重点。 3.1 网络需求分析 3.1.1 应用场景介绍 本课题来源于研究生校企合作项目,所设计的低功耗无线传感器协议栈主要应用于环境测控系统中。该系统长期无人值守,其温度、湿度等环境参数由连接无线节点的传感器实时采集并上传至汇聚节点,汇聚节点再通过有线的方式传输至面向用户的管理终端。多个子系统采集的数据最后由各自的管理终端传送至云端处理中心进行数据的保存,整个系统框图如图3.1所示。 云端处理中心 二级中继 汇聚节点 图3.1 环境测控系统框图 图中的环境测控无线网络是执行数据采集和设备控制的主体,也是协议栈发挥作用的区域。一个环境测控无线网络负责一个区域,区域之间有一定的距离,

因此无线网络之间不存在干扰,但无线网络的运行方式一致。该项目处于初期开发阶段,所以本文设计的协议栈只应用于单个环境测控无线网络中。 该课题所涉及的环境测控系统处于室内,人员进出频率低。网络中节点数不超过65个,包含一个汇聚节点。点对点通信的距离要求达到20米。传感器节点以10秒为周期采集并发送环境数据。考虑到室内可能会出现一些特殊设备、隔断等障碍影响通信距离,并使得部分节点处于屏蔽的位置,因此网络通过设置中继节点来扩展通信距离,经过中继后的通信距离要求60米及以上。由于成本等原因,课题设定数据包最多经过两级中继传递,每级中继最多4个,中继数量不超过8个。同时,系统中存在少量控制节点,控制节点连接室内的控温设备来调节室内温度。控制节点由工作人员从软件端下达命令进行开关,因此不具备周期性。该课题要求除汇聚节点、中继节点之外的所有节点能在1000mA/h电池的支持下工作一年以上。为保证数据采集的有效性和传输的可靠性,该课题要求多节点共享信道的丢包率在5%以内。此外,由于环境的特殊性,人员不能随时到场,还要求该环境测控网络中的节点具有安装简单、组网快速、配置容易的特点。以上需求总结如表3.1所示。 表3.1 环境测控系统需求指标 表3.1明确了该环境测控无线网络的要求。通过需求指标能使协议栈的设计更有约束性,设计方向也会更加明确。

TCPIP协议栈实践报告

《专业综合实践》 训练项目报告训练项目名称:TCP/IP协议栈

1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。这是后话,暂且不提 1.1.IP协议头如图所示

挨个解释它是教科书的活计,我感兴趣的只是那八位的TTL字段,还记得这个字段是做什么的么?这个字段规定该数据包在穿过多少个路由之后才会被抛弃(这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64,Tracerouter这个工具就是用这个原理工作的,tranceroute 的-m选项要求最大值是255,也就是因为这个TTL在IP协议里面只有8bit。 现在的ip版本号是4,所以也称作IPv4。现在还有IPv6,而且运用也越来越广泛了。 1.2.IP路由选择 当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢? 最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠ARP协议了,后面会讲到。 稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包 如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。 搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标

第一课 网络的基本概念

第1课网络基础知识 一、教学内容:网络基础知识 二、学习目标 (1)了解计算机网络的知识。 (2)了解计算机网络的软件和硬件。 (3)了解计算机网络的应用。 三、教学重点:计算机网络的应用 四、教学难点:计算机网络的结构 五、教学方法:讲授法、任务驱动法、教学演示法 六、教学课时:1课时 七、教学过程 (一)引言 网络是一种信息的来源途径,可能大家还不是很清楚网络中如何获得信息,从这节课开始,我们就来研究网络,看网络究竟是什么?网络有何用途?给我们的生活带来怎样的变化?下面我们开始讲这节新课: (二)讲授新课 (板书)网络基础知识 1、什么是计算机网络? 计算机网络是把若干台计算机利用信息传输介质和连接设备相互连接起来,在相应的网络协议软件支持下,实现计算机之间相互通信和资源共享的系统。从这个定义中我们可以提炼出三个要点:一是网络是计算机有两台或两台以上,二是信息传输介质和连接设备,三是网络协议。计算机网络的基本功能是数据传输和资源共享。以上我们简单定义了一下计算机网络,接下来我们来看一下计算机网络的分类及构成。 2、计算机网络的分类 计算机网络一般可分为两大类:1、局域网(Local Area Network,简称LAN),、2、城域网(Metropolian Area Network,简称:MAN)3、广域网(Wide Area Network,简称WAN) 。局域网,顾名思义,局,小,指在同一建筑物内或地理位置在一定范围内的多台计算机组成的网络。比如:一个校园网就是一个局域网,通过局域网,共享系统资源,大大提高教学效果和管理效率。而城域网和广域网

的覆盖面积辽阔,通常是以连接不同地域的大型主机系统组成的。当前大多数全国性网络都是广域网,局域网与广域网是以覆盖范围的大小来分的,如将两者相互连接就形成网际网络,简称网际网(network of network)。网际网使网络的功能得到更充分的扩展,目前最大的全球性网络因特网(Internet)就是一个网际网,现在国内的中国银行国内骨干网、民航售票网等等都是网际网。好,网络的分类就讲到这里,接下来我们讲: 3、网络的结构形式 网络的结构形式是指网络中各节点(又叫站点)之间的连接方式,下面介绍几种较常见的网络结构。网络的拓扑结主要有星型、环型和总线型等几种:(1).星型结构 星型结构是最早的通用网络拓扑结构形式。其中每个站点都通过连线(例如电缆)与主控机相连,相邻站点之间的通信都通过主控机进行,所以,要求主控机有很高的可靠性。这是一种集中控制方式的结构。星型结构的优点是结构简单,控制处理也较为简便,增加工作站点容易;缺点是一旦主控机出现故障,会引起整个系统的瘫痪,可靠性较差。星型结构如图所示。 (2).环型结构 网络中各工作站通过中继器连接到一个闭合的环路上,信息沿环形线路单向(或双向)传输,由目的站点接收。环型网适合那些数据不需要在中心主控机上集中处理而主要在各自站点进行处理的情况。环型结构的优点是结构简单、成本低,缺点是环中任意一点的故障都会引起网络瘫痪,可靠性低。环型拓扑结构如图所示。 (3).总线型结构 网络中各个工作站均经—根总线相连,信息可沿两个不同的方向由—个站点传向另一站点。这种结构的优点是:工作站连入或从网络中卸下都非常方便,系统中某工作站出现故障也不会影响其他站点之间的通信,系统可靠性较高,结构简单,成本低。这种结构是目前局部网中普遍采用的形式。总线型结构如图所示。 以上3种网络结构是最基本的网络结构形式,实际应用中往往把它们结合起来使用。 (四)使用校园网 校园网是种最常见的局域网,它是全校师生共同学习资源库和学习园地。下面我们学习使用在校园网中的共享资源,以及如何把自己计算机中有用的、好玩的资

mtcp协议栈

mTCP:A Highly Scalable User-level TCP Stack for Multicore Systems EunYoung Jeong,Shinae Woo,Muhammad Jamshed,Haewon Jeong Sunghwan Ihm*,Dongsu Han,and KyoungSoo Park KAIST*Princeton University Abstract Scaling the performance of short TCP connections on multicore systems is fundamentally challenging.Although many proposals have attempted to address various short-comings,inef?ciency of the kernel implementation still persists.For example,even state-of-the-art designs spend 70%to80%of CPU cycles in handling TCP connections in the kernel,leaving only small room for innovation in the user-level program. This work presents mTCP,a high-performance user-level TCP stack for multicore systems.mTCP addresses the inef?ciencies from the ground up—from packet I/O and TCP connection management to the application inter-face.In addition to adopting well-known techniques,our design(1)translates multiple expensive system calls into a single shared memory reference,(2)allows ef?cient?ow-level event aggregation,and(3)performs batched packet I/O for high I/O ef?ciency.Our evaluations on an8-core machine showed that mTCP improves the performance of small message transactions by a factor of25compared to the latest Linux TCP stack and a factor of3compared to the best-performing research system known so far.It also improves the performance of various popular applications by33%to320%compared to those on the Linux stack. 1Introduction Short TCP connections are becoming widespread.While large content transfers(e.g.,high-resolution videos)con-sume the most bandwidth,short“transactions”1dominate the number of TCP?ows.In a large cellular network,for example,over90%of TCP?ows are smaller than32KB and more than half are less than4KB[45]. Scaling the processing speed of these short connec-tions is important not only for popular user-facing on-line services[1,2,18]that process small messages.It is 1We refer to a request-response pair as a transaction.These transac-tions are typically small in size.also critical for backend systems(e.g.,memcached clus-ters[36])and middleboxes(e.g.,SSL proxies[32]and redundancy elimination[31])that must process TCP con-nections at high speed.Despite recent advances in soft-ware packet processing[4,7,21,27,39],supporting high TCP transaction rates remains very challenging.For exam-ple,Linux TCP transaction rates peak at about0.3million transactions per second(shown in Section5),whereas packet I/O can scale up to tens of millions packets per second[4,27,39]. Prior studies attribute the inef?ciency to either the high system call overhead of the operating system[28,40,43] or inef?cient implementations that cause resource con-tention on multicore systems[37].The former approach drastically changes the I/O abstraction(e.g.,socket API) to amortize the cost of system calls.The practical lim-itation of such an approach,however,is that it requires signi?cant modi?cations within the kernel and forces ex-isting applications to be re-written.The latter one typically makes incremental changes in existing implementations and,thus,falls short in fully addressing the inef?ciencies. In this paper,we explore an alternative approach that de-livers high performance without requiring drastic changes to the existing code base.In particular,we take a clean-slate approach to assess the performance of an untethered design that divorces the limitation of the kernel implemen-tation.To this end,we build a user-level TCP stack from the ground up by leveraging high-performance packet I/O libraries that allow applications to directly access the packets.Our user-level stack,mTCP,is designed for three explicit goals: 1.Multicore scalability of the TCP stack. 2.Ease of use(i.e.,application portability to mTCP). 3.Ease of deployment(i.e.,no kernel modi?cations). Implementing TCP in the user level provides many opportunities.In particular,it can eliminate the expen-sive system call overhead by translating syscalls into inter-process communication(IPC).However,it also in-

(完整版)IEEE.802.15.4网络协议栈及物理层

IEEE.802.15.4网络协议栈及物理层 IEEE 802.15.4网络协议栈基于开放系统互连模型(OSI),如图5-4所示,每一层都;实现一部分通信功能,并向高层提供服务。 IEEE 802.15.4标准只定义了PHY层和数据链路层的MAC子层。PHY层由射频收发器以及底层的控制模块构成。MAC子层为高层访问物理信道提供点到点通信的服务接口。 MAC子层以上的几个层次,包括特定服务的聚合子层(service specific convergence sublayer, SSCS),链路控制子层(logical link control , LLC)等,只是IEEE 802.15.4标准可能的上层协议,并不在IEEE 802.15.4标准的定义范围之内。SSCS为IEEE 802.15.4的MAC层接入IEEE 802.2标准中定义的LLC子层提供聚合服务。LLC子层可以使用SSCS的服务接口访问IEEE 802.15.4网络,为应用层提供链路层服务。 5.3.1物理层 物理层定义了物理无线信道和MAC子层之间的接口,提供物理层数据服务和物理层管理服务。物理层数据服务从无线物理信道上收发数据,物理层管理服务维护一个由物理层相关数据组成的数据库。 物理层数据服务包括以下五方面的功能: (1)激活和休眠射频收发器; (2)信道能量检测(energy detect); (3)检测接收数据包的链路质量指示(link quality indication , LQI); (4)空闲信道评估(clear channel assessment, CCA); (5)收发数据。 信道能量检测为网络层提供信道选择依据。它主要测量目标信道中接收信号的功率强度,由于这个检测本身不进行解码操作,所以检测结果是有效信号功率和噪声信号功率之和。 链路质量指示为网络层或应用层提供接收数据帧时无线信号的强度和质量信息,与信道能量检测不同的是,它要对信号进行解码,生成的是一个信噪比指标。这个信噪比指标和物理层数据单元一道提交给上层处理。 空闲信道评估判断信道是否空闲。IEEE 802.15.4定义了三种空闲信道评估模式:第一种简单判断信道的信号能量,当信号能量低于某一门限值就认为信道空闲;第二种是通过判断无线信号的特征,这个特征主要包括两方面,即扩频信号特征和载波频率;第三种模式是前两种模式的综合,同时检测信号强度和信号特征,给出信道空闲判断。 1.物理层的载波调制

基于ZigBee协议栈的无线传感器网络的设计

基于ZigBee 协议栈的无线传感器网络的设计 徐振峰,尹晶晶,陈小林,周全 (安徽国防科技职业学院机电工程系,安徽六安237011) 摘要:首先介绍了无线传感器网络的基本拓扑结构与传感器节点的结构,详细说明了基于ZigBee 协议栈的无线传感网络的建立过程,包括协调器启动及建立网络、传感器节点启动及加入网络、传感器节点与协调器之间建立绑定以及传感器节点向协调器发送数据的过程。设计了基于ZigBee 协议栈的无线传感网络系统。以采集温度信息为例,协调器能够接收到传感器节点发来的数据,并能通过RS232串口,将收到的数据发送给PC 机进行显示。实验显示在距离 80m 远处,系统仍能保持良好的通信质量。 关键词:ZigBee 协议栈;无线传感器网络;协调器;传感器节点中图分类号:TP393 文献标识码:A 文章编号:1674-6236(2012)05-0075-03 Design of wireless sensor networks based on ZigBee stack XU Zhen -feng ,YIN Jing -jing ,CHEN Xiao -lin ,ZHOU Quan (Department of Mechanical and Electrical Engineering ,Anhui Vocational College of Defense Technology ,Liu ’an 237011,China ) Abstract:First ,the basic topological structures of wireless sensor network and the structure of sensor node are introduced.The starting -up process of wireless sensor network based on ZigBee stack is explained in details ,including startup and establishing network of coordinator ,startup and joining network of sensor node ,binding between sensor nodes and coordinator ,and the process of terminal nodes sending data to coordinator.The wireless sensor network is designed based on ZigBee stack.Taking sampling temperature information as a example ,the coordinator can collect the information from sensor nodes ,and send them to PC by using RS232.The temperature information can be displayed in PC.The experiment shows that good communication quality of this system can be obtained ,although at the distance of 80meters.Key words:ZigBee stack ;wireless sensor network ;coordinator ;sensor node 收稿日期:2012-01-12 稿件编号:201201050 基金项目:安徽省高校省级优秀青年人才基金项目(2010SQRL202) 作者简介:徐振峰(1981—),男,山东郓城人,硕士,讲师。研究方向:无线传感器网络理论及应用。 无线传感器网络(Wireless Sensor Network ,WSN )是由部署在监测区域内大量廉价微型传感器节点组成,通过无线通信方式形成多跳、自组织网络系统,其目的是协作地感知、采集和处理网络覆盖区域中感知对象的信息,并发送给观察者[1]。 目前能够用于短距离无线传感网络的通信技术主要有5种[2]:Wi-Fi 技术、超宽带通信(Ultra Wideband ,UWB )技术、近场通信(Near Field Communication ,NFC )技术、蓝牙以及 ZigBee 技术。其中,ZigBee [3]是基于IEEE802.15.4的一种新兴 短距离无线通信技术,其特点是低功耗、低速率、低复杂度、低成本等。这些特点决定了ZigBee 技术非常适合应用于无线传感网络中,因此ZigBee 技术被认为是最有可能应用于工业监控、传感器网络、家庭监控、安全监控等领域的无线技术。在ZigBee 协议的制定中,IEEE802.15.4无线标准定义了物理层(Physical Layer ,PHY )和介质访问控制层(Medium Access Control Sub -Layer ,MAC ),而ZigBee 协议栈的网络层和应用 层是由ZigBee 联盟制定的。 支持ZigBee 协议的无线通信芯片主要有TI 公司推出的CC2420、CC2430、CC2530以及Freescale 半导体公司推出的MC13191、MC13192及MC13193等芯片。CC2430是世界上首 个单芯片ZigBee 解决方案,除了保持CC2420所包括的优良射频性能之外,其内部还集成了一个增强型8051内核,这使得 CC2430成为市面上最具有竞争力的ZigBee 无线收发芯片。 文中设计了基于ZigBee 协议栈的无线传感网络,该系统包括一个协调器和四个终端传感节点。以采集温度信息为例,实现了无线通信功能。协调器节点通过RS232串口,将收到的数据发送给PC 机进行处理及显示。 1 无线传感网络的结构 1.1 网络体系结构 无线传感网路中的基本单元是传感器节点,根据其在网 络中的所承担的任务不同,传感器节点可以分为3类:协调器、路由器和传感器节点。在网络中,协调器负责建立网络,允许路由器和传感器节点与其绑定,并接收路由器和传感器节点发送来的数据信息,以及传送给PC 机进行处理、存储等;传感器节点负责感知被测对象的物理信息,并将其无线 电子设计工程 Electronic Design Engineering 第20卷Vol.20第5期No.52012年3月Mar.2012 -75-

tcp、ip协议栈移植

This article was downloaded by: [University of Jiangnan] On: 27 March 2015, At: 06:51 Publisher: Taylor & Francis Informa Ltd Registered in England and Wales Registered Number: 1072954 Registered office: Mortimer House, 37-41 Mortimer Street, London W1T 3JH, UK Journal of Discrete Mathematical Sciences and Cryptography Publication details, including instructions for authors and subscription information: https://www.sodocs.net/doc/768400824.html,/loi/tdmc20 An abridged protocol stack for micro controller in place of TCP/IP R. Seshadri a a Computer Centre, S.V. University , Tirupati , 517 502 , India Published online: 03 Jun 2013. PLEASE SCROLL DOWN FOR ARTICLE

An abridged protocol stack for micro controller in place of TCP/IP R.Seshadri ? Computer Centre S.V .University Tirupati 517502India Abstract The existing TCP/IP protocol stack running in hosts takes lot of overhead while the node in network is for a speci?c purpose.For example transferring simple messages across network.If the node in the network is not a PC but,some thing like a micro controller,which measures some values and stores in its local memory,then it becomes lavishness in using the micro controller’s memory.As it is a node in a network,working with TCP/IP ,it should be able to transfer those values in the form of messages to other hosts which are in either local network or global network. But in micro controller terms the memory is expensive and compact.The existing TCP/IP stack consumes a few mega bytes of memory.Therefore it can’t be accommodated in the memory of micro controller.Hence one needs to reduce the memory consumption.In this regard,an abridged protocol which replaces the existing TCP/IP has been designed to suit the above needs.For this purpose,the TCP/IP have been combined with KEIL C51features for 8051micro controller to make it work in transferring messages in local area network as well as global network. The above scheme was implemented and tested and the system was working satisfac-torily.The results are found to be more effective in communicating information/message from the micro controller to a PC. Keywords :Ethernet,stack,Transmission Control Protocol (TCP ),Internet Protocol (IP ).Introduction to TCP/IP The name TCP/IP refers to a suite of communication protocols.The name is misleading because TCP and IP are the only two of the dozens of protocols that compose the suite.Its name comes from two of the most ?E-mail :ravalaseshadri@yahoo.co.in —————————————————– Journal of Discrete Mathematical Sciences &Cryptography Vol.9(2006),No.3,pp.523–536 c Taru Publications D o w n l o a d e d b y [U n i v e r s i t y o f J i a n g n a n ] a t 06:51 27 M a r c h 2015

相关主题