




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NS2中数据包packet类结构图: packet类中的access函数如下:inline unsigned char* access(int off) const if (off access(offset_); 从以上的函数可以看出只要给出特定的报头在packet中的偏移量offset_,立刻就能够取得指向该报头的指针(通过强类型转换,原理有点类似把一个子类强类型转换为其父类),从而访问或设置该报头内容。常见TCL脚本中有如下语句:remove-all-packet-headersadd-packet-header AODV ARP.set ns new Simulator其中涉及到的函数如下:proc add-packet-header args foreach cl $args PacketHeaderManager set tab_(PacketHeader/$cl) 1 #add-packet-header函数把要激活的报头对应的tab_数组元素置1脚本中new Simulator的工作之一就是创建包结构:Simulator instproc create_packetformat PacketHeaderManager instvar tab_ set pm new PacketHeaderManager foreach cl PacketHeader info subclass if info exists tab_($cl) set off $pm allochdr $cl #取得当前子报头在整个packet中的偏移 $cl offset $off #把这个赋给当前的子报头中的offset变量 $self set packetManager_ $pm#下面的函数取得当前子报头在整个packet中的偏移PacketHeaderManager instproc allochdr cl set size $cl set hdrlen_ #取得子报头$cl的长度hdrlen_ $self instvar hdrlen_ #注意此处hdrlen_变量是PacketHeaderManager的 set NS_ALIGN 8 set incr expr ($size + ($NS_ALIGN-1) & ($NS_ALIGN-1) #计算偏移,使用了向上进位保证了,incr的长度是一个字节(8 bit)的倍数。 set base $hdrlen_ incr hdrlen_ $incr # hdrlen_加上偏移 return $base #返回当前偏移对 于计算偏移NS手册上有如下表述:The procedure keeps a running variable hdrlen_ with the current length of BOB as new packet headers are enabled. It also arranges for 8-byte alignment for any newly-enabled packet header. This is needed to ensure that when double-world length quantities are used in packet headers on machines where double-word alignment is required, access faults are not produced.综上取得包中子报头的基本思路:首先设置包结构(packet)的报头中含有多少个子报头,然后初始化包结构,把各个子报头的offsize字段设置成正确的偏移量。然后用access函数就可以很方便地访问各个子报头了。2.移动节点的通信过程: 两个对等无线节点的结构图 两个移动节点之间的通信过程图3.每个层对packet的设置:总结:NS2中,packet结构在一次模拟中保持不变,packet在网络各个层次流动时,唯一的变化就是各个子报头中的内容改变了。即传输层把 IP报头设置了,TCP协议把TCP报头设置了,网络层路由协议把相应的路由协议报头设置了,LL层根据IP地址把Mac包头的Mac地址等正确设置了;并没有加报头拆报头的过程。附录:实际中的数据包结构(以下部分资料来源网上)1. IP报头格式:1)版本字段标志:该分组采用的IP数据包结构的版本号, 对于常用的IPv4来说,该字段 的内容为4;对于IPv6来说,该字段的内容为6。2)IHL字段:报头的长度, 以4Bit为单位,最小为5,最大值为l5, 即报头的最大长度为60Bit。3)服务类型字段: 主机能告诉子网它需要的服务。4)总长: 该数据包(包括报头和报文)的长度,最大是65 535Bit。5)标志字段: 主机判断新来的分段属于哪个分组,所有属于同一个分组的分段应具有同样的标志值。6)DF MF和分段偏移字段: 指示该分组是否需要分段, 是否全部到达, 该分段处于分组的位置。7)生命期字段: 用来限制分组生命周期的计数器,最长生命周期为255 s。该字段将在每个节点中被递减处理, 当它被减到0时,该分组将被丢弃。8)协议:该数据包采用的是哪一种TCPIP应用协议,对于TCP协议,该字段为6;对于 UDP协议,该字段为ll。9)头校验:校验头部,主要用于检测以路由器中的内存坏字带来的错误。10)源地址和目的地址: 该数据包的来源和去向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子保单健康委托书
- 南京市江宁区事业单位招聘卫技人员笔试真题2024
- 社区社区服务研究管理基础知识点归纳
- 2024年山东石油化工学院辅导员考试真题
- 石大学前儿童保育学课外必读:关于幼儿是否该用含氟牙膏的讨论
- 2025年二级造价师检测试题
- 纪念中国人民抗日战争胜利80周年心得体会
- 生物炼制技术应用-洞察阐释
- 遗传学在医学教育中的定位与角色演变
- 中药企业经营管理方案
- 生物实验用试剂与耗材购销协议
- 压力表自校操作规程
- 2024年陕西省中考化学试卷真题(含答案)
- 江西省南昌市南昌县2022-2023学年八年级下学期期末英语试题
- 2024重度哮喘诊断与处理中国专家共识解读课件
- 2024国内各省市五星级酒店分布表全套
- 一例肾破裂伴胸腔积液患者疑难病例讨论
- 成人住院患者静脉血栓栓塞症Caprini、Padua风险评估量表
- JJG 621-2012 液压千斤顶行业标准
- 页岩气及其成藏特征
- RFJ 006-2021 RFP型人防过滤吸收器制造与验收规范(暂行)
评论
0/150
提交评论