- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NS2中TCP源代码分析
NS2中TCP源代码分析
1:NS2简介
NS2是一个开放源码的多协议网络模拟软件,来源于1989年的Real Network Simulator项目,经过多年的发展,于1995年得到施乐公司(Xerox)的支持,加入VINT项目。NS2一直以来都在吸收世界各地研究者的成果,包括UCB、CMU等大学和SUN等公司的无线网络方面的代码,因此NS2一直都在不断的被更新和完善。NS2是一个面向对象的、离散事件驱动的网络环境模拟工具,可以完整地模拟整个网络环境。
NS2使用一整套C++类库实现了绝大多数常见的网络协议以及链路层的模型,如:有线网络或无线网络的TCP、UDP、路由、多播等多种协议模型,利用这些类库的实例就可以搭建起整个网络的模型,而且包括详尽的细节实现。NS2使用了两种编程语言,OTcl(具有面向对象特性的Tcl脚本程序设计语言)和C++,NS2采用这两种语言是因为仿真工具有两方面的事情要做:一方面,具体协议的模拟和实现,这需要一种能高效率的处理字节、报头等信息的程序设计语言,即对运行速度非常重要,而运行模拟环境的时间、寻找和修复Bug的时间,以及重新编译和运行的时间不是很重要,在这种情况下,C++语言是非常合适的;另一方面,许多网络中的实验或研究工作主要是围绕着网络组件和环境的具体参数的设置和改变而进行的,需要在短时间内快速的开发或模拟出所需要的网络环境,并且方便的修改和发现,在这种情况下,网络环境设置的时间就显得重要了,而脚本语言在这方面有很大的优势,具有面向对象特性的Tcl脚本语言可以充分的满足此需求。C++和OTcl两种语言的对象和变量是通过TclCL关联起来的,C++的类和对象为编译类和编译对象,相反地OTcl的类和对象为解释类和解释对象,TclCL是在OTcl基础上的封装。通过下面的NS2架构图来理解几者之间的关系。对NS2使用者来说,OTcl脚本语言用于实现网络拓扑部分,OTcl是架构在Tcl之上的面向对象后的延伸,事件调度器和网络组件这两部分主要用C++编写。
C++在最底层则是表示NS2的核心主要就是C++。TclCL是连接OTcl和C++的桥梁,最后搭配用户接口就构成了NS2。
2:NS2中TCP源码分析
在源码包中,TCP源码放置在ns-allinone-2.29\tcp文件夹里。打开tcp.cc
#include stdlib.h
#include math.h
#include sys/types.h
#include ip.h
#include tcp.h
#include flags.h
#include random.h
#include basetrace.h
#include hdr_qs.h
int hdr_tcp::offset_;
static class TCPHeaderClass : public PacketHeaderClass {
public:
TCPHeaderClass() : PacketHeaderClass(PacketHeader/TCP,
sizeof(hdr_tcp)) {
bind_offset(hdr_tcp::offset_);
}
} class_tcphdr;
static class TcpClass : public TclClass {
public:
//存储类名Agent/TCP至 classname_
TcpClass() : TclClass(Agent/TCP) {}
TclObject* create(int , const char*const*) {
return (new TcpAgent());
}
} class_tcp;
TcpAgent::TcpAgent()
: Agent(PT_TCP),
t_seqno_(0), t_rtt_(0), t_srtt_(0), t_rttvar_(0),
t_backoff_(0), ts_peer_(0), ts_echo_(0),
tss(NULL), tss_size_(100),
rtx_timer_(this), delsnd_timer_(this), burstsnd_timer_(this),
dupacks_(0), curseq_(0), highest_ack_(0), cwnd_(0), ssthresh_(0),
maxseq_(0), count_(0), rtt_active_(0), rtt_seq_(-1), rtt_ts_(0.0),
lastreset_(0.0), closed_(0), first_decreas
您可能关注的文档
最近下载
- 智能制造工程专业培养方案.PDF
- 新教材高中语文人教版选择性必修上册检测-第1单元测试卷-含解析.pdf VIP
- 检察院书记员测试题库及答案.pdf
- 2023年人民检察院公开招聘用制书记员考试题及答案.pdf VIP
- 中华民族现代文明有哪些鲜明特质建设中华民族现代文明的路径是什么.docx VIP
- 《旅行社计调业务》项目三任务3-4国内组团计调操作流程.ppt
- 全国青少年科技创新大赛样稿04附件研究日记6.pdf
- 机械维修合同范本5篇.docx VIP
- 2024年云南省三校生教育类模拟考试复习题库(刷题600题).docx
- 2023—2024学年湖南省五市十校教研教改共同体高二上学期期中联考数学试卷.doc VIP
文档评论(0)