- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NS-2下的TCP和TCP Reno模块分析
NS-2简介
NS是由UC Berkeley开发的,基于C++和Otcl两种程序设计语言实现的网络环境模拟器,用于各种IP网络环境。目前NS实现了对许多网络协议的模拟,如TCP,UDP,和数据源发生器(traffic source)如FTP,WWW,Telnet,Web,CBR和VBR等。同时模拟了路由队列的管理机制,如Drop Tail,RED和VBR,也实现了Dijkstra和其他的路由算法。
本论文采用NS-2环境,分析了TCP和TCP Veno协议,并由此构造出NS-2下的TCP Veno协议环境。如果不做说明,本章及以后的TCP协议都是指的TCP Tahoe协议。
NS-2下的TCP模块分析
NS-2下的TCP模块介绍
本测试采用了NS-2.26环境,TCP及TCP模块放在ns-allinone-2.26\ns-2.26\tcp目录下,涉及tcp.h,tcp.cc,tcp-reno.cc三个文件。另外,各模块的默认参数文件ns-default.tcl放在ns-allinone-2.26\ns-2.26\tcl\lib目录下。由于只是用于网络模拟,这里的TCP模块是单向代理,发送端和接收端分离开,接收端不能发送数据(只能发送ACK),而发送端也不能接收数据(只能接收ACK)。单向连接对于我们的测试来说,是没有影响的。
TCP模块的tcp.cc和tcp.h文件包含TCP TAHOE及其各中改进版本可能用到的公用参数和公用子程序,改进版本包括TCP Vegas 、TCP Reno、NEW Reno,应用了其他一些改进算法的TCP如TCP ABS、TCP FACK、TCP QS等也用到了这些参数和子程序。在这里我们对其他的改进算法不进行分析,仅分析接收和运行TCP Veno有关的参数和子程序。
TCP与上层应用层的数据交换(如FTP等)使用了send_msg(nbytes,char*) , 由FTP调用,将FTP的数据发送到TCP层。而TCP在对FTP的数据进行分组处理后,与下层IP层进行通信,交换数据用到了底层的子程序send_one(*pkt,flags), 由TCP调用,用来将单个数据包发送到IP层,并由IP层进行转发到目的地。
TCP模块的分组头
NS-2采用了分组头的概念,用分组头代表一个分组,而没有具体的数据。发送和接收都只处理分组头,因为网络模拟是不需要具体的数据的,并且这种设计降低了计算机的开销,使单台计算机进行模拟网络成为可能。NS-2中,一个分组由多个分组头构成,如一个分组可以包括IP分组头、TCP分组头、RTP分组头、AODV分组头等。如果只传TCP,就可以去掉其他分组头。
TCP的分组头在tcp.h中定义。如下:
struct hdr_tcp {
double ts_; /* 发端发送时盖的时间戳*/
double ts_echo_; /* 对端收到时盖的时间戳 */
int seqno_; /* 本数据包的发送序号*/
int reason_; /*重传的原因*/
…
static int offset_; // 本分组头在分组中的偏移量
inline static int offset() { return offset_; } //取得偏移量值
inline static hdr_tcp* access(Packet* p) { //用于从分组获取本TCP分组头
return (hdr_tcp*) p-access(offset_);
}
/* 用于获取前面参数的子程序 */
double ts() { return (ts_); }
double ts_echo() { return (ts_echo_); }
int seqno() { return (seqno_); }
int reason() { return (reason_); }
…
};
其中ts_、ts_echo_用于计算rtt时间,offset_记录下本TCP分组头在该分组中的偏移,而acess(*p)则根据此偏移量来获取该分组。TCP的发端和收端就是通过发送本端TCP分组头和接收对端分组头,来获取数据包的序号等信息,完成双方的通信。
TCP模块参数介绍
除了分组头的参数,TCP中的大量参数在TCP代理的类定义class TcpAgent中给出。下面列出了常用的参数:
TracedInt t_rtt_; /* 往返时间RTT */
TracedInt t_srtt_; /
您可能关注的文档
最近下载
- 第二单元 项目1 《 获取长城研学路线-互联网信息有哪些信誉好的足球投注网站》教学设计 2024—2025学年安徽版(2024)初中信息技术七年级上册.docx VIP
- 江苏省2024普通高中学业水平合格性考试英语真题卷 .pdf
- 第二单元+项目1+《+获取长城研学路线-互联网信息有哪些信誉好的足球投注网站》课件+2024—2025学年安徽版(2024)初中信息技术七年级上册+.pptx VIP
- 浙江交投高速公路建设管理有限公司部分中层管理岗位公开竞聘【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 天然气对井内压力的影响(五)课件.pptx VIP
- 妇产科医疗质控总结.pptx VIP
- 企业内部控制指引.doc
- 山东大学齐鲁医院诊断证明.docx VIP
- 心胸外科出科.pptx VIP
- 2024贵州遵义市面向优秀村(社区)干部专项招聘乡镇(街道)事业单位工作人员61人笔试备考题库及答案解析.docx VIP
文档评论(0)