XINU的TCP实现中的一些问题.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
技术报告 XINU的TCP实现中的一些问题 清华大学计算机系 章淼 1999年4月11日 简介: 本文指出了XINU操作系统中TCP实现的一些问题,描述了发现错误的过程,分析了错 误产生的原因,并提出了解决的方法。 关键词: TCP的实现 XINU 一、背景介绍 TCP(Transmission Control Protocol)虽然在1981年就由RFC793提出了标准,但是在目 前TCP众多的实现版本中仍然存在着大量的问题。即使是已经相当成熟的BSD版本,最近也有 人指出了问题[Allman97]。这种现象是由TCP协议本身的复杂性所决定的。由于TCP协议在目 前的Internet网的TCP/IP协议族中所处的重要地位,发现和解决TCP实现中的错误,对提高 网络传输的可靠性和效率具有十分重要的意义。为此IETF(the Force)有专门的TCP Implementation Work Group,研究TCP实现的改进和其中存在的问题, 在1999年3月的RFC2525(Known TCP Implementation Problems)[RFC2525]指出了一些在TCP 实现中经常出现的错误,希望减少由于实现协议错误而引起的网络中的不必要的传输和连接 的错误,以保证整个Internet的稳定性。 XINU操作系统是一个以教学为目的开发的操作系统。在Douglas E. Comer的一系列关于 操作系统和网络的教材中都使用XINU作为讲解的范例。XINU操作系统出于教学的目的,具有 较好的模块性和可读性,是研究网络和操作系统具体实现的一个很好的对象。在Douglas E. Comer所著的《Internetworking with TCP/IP》的第二卷《Design Internals》中对XINU操作系统中的网络实现进行了详细的讲解。这本教材被公认为网络实 现方面的经典教科书。 为了深入的了解TCP实现中的细节,并进行TCP性能上的研究,我们将XINU中的TCP实现 剥离出来,在Sun Solaris系统上实现的调试环境上进行了调试和测试,发现在XINU的TCP 实现中存在一系列的问题。其中有些问题是相当严重的,甚至会导致正常传输的失败。 XINU中的错误在一些互连网站上也可以见到(见[bugs.html])。本文提出的问题,大 部分在这些网站中没有出现过。希望能够对加深对TCP的理解有所帮助。 二、问题的发现、分析和解决 2.1 MSS协商上的错误 2.1.1发现 在TCP建立连接的过程中,连接的双方会对MSS(Maximus Segment Size,最大段长)进 行协商。我们发现,虽然在SYN报文的选项中,我们指定了最大段长为1460字节,但对截取 的报文的分析发现,实际的使用的MSS为1440字节。 2.1.2分析 通过对代码的分析,我们发现XINU在MSS的理解上存在问题。在RFC879[RFC879]中指出, MSS只是段内数据的字节数,而不包括TCP报头或者IP报头。而XINU误认为MSS是TCP报文的总 长度,于是它在计算每个报文能够发送的最大数据量时,又减去了TCPHLEN(20个字节)。这 个错误虽然不是致命的错误,但是会降低TCP传输的效率,因为每个报文所能携带的数据量 减少了。 2.1.3解决 这个错误只要改变程序中计算MSS的一行代码就可以了。 2.2重传时钟管理上的问题 2.2.1发现 为了检验TCP实现的健壮性,我们在试验中指定了丢包率,由TCP的底层-IP层按丢包率 随机的丢弃发送的报文。在试验中,我们发现,有时传输回莫名奇妙的中断,明明数据没有 传完,但是传送过程却结束了,连接也没有关闭。通过大量的分析,我们发现XINU的实现中 在重传时钟的管理上存在巨大的问题,而这个问题是致命的。 2.2.2分析 为了说明问题,我们首先对XINU的重传机制作一个简单的介绍。为了保证数据的可靠传 输,TCP协议[RFC793]要求,如果数据在传送过程中出现丢失的情况,TCP要负责数据的重传。 这里使用了重传时钟的概念,重传时钟的大

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档