已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 印前处理和制作员岗中交接考核试卷含答案
- 配电网设备运维员岗中水平评估考核试卷含答案
- 绒线编织拼布工测试验证评优考核试卷含答案
- 附着升降脚手架安装拆卸工岗位事故处理考核试卷含答案
- 细菌性疫苗生产工创新思维知识考核试卷含答案
- 橡胶半成品生产工安全意识测试考核试卷含答案
- 电商咨询师技术理论测试考核试卷含答案
- 健康运动测试题及参考答案
- 2025年甘肃省陇南地区康县数学四下期末综合测试模拟试题(含答案解析)
- 2025年澄江县三年级数学第二学期期中考试试题(含答案)
- 《江苏省建筑施工高处坠落预防措施图集》
- 矿区钻探施工方案(3篇)
- 电厂汽机培训课件
- 双电源使用管理制度
- 公司化妆品采购管理制度
- CJ/T 358-2019非开挖工程用聚乙烯管
- 危大工程巡视检查记录表 (样表)附危大工程安全监管及检查要点
- 电子电工产业概论 课件全套 陈芳芳 学习领域1-5 产业基本概况 - 职业岗位
- 2024秋新人教版数学七年级上册教学课件 6.3.2 第1课时 角的比较与运算
- 部编版四年级上册语文《现代诗二首》
- UPVC管粘接施工工艺
评论
0/150
提交评论