计算机网络实验3..docxVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机网络实验3.

一、实验目的: 学习TCP的拥塞控制机制并了解TCP Tahoe和TCP Reno协议的运行机制。二、实验环境 Ubuntu 虚拟机 NS2软件模拟平台三、背景知识 TCP基于窗口的拥塞控制策略1.1 加法增加乘法减少(AIMD)窗口算法 TCP是Internet中最流行的端到端传输协议,为主机之间提供可靠按序的传输服务。在现有的TCP/IP协议体系下,TCP拥塞控制机制主要基于加法增加乘法减少(AIMD)算法。在该算法中主要用到三个窗口变量: (1)拥塞窗口(cwnd):限定源端在拥塞控制中在一定时间内允许传送的最大数据量,是来自源端的流量控制。 (2)通告窗口(awnd):连接建立及传输过程中,接收端向源端通告的最大可接收速率,是来自接收端的流量控制。 (3)有效窗口(win):源端数据发送的实际窗口大小,限定为win=min(cwnd,awnd)。由于计算机计算能力和存储能力的提高,通告窗口一般都比较大,因此当前发送窗口的大小大多数情况下等于拥塞窗口的大小。 AIMD的具体工作过程为: (1)源端每收到一个ACK,拥塞窗口按下式增加: Incr=MSS×(MSS/cwnd) (MSS为分组大小) cwnd=cwnd+Incr 也就是,如果每个发出的分组都在最近的RTT(往返时延)时间内获得确认,源端就将cwnd增加1,即加法增加。 (2)当发生超时,TCP将超时看作拥塞的标志,并减小发送速率。每发生一次超时,源端重新计算拥塞窗口值: cwnd=cwnd/2 也就是,一次超时,拥塞窗口值减为当前值的一半,即乘法减少。1.2 TCP拥塞控制的四个阶段a 启动阶段 当连接刚建立或超时时,进入慢启动阶段。 当新建TCP连接时,拥塞窗口(cwnd)被初始化为一个数据包大小。源端按cwnd大小发送数据,每收到一个ACK确认,就增加一个数据包发送量,这样慢启动阶段cwnd随RTT呈指数级增长。 慢启动采用逐渐增大cwnd的方法,可以防止TCP在启动一个连接时向网络发送过多的数据包而造成不必要的数据丢失和网络拥塞,并且它还能够避免采用单纯的AIMD算法造成的吞吐量增加过慢的问题。 为了防止cwnd的无限制增长引起网络拥塞,引入一个状态变量:慢启动阈值ssthresh。 当cwndssthresh时,使用上述的慢启动算法,cwnd随RTT呈指数增长。 当cwndssthresh时,使用拥塞避免算法,减缓cwnd的增长速度。b 拥塞避免阶段 当TCP源端发现超时或收到3个相同的ACK确认帧时,即认为网络将发生拥塞,此时进入拥塞避免阶段。 在拥塞避免阶段,慢启动域值ssthresh将被设置为当前cwnd的一半,当发生超时时,cwnd被置为初始值1。此时,如果cwndssthresh,TCP重新进入慢启动过程;如果cwnd =ssthresh,则执行拥塞避免算法,即cwnd在每次收到一个ACK确认时只增加1/cwnd个数据包。拥塞避免阶段cwnd随RTT呈线性增长。c、d 快速重传和快速恢复阶段 在拥塞避免阶段,当数据包超时时,cwnd被置为1,重新进入慢启动阶段,这会导致过大地减小发送窗口尺寸,降低TCP连接的吞吐量。因此,引入了快速重传和快速恢复机制。 在快速重传阶段,当源端收到3个或3个以上重复的ACK时,就判定数据包丢失,同时将ssthresh设置为当前cwnd的一半,并重传丢失的包,进入快速恢复阶段。 在快速恢复阶段,每收到重复的ACK,则cwnd加1;收到非重复ACK时,置cwnd=ssthresh,转入拥塞避免阶段;如果发生超时重传,则置ssthresh为当前cwnd的一半,cwnd=1,重新进入慢启动阶段。这种方法避免了数据包超时后就重新进入慢启动阶段,提高了TCP连接的吞吐量。四、实验步骤实验拓扑图如下: 打开虚拟机,通过ns软件模拟平台运行lab2.tcl Tahoe如下: 其中:TCL程序代码:if {$argc != 1}{putsUsage: ns lab11.tcl TCPversionputsExample:ns lab11.tcl Tahoe or ns lab11.tcl Renoexit}set par1 [lindex $argv 0]#产生一个仿真的对象set ns[new Simulator]#打开一个trace file, 用来记录封包传送的过程set nd [open out-$par1.tr w]$ns trace-all $nd#打开一个文件用来记录cwnd 变化情况set f0 [open cwnd-$par1.tr w]#定义一个结束的程序proc finish{}{global ns nd fo tcp#显示最后的平均吞吐量puts[format average throug

文档评论(0)

cjbckk + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档