NS2中数据包Packet的分析

NS2中数据包Packet的分析

ID:40227785

大小:224.00 KB

页数:6页

时间:2019-07-27

NS2中数据包Packet的分析_第1页
NS2中数据包Packet的分析_第2页
NS2中数据包Packet的分析_第3页
NS2中数据包Packet的分析_第4页
NS2中数据包Packet的分析_第5页
资源描述:

《NS2中数据包Packet的分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、NS2中数据包packet类结构图: packet类中的access函数如下:inlineunsignedchar*access(intoff)const{    if(off<0)      abort();      return(&bits_[off]);}structhdr_cmn(即共用common头)中的access函数如下:inlinestatichdr_cmn*access(constPacket*p){    return(hdr_cmn*)p->access(offset_);}从以上的函数

2、可以看出只要给出特定的报头在packet中的偏移量offset_,立刻就能够取得指向该报头的指针(通过强类型转换,原理有点类似把一个子类强类型转换为其父类),从而访问或设置该报头内容。常见TCL脚本中有如下语句:remove-all-packet-headersadd-packet-headerAODVARP...setns[newSimulator]其中涉及到的函数如下:procadd-packet-headerargs{    foreachcl$args{        PacketHeaderManag

3、ersettab_(PacketHeader/$cl)1    }}#add-packet-header函数把要激活的报头对应的tab_数组元素置1脚本中newSimulator的工作之一就是创建包结构:Simulatorinstproccreate_packetformat{}{     PacketHeaderManagerinstvartab_      setpm[newPacketHeaderManager]      foreachcl[PacketHeaderinfosubclass]{     

4、      if[infoexiststab_($cl)]{                  setoff[$pmallochdr$cl]  #取得当前子报头在整个packet中的偏移                  $cloffset$off     #把这个赋给当前的子报头中的offset变量            }       }      $selfsetpacketManager_$pm}#下面的函数取得当前子报头在整个packet中的偏移PacketHeaderManagerinstproca

5、llochdrcl{      setsize[$clsethdrlen_]   #取得子报头$cl的长度hdrlen_      $selfinstvarhdrlen_      #注意此处hdrlen_变量是PacketHeaderManager的      setNS_ALIGN8      setincr[expr($size+($NS_ALIGN-1))&~($NS_ALIGN-1)]       #计算偏移,使用了向上进位保证了,incr的长度是一个字节(8bit)的倍数。      setbase

6、$hdrlen_        incrhdrlen_$incr  #hdrlen_加上偏移      return$base      #返回当前偏移}对于计算偏移NS手册上有如下表述:Theprocedurekeepsarunningvariablehdrlen_withthecurrentlengthofBOBasnewpacketheadersareenabled.Italsoarrangesfor8-bytealignmentforanynewly-enabledpacketheader.Thisis

7、neededtoensurethatwhendouble-worldlengthquantitiesareusedinpacketheadersonmachineswheredouble-wordalignmentisrequired,accessfaultsarenotproduced. 综上取得包中子报头的基本思路:首先设置包结构(packet)的报头中含有多少个子报头,然后初始化包结构,把各个子报头的offsize字段设置成正确的偏移量。然后用access函数就可以很方便地访问各个子报头了。2.移动节点的

8、通信过程:                                      两个对等无线节点的结构图                                  两个移动节点之间的通信过程图3.每个层对packet的设置: 总结:NS2中,packet结构在一次模拟中保持不变,packet在网络各个层次流动时,唯一的变化就是各个子报头中的内容改变了。即传输层把IP报头设

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。