协议僵化(Ossification)

互联网(Internet)——多个网络互联之网。为了保证互联网工作正常,我们需要在互联网各处搭建各种设备。这些在互联网上分布式架设的设备被称为中间设备(middle-box)。传统网络传输中两个端点之间的中间设备服务于网络数据传输过程。

这些中间设备有着许多、各式各样的用途和目的,我们简单来说,这些设备是为了实现放置人在该位置所要完成的特定目的而安置。

中间设备的目的包括:在网络之间转发(路由)数据包、阻挡恶意流量、执行地址转换(NAT)、提升性能、监视流量等等。

为了完成这些目的,这些设备必须了解网络以及它们所要监视或修改的数据包协议。它们为此依赖于一些软件——一些很少升级的软件。

虽然这些设备是将互联网“粘”在一起的关键元素,但是它们经常跟不上最新的技术。网络的核心部分与边缘部分(客户端、服务器)相比,更新很慢。

所以当这些设备决定了经过的流量是否合格时,就有些问题了——在这些设备部署之后的一段时间里,协议有了新的特征。而在这些设备引入(了解)这些新特性之前,它们会认为这种特征的数据包是非法的、恶意的,于是会将这种流量直接扔掉,或是拖延到用户不再想使用这些新特征的程度。

这种问题就被称之为“协议僵化”。

协议僵化也影响了TCP协议的改变:当客户端与远程服务器之间的某些中间设备检测到对于它们来说未知的新的TCP选项时,中间设备将拦截这些流量,因为它们不知道这些选项的作用。如果中间设备监测了协议的实现细节,它们会学习到协议的典型行为,在一段时间后,这些行为变得没法更改。

尽可能将通信加密是对抗僵化的唯一有效手段,加密可以防止中间设备看到协议传输的绝大部分内容。

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""