zoukankan      html  css  js  c++  java
  • 通信协议的概念

    通信协议经典例子

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

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

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

    网络协议的比喻

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

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

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

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

    一般是这样的:

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

    网络协议的概念

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

    计算机网络协议的组成

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

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

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

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

  • 相关阅读:
    美团面试,360面试 ,滴滴面试,阿里面试,百度面试,京东面试,搜狗面试:
    Maven 3-Maven依赖版本冲突的分析及解决小结 (阿里,美团,京东面试)
    maven snapshot和release版本的区别
    Maven 生命周期 和插件
    Maven pom 文件解释
    Zookeeper原理架构
    sublime 支持PHP语法提示
    Zen Coding 用法
    让浏览器屏蔽js
    淘宝设计师入门:设计师SDK环境配置
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185184.html
Copyright © 2011-2022 走看看