转载:http://blog.tianya.cn/post-6391272-95389043-1.shtml

--《计算机科学导论-思想与方法第二版》

Andrew S.Tanenbaum 在《计算机网络》一书中介绍了一个与网络协议有关的著名问题--两军问题,可以用来说明协议设计的微妙性和复杂性。

两军问题可以这样描述:一支白军被围困在一个山谷中,山谷的两侧是蓝军。困在山谷中的白军人数多余山谷两侧的任意一支蓝军,而少于两支蓝军的中和。若一支蓝军对白军单独发起进攻,则必败无疑;但若两支蓝军同时发起进攻,则可取胜。两只蓝军希望同时发起进攻,这样他们就要传递消息,以便确定发起进攻的具体时间。假设他们只能派遣士兵穿越白军所在的山谷(唯一的通信信道)来传递消息,那么在穿越山谷是,士兵有可能被俘虏,从而造成消息的丢失。现在的问题是:如何通信,以便蓝军必胜。下面我们进行设计。

假设一支蓝军指挥官发出消息:“我建议在明天佛晓发起进攻,请确认。”如果消息到达了另一支蓝军,其指挥官同意这一建议,并且他的回信也安全的送到,那么能否进攻呢?不能。这是一个两步握手协议,因为该指挥官无法知道他的回信是否安全送到了,所以,他不能发起进攻,改进协议,将两步握手协议改为三步握手协议,这样,最初提出建议的指挥官必须确认对该建议的应答信息。假如信息没有丢失,并收到确认消息,则他必须将收到的确认信息告诉对方,从而完成三步握手协议。然而,这样他就无法知道消息是否被对方收到,因此,他不能发起进攻。那么现在采用四步握手协议会如何呢?结果仍是于事无补。

结论是:不存在使蓝军必胜的通信约定(协议)。

  该结论可以用反证法证明,证明如下:假如存在某种协议,那么协议中最后一条信息要么是必要的,要么不是。如果不是,可以删除它,知道剩下的每条信息都是至关重要的。若最后一条消息没有安全到达目的地,则会怎样呢?刚才说过每条信息都是必要的,因此,若它丢了,则进攻不会如期进行。由于最后发出信息的指挥官永远无法确定该信息是否安全到达,所以他不会冒险发动攻击。同样,另一只蓝军也明白这个道理,所以也不会发动进攻。

  Andrew使用上述问题来阐述网络传输成中“释放连接”问题的要点。而在实际中,当两台通过网络互联的计算机释放连接(对应两军问题的发起进攻),通常乙方收到对方确认的应答消息后不在回复就连接释放(用的是一个三步握手协议)。这样处理,协议并非完全没有错,但通常情况下以及足够了。)

  就像andrew给出的结论那样,现在你应该很清楚,释放一个可能有数据丢失的网络连接并不像人们看起来那样简单。

