网络上Endtoend的感想.docx
《网络上Endtoend的感想.docx》由会员分享,可在线阅读,更多相关《网络上Endtoend的感想.docx(6页珍藏版)》请在冰豆网上搜索。
网络上Endtoend的感想
网络分层设计与TCP协议实现
读《END-TO-ENDARGUMENTSINSYSTEMDESIGN》有感
目录1
1.论文回顾2
2.网络设计的分层思想3
3.TCP协议的提出4
4.注意的问题5
5.总结6
1.论文回顾
《END-TO-ENDARGUMENTINSYSTEMDESIGN》写于1984年,当时计算机网络技术还相当不成熟,但是作者这篇文章对于计算机分层结构的形成具有直接的重要的作用。
文章主要提出了在分布式系统下端到端的系统设计原则,而这也成为了Internet日后主要的设计原则。
在Internet设计原则中,考虑最多的两个因素就是代价与性能。
作为当时网络发展的两个趋势:
利用底层网络实现和高层网络实现,作者从位错误恢复、安全加密、重复消息限制、系统崩溃、确认机制等进行比较,得出进行端到端系统设计的优越性。
即网络设计应当尽量简单化,可以将一部分功能赋予高层网络进行实现,反而能得到更大的效率。
首先作者就端到端系统传输的整个过程分为以下几步:
设有主机A与主机B进行通信。
A主机与B主机之间的信息传递分以下几步:
图1.1端到端系统文件传输过程
这个利用端到端原则进行的传送的应用,即小心的文件传输。
这种应用主要的威胁有:
本身文件出错、传输过程出错、接收过程出错和数据安全等。
现有的能够保证数据传输正确性和安全性的做法主要有:
一、进行多次文件复制,即通过简单的多次传输进行数据完整性和安全性的保证;
二、进行超时重传,设定ACK进行确认,根据请求进行重发;
三、进行数据的检查和操作,以保证数据的正确性。
虽然这些方法去除一些威胁,但不足以去除所有的威胁。
于是作者对在底层实现这些方法和在高层实现这些方法做了比较,得出以下结论:
一、通常利用底层来实现这些功能可以很大程度上提高整个系统的性能,但是代价太大;
二、为了在一个原本不可靠的网络上实现可靠传输,就需要一个独立于网络层的可靠传输协议和一个端系统的应用层的错误检测功能。
即利用高层来实现数据传输等功能也一样能够保证数据的可靠传输。
三、与底层方法相比,实现的效率和所付出的代价之比,高层明显要更好。
接下来作者分别对下列几个功能在底层和高层的实现做了比较:
一、传送过程的可靠保证,在高层通过RFNM机制等能实现对数据的可靠性保证;
二、数据的安全传送过程的加密与解密,通信系统本身无须为所有的流量进行自动加密,这些操作可在高层完成;
三、重复信息的限制,由于提供重复信息后还可能收到以前的请求数据,可以通过高层来鉴别;
四、保证先进先出的传送顺序,信息通过不同的链路到达后顺序可能被打乱,可以在高层进行顺序排序。
五、传送管理,底层的核心功能应该尽量简易,不提供传送确认。
此后作者就端到端系统在其他系统领域的应用进行了分析。
他指出了ACK机制和端到端加密思想的来源和讨论。
同时指出只有在航空或者金融领域才有足够的经济实力能够利用底层来进行数据的可靠传输,而端到端系统已经能够满足错误控制和纠错处理方面的要求了。
最后作者总结了端到端原则犹如奥卡姆剃刀(Occam'sRazor),即如果在底层设计的功能已经超过它所能提供的必要核心业务了,那么可以考虑在其他层进行此类功能的设计。
而改变的做法就是设计一个端到端的系统,负责数据的可靠传输等。
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-ENDARGUMENTSINSYSTEMDESIGN》一文出发,作者阐述了在Internet系统设计中最重要的原则之一-端到端理论。
简而言之,端到端了理论说明有些功能(比如提供可靠/有序的服务)不应该在系统的较低层提供,除非能在低层完全正确的被实现,而且花费的代价不是太大。
这条原则促使了TCP协议的诞生,解决了如何在一个不可靠的网络通信信道上进行了可靠的网络传输服务。
这条原则在设计RISC系统的原则上也一样适用,当然这条原则并不是绝对的,有时为了性能优化的需要也允许在较低层提供一些不完全的功能。
读后感
2006011373滑冰
这篇论文剖析了端对端原则在网络系统设计时的作用。
作者在文章开始对端到端下了定义:
在两台机器之间建立连接,两端并不知道中间经历的多么复杂的连接,经过了另外的多少机器。
接下来,作者对端到端原则的一个应用做了介绍,即小心的文件传输。
它可以去除一些威胁,但是不足以消灭所有。
文章列出了5种基本的威胁,包括:
1. Readfileerror
2. Softwarecopyfileerror
3. Hardwarecopyfileerror
4. Morethan1changedbit
5. Hostcrashatanytime
之后举例说明一些解决威胁的办法,如复制一份拷贝,重新传输等。
作者举了一个来自他们自己大学MIT的实验例子作反面说明,强调了威胁被层层放大以至于无法解决的可能性。
接下来,作者列举了更多端到端的应用领域,如传输确认,数据安全,复制信息限制,确保FIFO信息传递,交换管理等。
作者之后说明,端到端并不是一个限制性的规则。
我们可以灵活地运用它,为设计协议和网络体系结构进行服务。
在总结中,作者希望自己的讨论可以为“当下”流行的网络协议层次结构提供一些帮助。
当然,这也已经是1983年的文章了。
目前网络协议的层次结构基本固定,而TCP协议也正是用来实现端到端的一个具体例子。
我认为,端到端应该是网络体系结构最自然的形式。
因为信息的发送和获取在绝大多数情况下都是一一对应的。
对于服务器和主机来说,也应该是不加区分的两个终端。
不过,我感觉有些自然的想法被打破的时候,也将是网络体系结构设计上升到一个新台阶的时候。
希望端到端可以为演化成一个更好的原则做好准备吧。
对于这篇文章,我想我的专业知识的缺乏还不足以让我理解其中提到的一些设计思想。
但是在未来的课程中,我可以带着在阅读中遇到的问题进行学习。
到课程结束的时候,相信我可以对文章中的内容有更深刻的体会。
《End-to-endargumentinsystemdesign》读书笔记
这篇文章对网络分层体系结构的产生和发展产生过重要的影响,文中所涉猎到诸多的课题,如网络性能和代价的平衡选择,数据传输中的确认和重传机制的实现等,仍然在目前的网络设计中有着指导性的意义。
“端到端”的网络设计观点,由此成为对网络结构设计的一篇经典论文,帮助我们更好的理解当前TCP/IP、ISO七层协议等网络分层设计原理。
一、作者的中心观点
作者提出了分布式系统下端到端的系统设计原则,即底层网络设计应注重与核心传输功能的实现,而不是花费更大的代价去实现其他的功能。
作者指出,错误恢复、安全加密、重复消息限制、系统崩溃恢复、传输确认等技术实现,都支持端到端观点的成立。
在网络的底层应该简化结构,把更多的功能实现,如数据确认和重传、安全加密等功能放到高层网络实现,效率会更高。
二、观点辨析
作者以文件传输过程来分析端到端网络设计的合理性:
文件传输过程如图所示,
图1 A-B端到端文件传输过程
在传输过程中可能遇到诸多难以控制的风险,包括文件本身出错、通信传输过程出错、接收过程出错、数据包完整性的度量以及其他一些未知的错误发生。
作者讨论了当前技术条件下解决文件传输错误的几种途径:
1、进行多次的文件复制,通过多次的简单传输保证数据写入的正确性;2、端到端的数据确认和请求重传3、进行错误检测。
建立一个可靠的文件传输机制离不开底层链路的支持。
从性能分析的角度讲,基于一个不可靠的网路建立一个可靠的文件传输,底层网络可以实现完善的功能,但是权衡性能和代价,在底层实现这些功能的代价太大,不如在高层网络进行这些功能实现。
实现数据的可靠传输,需要建立错误检查功能,在应用层也能实现。
作者从三方面提出例证:
1、借鉴ARPANET网络的方法,高层可以使用RFNM原理实现消息确认机制,保证数据传输的准确性;
2、在高层实现数据加密功能而不是在底层实现是必要的,因为数据加密需要密钥;传输过程中数据的安全性很脆弱;数据的最终确认仍然在高层。
高层对数据加密功能的实现手段具有互补性,而底层无需实现这些功能;
3、为防范网路对重复信息的抑制,高层可以实现对数据重复请求的鉴别;
4、在先进先出的信息传输机制中,信息的序列可能被打乱,高层则可以重组信息序列;
5、传输管理中,消息的确认报文最好由高层完成,底层的设计上应尽量减少冗余信息的传输。
应用于实际问题,端到端的观点分析需要做细微的甄别。
如在语音传输中,人们更侧重于对声音同步性的要求而非正确率,过多的时间延迟会导致人们的反感。
因此,作者指出,端到端的观点不是一个硬性的绝对规则,而是一个帮助设计应用程序和协议的设计的指导。
目前,只有金融和航空领域才有能力和需求,完成底层的数据可靠性传输,在其他领域端到端系统已经能够满足错误控制和纠错处理方面的要求了。
总而言之,端到端的观点犹如奥卡姆剃刀(Occam'sRazor),即如果在底层设计的功能已经超过它所能提供的必要核心业务了,那么可以考虑在其他层进行此类功能的设计。
而改变的做法就是设计一个端到端的系统,负责数据的可靠传输等。
三、文章主要贡献
文章的观点和分析思路为网络的分层设计思想奠定了理论基础。
作者在文章最后也指出,对于“时下”流行这种基于网络分层的想法是可取的,这样可以加强模块间的分工合作。
网络分层的优越性,正是体现在底层实现的复杂和代价昂贵,因此网络设计的简易化和接口化已经成为了网络设计的基本原则。