弄浪的鱼

通信协议经典例子

占据两个山顶的蓝军与驻扎在这山谷的白军作战。力量对比是:一个山顶上的蓝军打不过白军,但两个山顶的蓝军协同作战就可战胜白军 。一个山顶上的蓝军拟于次日正午向白军发起攻击。于是发送电文给 另一山顶上的友军。但通信线路很不好,电文出错的可能性很大。因此要求收到电文的友军必须发送确认电文。但确认电文也可能出错。 试问能否设计出一种协议,使得蓝军能实现协同作战因而一定(即100 %)取得胜利?

这样无限循环下去,两边的蓝军都始终无法确认自己最后发出的电文对方是否已经收到。没有一种协议能够蓝军能 100% 获胜。

这个例子告诉我们,看似非常简单的协议,设计起来要考虑的问题还是比较多的。

网络协议的比喻

网络协议是比较抽象的概念,这里将其余军营中的职级对比着思考。小时候我爱玩军旗,军旗里面有军长、师长、旅长、团长、营长、连长、排长。

Q: 为什么军营里面要分出这么多级别,也相当于网络中要分出这么多层?

其实原因很直接,复杂的系统都要分层。军营是一个复杂的系统,不分层没法打仗;计算机的世界分层的思想无时不刻都在提现。所以,复杂的系统都要分层,计算机网络是一个复杂的结构,它需要分层。

Q: 那么军营中的人是怎么沟通的?也相当于网络是怎么通信的?

一般是这样的:

  • 军长和军长商量着办,也就是对等实体的相互通信;相当于网络中同一层之间通信
  • 下一级为上一级服务的,比如说排长为连长服务,连长为营长服务;相当于网络中的下一层为上一层服务
  • 军长和师长在哪儿商量军情,参谋部啊,参谋部就相当于网络中的 SPI(访问点)

网络协议的概念

  • 计算机网络协议
    • 负责在网络上建立通信通道和控制通过通道的信息流的规则
    • 协议依赖于网络体系结构,由硬件和软件协同实现

计算机网络协议的组成

组成 说明 类比
语法 用于确定协议元素的格式,即数据与控制信息的结构和格式 类似于主谓宾、定状补,按照一个规章来沟通
语义 用于确定协议元素的类型,即规定了通信双方需要发出何种控制信息,完成何种动作,以及做出何种应答 满足语法的条件下,说出来的话要有含义,不是疯言疯语
定时 用于确定通信速度的匹配和时序,即对事件实现顺序的详细说明 说话不能太快,也不能太难,这样别人才能听得清楚
  • 协议必须将各种不利的条件事先都估计到,而不能假定一切情 况都是很理想和很顺利的。

  • 必须非常仔细地检查所设计协议能否应付所有的不利情况。

    • 应当注意:事实上难免有极个别的不利情况在设计协议时并没有预计 到。在出现这种情况时,协议就会失败。因此实际上协议往往只能应付绝大多数的不利情况。
  • 协议的开发是一个很复杂的过程。这里涉及到:考虑数据通信 时的各种利弊条件、考虑数据在通信线路上传输的形式,并且 不能与现有的协议互相冲突、考虑协议不能过分冗余、协议不 能不安全,需要强加密,考虑硬件是否能够实现,考虑编程过 程中有哪些漏洞存在,是否适应现今的各种协议……

  • 1974年,美国IBM公司宣布它研制的系统网络体系结构 SNA.DEC公司研制了他的数据网络体系结构DNA。俩种体系互相不兼容.不能通信.问题日益严重。新的结构开发千钧一发