伯努利原理 vs. 阿基米德原理—每当你看到一部电影里出现一部分是直升机,一部分是潜艇的交通工具时,你就知道你要享受一场真正的盛宴了。还有什么比这更酷的呢?前一秒,英雄还在被一些驾驶着战斗机的坏家伙追逐,躲避空对空导弹,并与一个一心想统治世界的狂妄自大的人在无线电中进行机智的对话;然后,就在英雄无法躲避最后一枚导弹时,他按下了一个按钮,飞行器潜入海洋,周围是一片宁静的蓝色绿洲。
可悲的是,在不久的将来,没有人会建造这些酷炫的玩意。正如分析“侮辱智商的电影物理学”的网站Intuitor所指出的那样:
直升机的设计参数几乎与潜艇的设计参数完全相反。直升机需要轻型结构才能飞行。潜艇需要重型结构才能下沉。直升机利用伯努利原理上升,而潜艇主要利用阿基米德原理上升。潜艇必须抵抗极端的外部压力,而直升机不需要,等等,等等。实际上,没有办法设计出这样一种两用飞行器,而且在可预见的未来也不太可能出现。(http://www.intuitor.com/movie physics/AI.html)
直升机很棒,潜艇也很棒。问题是,如果你试图建造一种车辆来执行两项根本不同的工作,你最终会得到一种两项工作都做不好的车辆。
这一切与即时消息(IM)有什么关系呢?嗯,会话发起协议(SIP)是一架优秀的直升机,但它也被提议用作即时消息潜艇。这个提议有一个巧妙的缩写,SIMPLE(用于即时消息和呈现扩展的SIP),但SIP/IM方法没有任何通常与简单性相关的优点。
SIP是一种用于建立媒体流(例如,IP语音、会议等等)的会合协议。理解会合协议的关键在于,它们在数据通信中扮演着重要但非常有限的角色。它们协商数据交换发生所需的所有参数;但它们的作用也是有限的,因为一旦协商完成,会合协议就消失了,实际的数据交换就发生了。
像所有优秀的协议一样,SIP的设计参数反映了其运行环境。这意味着SIP的设计并非最适合在其他场景中使用。例如,由于会合协议用于简短的交换,并且在整体数据流量组合中仅占很小一部分(与实际数据交换相比),因此SIP不需要具有拥塞敏感的传输算法。毕竟,SIP只尝试进行一两次握手,因此使用类似慢启动之类的东西实际上是适得其反的。
这里的困难与困扰大多数获得狂热流行的协议的问题相同:SIP正在被考虑用于各种不同的应用程序。(事实上,对SIP扩展的请求数量已经达到了需要为SIP修改制定不断发展的审查流程的地步。)无论如何,只要给定的扩展与SIP的设计参数一致,该扩展可能就是一件好事。同样,如果扩展与这些设计参数相反,那么该扩展就是一个坏主意。
有两种方法可以实现SIP/IM:寻呼模型和会话模型。
寻呼模型。 寻呼模型通过在SIP的有效负载中搭载即时消息来工作。所有数据交换都发生在会合协商期间。如果我们谈论的只是一些零星的IM,那么这没什么大不了的。但是,这种机制根本不具有可扩展性。
原因如下:SIP默认使用用户数据报协议(UDP)作为其传输协议,而拥塞敏感性在SIP中不可用。毕竟,会合协议不需要它(但数据交换协议需要)。这意味着,随着IM开始来回传递,没有一个是流量控制的——因此SIP/IM流量就像PointCast流量、RealAudio流量等等。
值得称赞的是,搭载提案就拥塞控制提出了一些建议(例如,SIP/IM应尽可能尝试使用TCP而不是UDP)。但是,由于SIP基础设施的其余部分都在使用UDP,因此无法知道TCP是否可行,也无法强制SIP中介使用TCP(即使它可用)。
这正是永远不会在现实生活中被采纳的那种建议。
虽然你可以在低流量环境中使寻呼模型工作,但一旦你拥有有意义的IM流量,所有流量都会开始受到影响。除其他外,可扩展性需要拥塞控制。因此,像SIP/IM的寻呼模型这样不具有拥塞敏感性的应用程序,仅仅是不好的网络公民。
更糟糕的是,由于每个IM都承载在一个新的SIP会合中,因此每次发送IM时,都会进行新的SIP握手。因此,每个IM都会生成两个或更多个不同的数据包,而不是一个。这样想:呼叫建立比数据传输贵得多,但由于你只需在每个会话中执行一次,所以还可以。呼叫建立也是一个固定成本,它应该远小于随后进行的数据交换的可变成本。但是,当每个会话恰好包含一条消息时,这是不可接受的,因为那时固定成本会支配会话——但是,当然,这正是SIP/IM的寻呼模型给你的。(因此,它具有TCP连接建立的所有开销,而没有有状态会话的任何好处。)
现在,这其中有SIP的错吗?不,当然不是。SIP被设计为会合协议,而不是数据交换协议。SIP/IM的寻呼模型完全违背了SIP的预期用途。为了缓解这种不匹配,SIP/IM的人声称寻呼模型将仅在有限的、特殊用途的环境中使用(例如,与手机通话时)。这真的没什么帮助,因为没有任何方法可以知道哪种模式在给定上下文中是合适的,因为远程对等方在定义上是远程的。同样,这正是永远不会在现实生活中被采纳的那种建议。
会话模型。 会话模型的工作方式是使用SIP协商IM流的参数,然后使用其他协议来交换实际的即时消息。嘿!这种方法实际上是有道理的。哦,等等。研究会话模型的小组尚未开发出执行此操作的协议。好吧,也许以后再说吧。
…那么一切都开始看起来像一棵树。无论你为SIP/IM选择寻呼模型还是会话模型,仍然有两个严重的问题需要关注。
会合不是路由。 会合是关于找到交互的共同点。这就是SIP所做的。路由是关于在端点之间找到路径。这就是路由信息协议(RIP)和边界网关协议(BGP)所做的,也是IM所需要的。这种区别解释了为什么通过SIP进行IM并不像看起来那么“显而易见”。
回想一下,SIP旨在解决不同应用程序的会合问题。因此,SIP中包含大量IM不需要的东西也就不足为奇了。例如,在基本的SIP模型中,对于四个实体(客户端、服务器、代理服务器和重定向服务器),你有六种(是的,六种!)交互模式。在大多数IM系统中,你(最多)有两种涉及(最多)两种实体类型的交互模式。因此,IM潜艇功能的糟糕的实施者首先必须建造一架漂亮闪亮的直升机。
当然,底线是部署SIP/IM的成本远高于其他IM方法,因为部署SIP的成本很高。这实际上是SIMPLE这个SIP/IM缩写中的狡猾幽默:一旦你部署了SIP,你就根本不会注意到部署IM的增量费用。这真是太棒了,当然,前提是你一开始就需要SIP。如果不需要,好吧,就把它看作是对你的IM部署征收的一种相当倒退的税。
即使当——或者如果——SIP变得普遍时,声称增量成本很小也是不完全公平的。你看,SIP确实可以进行会合,但IM真正需要的是路由——而会合和路由虽然相似,但并不相同。换句话说,即使你在互联网的某些部分确实需要SIP,在SIP之上添加IM也不是免费的——你仍然需要在其之上部署基于IM的一组规则。你不会通过将IM与你的SIP基础设施集成来获得任何节省。
这是会合不是路由的第二个例子:当两个企业中的许多用户进行通信时——例如,通过电子邮件——邮件路由基础设施能够将流量捆绑在一起(例如,通常建立单个连接来处理多个消息流)。会合系统没有这种概念——或聚合效率。
特性干扰。 权力机构不得不创建一个SIP扩展审查委员会的原因之一是为了了解特性干扰的风险。当SIP用于多个应用程序时,每个应用程序可能有自己的一组扩展,并且扩展不仅必须在最终用户系统上实现,而且还必须在SIP中介上实现。
然后,扩展很可能——或者不可避免地——会相互干扰。
当然,这并非闻所未闻。考虑HTTP:每当人们提议通过HTTP实现某些服务时,他们也必须担心特性干扰——也就是说,缓存和代理将执行对基于静态HTML页面的服务非常好的操作,但对于新服务来说却是适得其反的。
真正的问题是,你是否希望你的IM系统受到这种风险的影响。重用是一件很棒的事情——只要你重用的东西不会干扰你试图完成的原始工作。
…即使是一头牛也能进入轨道。当然,问题是把一头牛送入轨道是否是一项可能值得努力的事业(向蒙提·派森致歉)。
1999年版本的SIP长达153页,但截至本文撰写时
这些数字均不包括任何单独的SIP提交、信息性或实验性SIP规范或特定于IM的SIP规范。此外,这些数字均不包括当前在任何现有工作组中开发的任何内容。
这里的信息是SIP是一项仍在进行中的大型工作。当然,这没什么错:很多人都想使用SIP来做事情,并且在他们想做的事情与SIP一致的范围内,这很棒!但是,如果你试图部署IM系统,那么等待“无处不在的SIP”可能会对你的决定产生影响。
如果你需要在建立媒体流之前协商会合参数,请使用SIP。SIP不是问题所在。
会合协议很棒,数据交换协议也很棒。问题是,如果你试图构建一个协议来执行两项根本不同的工作,你最终会得到一个两项工作都做不好的协议。换句话说,SIP和IM的差异足够大,以至于尝试在同一协议中同时完成这两项工作是有问题的。
MARSHALL T. ROSE,Invisible Worlds联合创始人、首席技术官兼总经理,是BEEP协议的主要推动者,也是电子消息服务领先提供商MessageMedia的前首席技术官。Marshall曾担任互联网工程任务组(IETF)网络管理区域主管,并且是监督互联网标准化过程的十几位个人之一。
Marshall负责多个互联网标准技术的设计、规范和实施,并且是60多份互联网请求评论(RFC)的作者。他是关于互联网管理、电子邮件和目录服务等主题的多部专业著作的作者。Rose以其核心互联网技术(如POP、SMTP和SNMP)和OSI技术(如X.500和FTAM)的实现而闻名。1981年,Rose开始了他的第一个公开可用的大型项目,MH邮件系统。Rose于1984年获得加州大学欧文分校信息与计算机科学博士学位。
最初发表于Queue杂志第1卷,第8期—
在数字图书馆中评论本文
Eric Allman - 电子邮件身份验证:是什么、为什么、如何?
互联网电子邮件的构思与我们今天生活的世界不同。那是一个小而紧密的社区,我们真的不必太担心不良分子。一般来说,如果有人做错了事,可以通过社会手段来解决问题;“排斥”在小社区中非常有效。也许我们应该弄清楚当Usenet开始变坏时会发生什么。Usenet基于一个名为UUCP的廉价网络,该网络非常容易加入,因此它让我们尝到了当社区变得更大、更分散且更难管理时会发生什么。
Vipul Ved Prakash, Adam O'Donnell - 利用信誉系统打击垃圾邮件
垃圾邮件无处不在,堵塞了全世界电子邮件用户的收件箱。它不仅令人讨厌,而且还侵蚀了信息技术进步带来的生产力提升。每天浏览数小时合法电子邮件的员工还必须处理大量非法电子邮件。自动垃圾邮件过滤器大大减少了最终用户看到的垃圾邮件数量,但所需的培训量与无需过滤器即可删除垃圾邮件所需的时间相当。
John Stone, Sarah Merrion - 即时消息是即时通讯还是即时头痛?
这是一个现实。你的环境中拥有IM(即时消息)客户端。你已经认识到它正在消耗越来越多的网络带宽,并且随着微软将IM功能构建到其XP操作系统和应用程序中,你知道这种情况只会变得更糟。管理层也对通过这种媒介进行私人对话造成的用户生产力损失表示担忧。你曾尝试阻止这些对话渠道,但这始终是一场持续的战斗。
Joe Hildebrand - 九个IM帐户还在增加
即时消息几乎变得像电子邮件一样普及,在某些情况下,其受欢迎程度远远超过电子邮件。但它已经远远超出了青少年封闭的世界,进入了商业领域,在那里它正在成为一种有用的沟通工具。与电子邮件不同,问题在于IM没有通用标准,因此用户感到不得不维护多个帐户,例如AOL、Jabber、Yahoo和MSN。