`
阅读更多
网络分层设计与TCP协议实现
读《END-TO-END ARGUMENTS IN SYSTEM DESIGN》有感

目 录 1
1.论文回顾 2
2.网络设计的分层思想 3
3.TCP协议的提出 4
4.注意的问题 5
5.总结 6


1. 论文回顾
   《END-TO-END ARGUMENT IN SYSTEM DESIGN》写于1984年,当时计算机网络技术还相当不成熟,但是作者这篇文章对于计算机分层结构的形成具有直接的重要的作用。
    文章主要提出了在分布式系统下端到端的系统设计原则,而这也成为了Internet日后主要的设计原则。在Internet设计原则中,考虑最多的两个因素就是代价与性能。作为当时网络发展的两个趋势:利用底层网络实现和高层网络实现,作者从位错误恢复、安全加密、重复消息限制、系统崩溃、确认机制等进行比较,得出进行端到端系统设计的优越性。即网络设计应当尽量简单化,可以将一部分功能赋予高层网络进行实现,反而能得到更大的效率。
    首先作者就端到端系统传输的整个过程分为以下几步:设有主机A与主机B进行通信。 A主机与B主机之间的信息传递分以下几步:

图1.1 端到端系统文件传输过程
这个利用端到端原则进行的传送的应用,即小心的文件传输。这种应用主要的威胁有:本身文件出错、传输过程出错、接收过程出错和数据安全等。
现有的能够保证数据传输正确性和安全性的做法主要有:
一、 进行多次文件复制,即通过简单的多次传输进行数据完整性和安全性的保证;
二、 进行超时重传,设定ACK进行确认,根据请求进行重发;
三、 进行数据的检查和操作,以保证数据的正确性。
虽然这些方法去除一些威胁,但不足以去除所有的威胁。
于是作者对在底层实现这些方法和在高层实现这些方法做了比较,得出一下结论:
一、 通常利用底层来实现这些功能可以很大程度上提高整个系统的性能,但是代价太大;
二、为了在一个原本不可靠的网络上实现可靠传输,就需要一个独立于网络层的可靠传输协议和一个端系统的应用层的错误检测功能。即利用高层来实现数据传输等功能也一样能够保证数据的可靠传输。
三、与底层方法相比,实现的效率和所付出的代价之比,高层明显要更好。
   接下来作者分别对下列几个功能在底层和高层的实现做了比较:
一、传送过程的可靠保证,在高层通过RFNM机制等能实现对数据的可靠性保证;
二、数据的安全传送过程的加密与解密,通信系统本身无须为所有的流量进行自动加密,这些操作可在高层完成;
三、重复信息的限制,由于提供重复信息后还可能收到以前的请求数据,可以通过高层来鉴别;
四、保证先进先出的传送顺序,信息通过不同的链路到达后顺序可能被打乱,可以在高层进行顺序排序。、
五、传送管理,底层的核心功能应该尽量简易,不提供传送确认。
此后作者就端到端系统在其他系统领域的应用进行了分析。他指出了ACK机制和端到端加密思想的来源和讨论。同时指出只有在航空或者金融领域才有足够的经济实力能够利用底层来进行数据的可靠传输,而端到端系统已经能够满足错误控制和纠错处理方面的要求了。
    最后作者总结了端到端原则犹如奥卡姆剃刀(Occam's Razor),即如果在底层设计的功能已经超过它所能提供的必要核心业务了,那么可以考虑在其他层进行此类功能的设计。而改变的做法就是设计一个端到端的系统,负责数据的可靠传输等。
2. 网络设计的分层思想
  从作者的设计理念我们不难看出,作者为同年提出的ISO的网络七层结构的提出奠定了理论基础。作者在文章最后也指出,对于“时下”流行这种基于网络分层的想法是可取的,这样可以加强模块间的分工合作。网络分层的优越性,正是体现在底层实现的复杂和代价昂贵,因此网络设计的简易化和接口化已经成为了网络设计的基本原则。
   众所周知,网络传输是一种不可靠的传输,因此在网络的最核心的重要的部分只可以做数据的传输而不能去做一些特殊的应用,最终网络需要检查是否进行了正确的传输,这里也只有靠网络的高层去判断,并由此出现网络高层的确定重传机制等。因此作者提出网络的核心部分(交换与路由)应当只需要去做最迫切而且是最简单的任务-数据传输,而不应该将复杂的任务赋予底层的不可靠网络传输,使得网络的核心复杂度降低,同时也提高了网络的灵活性,使得网络的升级和维护都变得更加容易。
   端到端的设计原则,屏蔽了底层硬件和网络状况的复杂性,将数据传输过程中的完整性和安全性等要求交付于网络高层负责,从而大大简化了网络的核心复杂度。端到端原则主要包括三个设计理念:
1. 降低网络核心复杂度。互联网的目的之一是在应用程序中隐藏所有的物理细节,因此对于在传输过程中可能出现的不可靠因素,我们只有在端系统才知道,因此我们赋予底层的操作也越简单越好。Internet将确认传输正确的任务交给端系统去完成,从而最大的保证了传输的可靠性和完整性。可以通过确认和超时重传等机制来保证传输的正确,因此建立一个独立于网络层和物理层的可靠传输协议和错误检测功能就很有必要。
2. 数据传输的尽力传输服务。对于整个网络传输来说,对于网络层及其底层的要求只是提供尽可能打的数据传输速率,至于数据的完整性和正确性要求可以交付给高层即端系统来负责。后面将要介绍的TCP协议正是基于这样一样思想而设计出来的。
3. 端到端地址的透明性。端到端设计的原则同样有给Internet上的主机分配唯一的地址,这样在传输过程中不需要在中间的节点或者转发节点上对包的内容进行修改。而且端系统之上的应用程序也不需要知道实际传输的具体线路,为实际应用带来了方便。
因此网络的分层和模块化趋势是端到端原则在Internet体系的具体体现,这样不仅将底层和网络层解放出来专注于数据传输服务,更使得整个网络服务质量的保证的核心功能集中于端系统,大大的减少了成本和简化了网络架构。
3.TCP协议的提出
正是基于文章所提出的端到端原则,90年代最流行的TCP协议以及相应的TCP/IP分层也就应运而生了。TCP协议能够实现端到端系统所要求的可靠数据传输功能,从而让底层协议脱离于数据的可靠性服务的保证,专注于网络速率的最大化。
TCP实现了网络的分层结构,整个网络被划分为四层,共有应用层、传输层、网络层和链路层。其中传输层实现的就是文章所提及的端系统所要求的功能。不同层次的协议负责不同的通信功能,高层协议以低层协议的服务为基础,低层协议接收来高层协议的命令和请求。其中传输层主要负责两台主机间的应用程序提供端到端的通信,在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
TCP为两台主机提供高可靠性的数据通信,它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此底层和网络层可以忽略这些细节。为了提供这种可靠的服务,达到文章中所要求的传输服务要求,TCP采用了超时重传、发送和接收端到端的确认分组等机制。下面就具体实现进行分析:
一、 关于传送过程的可靠性保证。TCP协议将数据分割成最适合发送的数据块,我们称之为报文段。然后发出一个段后,TCP就启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。而当另一端的TCP收到该报文段后,通常推迟几分之一秒后会进行确认发送。
二、数据的安全传送过程的加密与解密。TCP首先将会进行首部和数据的检验和,目的是检测数据在传输过程中的任何变化。如果检测段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。因此在应用层加密后的数据在运输层可以得到很好的数据完整性保证。
三、重复信息的限制。如果TCP收到重复的报文段,TCP的接收端必须丢弃重复的数据。
四、保证先进先出的传送顺序。既然TCP报文段作为IP数据包来发送,而IP数据包的达到可能会失序,因此TCP的报文段到底也可能会失序。因此TCP将对接收到的数据通过序号技术进行重新排序,将收到的数据以正确的顺序交给应用层。
五、传送管理。此外针对网络传送情况的复杂性,TCP还提供了流量控制和拥塞控制等。利用滑动窗口原理,TCP接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
4.注意的问题
   在TCP可提供可靠、有序传输服务,实现端到端思想的同时,我们也应该看到TCP的一些不足。
   由于采用了滑动窗口机制,它只能保证一个消息从节点A到节点B被正确传递,从节点B到节点C也能正确传递,但是它不能保证在节点B本身不出错。正是由于这些窗口系统的脆弱性,仍然需要提供真正的物理层端的端到端的检测以保证可靠/有序的服务,即底层的链路层已实现了这种功能。比如TCP/IP协议的链路层一样会进行差错检测(CRC)、流量控制等的服务。
5.总结
   本文主要从《END-TO-END ARGUMENTS IN SYSTEM DESIGN》一文出发,作者阐述了在Internet系统设计中最重要的原则之一-端到端理论。简而言之,端到端了理论说明有些功能(比如提供可靠/有序的服务)不应该在系统的较低层提供,除非能在低层完全正确的被实现,而且花费的代价不是太大。这条原则促使了TCP协议的诞生,解决了如何在一个不可靠的网络通信信道上进行了可靠的网络传输服务。
    这条原则在设计RISC系统的原则上也一样适用,当然这条原则并不是绝对的,有时为了性能优化的需要也允许在较低层提供一些不完全的功能。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics