TCP/IP 详解(第 2 版) 笔记 / 1 介绍 / 1.1 架构原则 / 1.1.2 End-to-End Argument 与 Fate Sharing

目录、参考文献


1.1.2 End-to-End Argument 与 Fate Sharing

当设计一个大型系统(如操作系统)或协议栈时,经常遇到的一个问题是:应该将某个特性或功能放在哪个地方
影响 TCP/IP 协议栈的最关键的原则之一,叫做端到端论证(end-to-end argument)[SRC84]:

只有依靠位于通信系统两端的应用的知识与帮助,才能完全地、正确地实现一个功能
只是将这个功能作为通信系统自己的一个特性(而不用终端应用的帮助),这个功能是不可能完美实现的
但有的时候,通信系统为一个功能提供一个不完整的版本可以提高性能

这个论证对通信系统的设计有着长远的影响
它论证了只有终端应用或最终用户的参与,才能保证功能的正确性与完整性
通信系统为应用 “ 可能 ” 需要的功能进行的实现,注定是不完整的
这篇论文论证了:一些重要的功能(如:错误控制、加密、交付确认等)通常不应该在一个大型系统的低级别(或低层次,见 1.2.1 节)来实现
但是,可以在低级别上提供一些能简化端点工作从而提升性能的能力
可以这样来理解这个原则,不应该在低级别上试图完美地解决高级别的问题
因为低级别的程序对高级别应用需求的完美猜测几乎是不可能的(即,只有应用自己能够完全明白自己需要的是什么)

根据端到端论证(end-to-end argument)原则,应该设计一个由 “ 哑 ” 网络与接入网络的 “ 聪明 ” 系统组成的架构
在 TCP/IP 协议栈中,许多功能(如:确认数据没有丢失的方法、控制发送者的发送速率)都是在应用所在的终端主机中实现的

另一个相关的原则叫做命运共享(fate sharing)[C88]
它研究的问题是,应该将哪些功能放在同一个地方实现(同一个计算机、网络或软件栈中)

命运共享(fate sharing)原则建议,将维护一个通信关联(如:虚拟连接)的所有必要状态,放在通信端点上的同一个地方
按照这个原则,想要破坏通信,唯一的办法就是破坏至少一个通信端点(因为端点上有关于通信的全部必要状态,总能由此恢复通信)
显然,无论使用什么设计,只要通信端点被破坏,通信无论如何都会被破坏
命运共享原则,是允许虚拟连接(如:TCP 实现的虚拟连接)在网络连通性出现一段时间的问题时,仍能保持可用的设计哲学之一
命运共享原则同样支持 “ 哑网络,聪明的终端主机 ” 模型

命运共享
通信功能的命运与终端的命运共享,同时可用或同时不可用
具体的,把通信功能和终端功能放在一起,达到生命周期一致
通信功能不再会因为网络中部分组件不可用而中断(切换一条路径即可)
甚至,整个网络瘫痪一段时间也能恢复通信(通信需要的信息在终端上)

一个今天的互联网仍需不断权衡的问题,就是什么功能应该被放到网络中,什么功能不应该


目录、参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值