闲话计算机网络中的两军问题相关推荐

  1. (转载)计算机网络中的两军问题

    Andrew S.Tanenbaum 在<计算机网络>一书中介绍了一个与网络协议有关的著名问题--两军问题,可以用来说明协议设计的微妙性和复杂性. 两军问题可以这样描述:一支白军被围困在一 ...

  2. 计算机网络中路由器,浅析计算机网络中的路由器

    浅析计算机网络中的路由器 通过路由器的结构 ,分析了路由器的基本原理及功能 ,进而 (本文共2页) 阅读全文>> 由于路由器的应用越来越广泛,所以对网络路由器在使用过程中发生的故障,我们也 ...

  3. 浅谈两军问题拜占庭将军问题

    自己在网上查阅资料后的理解,深入了解可移步:https://www.8btc.com/article/70370 目录 一.解决什么样的问题--问题模型的应用场景 二.信道受干扰下的传输问题--两军问 ...

  4. 什么叫计算机网络阻塞,计算机网络中的“线端阻塞”释义

    李勇军 张胜兵 刘潮东 张隽 秦涛 摘要:在与计算机网络相关课程的教学或实践过程中经常提及"线端阻塞"这个概念,其与拥塞控制.网络性能和网络应用紧密联系.了解该概念的本义与延伸,可 ...

  5. 两军对垒问题及个人的思考

    在 Andrew S. Tanenbaum著的<计算机网络>中,为了描述计算机通信的不确定性,他曾在上面提出这样一个问题--两军对垒问题.

  6. 计算机网络的运用在什么时候,离散时间排队系统及其在计算机网络中的应用

    摘要: 该文共分四章讨论了三个模型,着重于有相关到达的离散时间排队系统.第一章为引言,回顾了排队论的历史,阐述了计算机网路的一些基本技术及术语,分析了离散时间排队系统的特殊性.在第二章中.我们考虑一个 ...

  7. fon在计算机网络中代表什么,计算机网络自顶向下方法第一章学习

    第1章计算机网络和因特网 什么是因特网 公共因特网是一个世界范围的计算机网络 互联了遍及全世界的数以百万计的计算设备的网络,这些计算设备多数是传统的桌面PC. 基于Lhux的工作站以及所谓的服务器(它 ...

  8. 计算机网络中数据的传递过程

    文章目录 1 计算机网络中数据的传递过程 1.1 计算机网络中整体上的数据传递过程 1.2 计算机协议栈IP模块和路由器对MAC头部的处理 1 计算机网络中数据的传递过程 1.1 计算机网络中整体上的 ...

  9. 计算机网络时延图,计算机网络中网站性能延迟加载图像的示例分析

    计算机网络中网站性能延迟加载图像的示例分析 发布时间:2021-06-09 11:38:56 来源:亿速云 阅读:95 作者:小新 这篇文章给大家分享的是有关计算机网络中网站性能延迟加载图像的示例分析 ...

最新文章

  1. c++模板库的一些基本使用
  2. 谷歌首提Android11,谷歌官方首次提及Android 11系统 谷歌推动安卓10.0系统下载
  3. box2dweb 学习笔记--sample讲解
  4. mysql php 连接查询_php如何连接mysql并查询数据
  5. Python DButils
  6. 不要再使用JS框架了
  7. 杠上谷歌,微软利用人工智能加码必应搜索的市场竞争力
  8. sql优化常用的几种方法_Hive常用性能优化方法实践全面总结
  9. Java内部类(转)
  10. hp1015驱动64位_HP LaserJet 1015 驱动下载
  11. LCL三相pwm整流器(逆变器)
  12. 【2020年最新】【绿色工具】使用软件轻松入侵同学电脑(极域电子教室)
  13. 怎样的工作量评估更合理?
  14. 2015年6月26日-ps图层蒙版
  15. 如何创造一种团队文化
  16. 2020CCPC绵阳D.Defuse the Bombs(二分)
  17. 什么是堆栈?堆栈的操作方式有哪两种?
  18. 云服务器如何修改操作系统,云服务器如何修改操作系统
  19. 一文全懂,Android程序员最新职业规划
  20. redis HyperLogLog原理

热门文章

  1. 「MySQL 数据库 存储引擎」InnoDB和MyIsAm的区别
  2. 软件体系结构的第二次实验(解释器风格与管道过滤器风格
  3. 计算机配件声卡,DIY组装电脑到底需要哪些配件 攒机网卡声卡之类的要买吗
  4. 我能把你的美丽比作月亮吗
  5. 西门子DR系统怎么进计算机管理器,西门子Select DR操作规程
  6. 东南大学计算机科学与工程学院收费,东南大学计算机科学与工程学院硕士研究生奖助学金评定细则...
  7. Python程序设计基础(第2版)by董付国 习题答案
  8. Android高手进阶教程(一)-------Android常用名令集锦(图文并茂)!
  9. 对某班学生成绩排序。从键盘依次输入某班学生的姓名和成绩(一个班级人数最多不超过50人)并保存,然后分别按学生成绩由高到低顺序输出学生姓名和成绩,成绩相同时,则按输入次序排序。
  10. 求∑(k=1~100)k+∑(k=1~50)k2+∑(k=1~10)