中文摘要
摘要:端到端原则是一种分布式系统中各模块间功能定位的设计原理,指从代价和性能的角度分析,在网络的最核心的部分应该只做数据的传输而不能去做一些其他的应用,而数据是否正确传输则应该放到应用层去检查和判断,从而保证互联网核心的简单性、可维护性和可扩展性。结合《End to End Arguments in system design》与《Rethinking the design of the Internet: The end to end arguments vs. the brave new world》表达个人对端对端原则的理解以及该原则在当今全面发展的互联网中面临的问题。
关键词:端到端原则;安全;互联网
Abstraction:The argument, that helps guide placement offunctions among the modules of a distributed computer system is called theend-to-end argument. From the perspective of cost and performance, the corepart of the network should only do data transmission instead of doing otherapplications, and whether the data is transmitted correctly should be appliedto the application layer to check and judge. So that the network would keep simple,extendible and maintainable. This passage is going to make a personal viewabout the influence that the end-to-end argument brought and the problem thataroused nowadays according to End to End Arguments in systemdesign and Rethinking the design of the Internet: The end to endarguments vs. the brave new world.
Keywords:End-to-end argument; security; Internet
1、引言
计算机网络,特别是作为其典型代表的互联网,在短短几十年之间经历了飞速发展的过程,至今已呈现出一种遍布全球的、可承载多种网络应用的网络互联格局。网络要通信,必须建立连接,不管有多远,中间有多少机器,都必须在两头(源和目的)间建立连接,一旦连接建立起来,就说已经是端到端连接了,即端到端是逻辑链路,这条路可能经过了很复杂的物理路线,但两端主机不管,只认为是有两端的连接。端到端通信建立在点到点通信的基础之上,它是由一段段的点到点通信信道构成的,是比点到点通信更高一级的通信方式,完成应用程序(进程)之间的通信。“端”是指用户应用程序的“端口”,端口号标识了应用层中不同的进程,多个进程的数据传递通过不同的端口完成。
随着20世纪90年代初以来各种网络应用和服务的蓬勃发展,传统互联网中核心网络功能过于简单的缺陷也开始逐渐引起人们的关注,越来越多的需求需要在核心网络中纳入更多的管理和控制功能,端到端原则面临严峻的挑战。
2、端对端原则的思想及优势
端对端这个说法最初在流程管理界知名度很高,简单地说来,就是从客户的需求开始时到客户的需求满足为结束。应用在互联网上,即请求的建立到响应结束的过程,这里只涉及两个主机之前的用户体验,而不管网络中是如何传输的。端到端原则起初是为了解决一个问题,就是在一个通信系统中在什么地方增加功能最合适。这些原则最初是在80年代初提出的,在近20年的无数辩论中,它们一直是一种架构。考虑如何在系统中最好地满足用户的需求。端到端观点表明,特定的应用程序级别的功能通常不能,也不应该建立在网络核心的底层系统中。举个例子来说——查错。如果在端设备上或端设备到网络底层的传输过程中发生的错误是不能够被网络底层的检错机制检测到的,这时还需要在端设备上重新实现。当反馈请求时,更明显看出网络底层对端设备发送的消息是无用的,端设备关心的问题不是消息是否已经到达对方的端设备,而是对方端设备对该信息所做出的反馈动作。
该原则着重强调了:
一个系统应该只考虑那些能够由其“完全正确地“实现的功能。从互联网的角度来说,这意味着诸如可靠性、拥塞控制、会话连接管理这类功能最好是被置于端系统中。
以可靠性为例,在通过网络传输文件的过程中,传输错误可能发生在端到端路径上的多个点,如通信链路、中途的交换节点。一种解决方法是在通信路径上的每个交换节点加入校验、超时、重传等机制来确保数据的正确性。但是即便如此,传输错误也可能由于磁盘存取错误、缓存不足等原因发生在端系统自身中,因此,即便是中间结点提供了可靠性机制,端系统仍需要进行端到端的正确性验证。所以只有端系统能够“完全正确地“实现端到端通信的可靠性,由中间节点来提供同样的机制是多余的,而且会增加整个通信系统的开销。中间节点即网络层只需要关注可以由其完全实现的功能即可,如路由和转发等.
端到端的论点指出, 应该尽可能地避免将应用层的部分功能放在网络的核心实现。将应用程序特定功能从网络核心移出并仅在网络核心处提供通用的系统服务,这样做是有许多优点的。
——核心网络的复杂性降低, 从而降低了成本, 便于将来对网络进行升级.
——当新的应用程序添加到网络中时,而不必更改网络的核心,可扩展性强。
——简化了终端用户和网络之间的接口,应用程序不必依赖于网络中应用层特定功能的实现, 这可能会提高其可靠性.
沙漏模型:
智能性被集中在了端系统中,而网络本身只是负责转发报文,并尽可能地保持简单化。如上图所示。在这个模型中,最细的也就是代表功能最单一的部分是IP层,其用于实现异构网络之间的连通性,并提供通用的数据传递服务。
当然, 端到端原则不是绝对的。有些功能只能在网络的核心中实现, 效率和性能问题可能会激发核心功能。把一些能增强应用层功能的特征添加到网络的核心, 这样就不会阻止其他应用程序运行。但是, 作为一个中心互联网设计原则,把一些功能从网络核心偏向到边缘节点的方法起到了很好的作用。
所以,总的看来,在网络系统设计中需要遵循端对端原则,合适地考虑并选择在网络底层中需要实现的某些通用功能。
3.端对端原则对当今互联网的影响
当今互联网的繁荣与端到端原则息息相关。 在最初的20年里, 互联网的大部分设计都由端对端论点所塑造。在很大程度上, 网络的核心提供了一个非常通用的数据传输服务, 可以供运行在它上面的所有不同应用程序使用。
端对端原则促进了分层思想的出现。 根据其核心思想,即将互联网中的功能划分为不同层去实现,而不是把所有需要的功能集中在某一层,比如网络层只需要提供通用的服务即可,一些个性化的需求留给端设备实现。端到端的设计原则保证了互联网底层的功能的最简化,使互联网核心保持一个相对精简而有效的状态。
因为只涉及到端对端,所以这就要求端设备对自己在网络中的动作自我监管。由于互联网内部缺少对端设备的控制,很难统一的对设备进行约束,因此端设备需要对送往互联网的信息以及从网络中获取的信息负责。也正是这个原因,在当今飞速发展的互联网中,信任危机逐渐产生,这将导致新的互联网危机。
实施端对端原则需要互联网的冒险精神,这种冒险精神体现在多个方面。因特网上用户的行事原则更多的是自我约束,国家和权威机构的介入力度不够,介入难度也很大,因此这似乎给用户之间冒险性的竞争提供了温床。这种竞争导致所有用户都倾向于使用功能更加强大的软件,倾向于更好地保护自己的信息和其他利益,同时也就有人倾向于攫取他人的正当利益。另外,因特网是风险投资非常活跃的领域,这是因特网商业化能够发展起来的基本源泉。正是端到端的设计原则,包括游戏、聊天和P2P等在内的风险投资不需要在ISP的支配下进行,而只需要和端用户打交道即可。
4、端到端原则的发展趋势
许多力量正在推动改变今天的互联网。所有这些力量都会造成使互联网更复杂、在互联网的设计中增加结构,以及可控用户量的损失。不管人们是选择把这些趋势看作是互联网发展的自然部分还是为西方的防护形势所迫,它们都在发生。《Rethinking the Design of the Internet-The end toend arguments vs. the brave new world》这篇论文是MIT教授David Clark于2001年发表在ACM上的另一篇关于重新思考Internet设计原则的重要论文。20多年前他提出的“End-to-End Argument”表述为:“一种应用功能只有当其知识和帮助置于通信系统的边缘才能完全和正确地实现,因此将提出这种应用功能作为通信系统本身的性质是不可能的。”当时提出这种论断的依据是网络是不可靠的,网络只做最通用的数据传输,而最终检查是否正确执行只能在处于传输终端的应用层。然而, 在过去几年中, 互联网及其应用出现了一些新的需求。对于某些利益相关者来说, 通过在网络核心中增设新机制, 可以更好地满足这些新的要求。这一观点反过来也引起了那些希望保留原始互联网设计的好处的人的关注。
互联网涉及的问题主要分为以下几个部分:
1)不可信世界
今天, 有越来越少的理由让我们可以相信其他的终端。不可相信的后果包括:全网攻击、对个别端点的攻击、讨厌的交互形式 (如垃圾邮件) 以及由于终端节点出现问题而导致网页消失等烦恼。这种情况是一个可预测的结果, 即相关人口的急剧增长, 其多样化, 包括人们使用互联网的动机范围更广, 难免导致有人误用或滥用。要想使网络更加可信, 而网络两端的用户又不能完全被信任, 这似乎意味着需要在网络中心添加更多的机制来实施 "良好" 行为。
2)第三方参与
一个 日益明显的问题是第三方要求在通信终点之间进行干预, 而不管两端的想法如何。第三方可能包括组织的官员 (例如, 企业网络或 ISP 管理人员执行组织政策或其他监督) 或*官员, 其利益可能从税收到执法或公共安全. 当端点想要通信,但是在没有它们同意的情况下,一些第三方也要求介入路径时,端对端观点并没有提供一个明显的结构来解释这种情况。我们必须放弃端对端观点, 拒绝第三方的要求, 因为它不 "适合" 我们的科技设计原则, 这时我们或者找到另一种设计方法, 尽可能地保留端对端原则执行的能力。
3)匿名通信
在某些情况下, 用户可能更希望匿名, 例如, 在查看 Web 站点时, 从匿名政治演讲和揭发者都想要保留自己的隐私。至少在美国, 匿名公共政治言论的特权是受保护的权利。在这方面, 发言者将寻求保证, 无论是在当时还是事后, 他们的匿名都不能被渗透。这一关注是针对第三方的--不仅是可能寻求揭露演讲者的个人, 而且是可能想压制某些言论的*本身。另一个例子是在线投票。个人选民需要一些外部保证他们的选票是匿名的。投票制度需要确保只有登记的选民才能投票和投票最多一次。公民们集体地寻求保证投票不会因某些拒绝服务攻击而中断, 投票结果是准确的, 而且没有机会进行投票舞弊。第三个例子是互联网上的匿名付款, 以便一个人可以匿名完成网上购买.
4)用户群体的改变
Internet 是由技术人员设计并最初使用的。用户的扩展需要使网络更易于使用. 通过在终端节点上放置大量的软件, 端到端原则会让用户使用起来更加复杂:必须安装、配置、升级和维护软件。对于某些人来说,利用安装在网络其他地方的服务器上的软件更有吸引力。易用性的重要性只会随着消费操作改变的本质而增长。当今的计算世界包含的不仅仅是个人电脑。它有嵌入式处理器、便携用户界面设备, 如计算器具或个人数字助理 (pda, 如 Palm 设备)、启用网络的电视和高级机顶盒、新类型的手机等等。如果需要使用者单独设置和配置他所拥有的每个网络设备, 那么至少其中一个配置不正确的几率是多少?通过将配置、保护和控制委托给一个公共点,这种风险将降低。该公共点可以充当设备池的代理,同时将成为应用程序执行上下文的一部分。使用这种方法, 应用程序运行时将不再是一个不可分割的端点.
虽然这些趋势中没有一个本身强大到足以将 Internet 从端到端网络转换为具有集中功能的网络。它们都可能朝着同一个方向转变,这种事实可能预示着整个网络的形状将发生重大变化。这种变化将改变互联网的经济和社会影响。但是这并不意味着端到端原则应该抛弃,互联网之所以拥有现在的发展,正是依赖于端到端提供的可靠基础与创新环境。若抛弃端到端原则,不利于互联网的进一步发展。
5、端到端原则的发展前景及改进
面对当今复杂的互联网环境以及各种与端到端原则相矛盾的应用需求,是应该放弃端到端原则,重新回到集中式服务的道路上,还是继续坚持端到端原则,无视互联网的发展趋势,这需要对端对端原则进行重新的思考。
一方面,应该肯定端到端原则的意义:(1)灵活性,当有新的服务需要进行部署的时候,对端系统进行修改显然要比对网络核心部分进行更改要容易得多。(2)开放性,由端系统提供应用服务,任何有能力的用户或公司都可以*部署新的服务,鼓励了创新,推动了互联网的发展。(3)可靠性,由端系统来维护端到端通信的状态,同时尽可能的使核心网络保持简单化和通用化。
另一方面,由于现行互联网体系结构基本成型于上个世纪80年代左右,而由Web技术所引发的互联网应用热潮却始于上个世纪90年代,这必然导致设计时所考虑的情况与具体的应用环境之间存在错位。就端到端原则而言,它最初是围绕那些只需要由端系统处的正确实现就能够被满足的需求而提出的,如果一些需求只能通过核心网络所实现的服务才能被满足,那么端对端原则并不能被适用。
今天的互联网不在是“端到端透明“的了。核心网络也不再局限于纯粹的转发分组。现在的互联网环境是很危险的,大家所依赖的互联网面临很多重大的挑战,越是依赖互联网,就会发现塔越发的危险,互联网的端到端原则必须要着眼于解决当前面临的种种挑战,需要适时做出一些改变。
——改进端设备满足可部分需求。如垃圾邮件的筛选可以在服务器端或用户端两头进行处理,恶意程序可以通过用户防火墙进行控制等。
——在网络核心布置一些专有服务,将一些涉及安全需求的软件(如支付宝,微信,邮件等)转移该服务中进行,与当前端到端的网络结合。而其他的没有类似需求的软件保留在端到端的网络中。
——法律约束,提高自我约束力。履行自己的责任,可以减少恶意信息的出现。
——有条件的信任。不再无条件地信任用户,网络自身需要实现安全功能。
——开放性,但需要增加网络业务的控制、业务感知。
…………
因特网的端到端原则在逐渐地向着一系列相互合作的原则过渡——因特网不再是一揽子不管用户行为的端到端原则的尽力而为服务,而以网络为中心的新模式也能够在网络中间逐渐建立起来。
6、结论
“如无必要,勿增实体“——简单有效。如果在底层设计的功能已经超过它所能提供的必要核心业务,就如沙漏模型的抽象,如果不能”完全、正确地“实现该层的功能,那么可以考虑在其他层进行此类功能的设计。端到端论点最重要的好处是,它们保留了互联网的灵活性和通用性,允许增加应用程序而不需要更改网络核心部署。
互联网的成功是其核心设计理念所直接决定的,因此对核心设计理念的变更必须非常谨慎,在保持互联网的生命力活跃的同时,只能做一些微小的改变。至于端对端原则是否还会存活,现在的预测还为时过早。我们现在所能做的就是推动一些特定的结果。“端到端”原则所提倡的灵活性和开放性对今后网络的发展仍将具有重要指导意义,这种灵活性应该得到保留。今后网络的发展不可能完全局限于“端到端”原则的架构思想,但也不可能完全抛弃这样一种理论的指导。
遗留问题: GBN算法,累计确认
解释:窗口大小为4,后退N帧ARQ就是从出错处(即第1帧处)重发已发出过的N个帧??(期待后续解决)
时间2018/4/26
解释:经过更深入的学习,发现之前的认识存在很大的误区,这里给予更正:
根据累计确认,捎带确认,没有2号帧的确认,有两种可能:
1、2号帧发送过程中确实发生错误;
2、2号帧正确到达接收端,且接收端发送确认包,但确认包ACK2在返回的途中丢失
本题中,发送方能够收到3号帧,显然说明上述第二种可能是正确的,2号帧已被正确接收,而且3号帧之前的包都已被正确接收。
如果题目中,条件变为发送方只收到3号帧的确认,结果仍是一样。重点理清楚GBN捎带确认的含义即可。
[1]. James F.Kurose, and Keith W. Ross, 计算机网络-自顶向上方法与Internet特色(第三版), 机械工业出版社, Mar. 2006
[2]. J.H. Saltzer, D.P. Reed, and D.D. Clark, “End-to-end arguments in systemdesign,” ACM Transactions in Computer Systems, Volume 2 Issue 4, Nov. 1984,pp.277-288.
[3]. Marjory S. Blumenthal, and David D. Clark, “Rethinking the design of theInternet: the end-to-end arguments vs. the brave new world,” ACM Transactionsin Computer Systems, Volume 1 Issue 1, Aug. 2001, pp.70-109.
[4]. 门伟,李伟,互联网体系结构中的端到端原则[J],计算机与现代化总第217期,2013(9):152-156
[5].Grenvile Armitage. Quality of Service in IP Networks[M],Sams,2000