有两个哲学家AB,他们身在不同的地方,说不同的语言,但有一个相同的哲学话题要进行讨论。要讨论就要进行相互的交流,所面临的问题就是:1、解决语言问题2、异地交流的问题。我们所使用的方法就是,给A找一个翻译A和秘书A,也给B找一个翻译B和秘书B。让翻译来解决语言问题,让秘书来解决交流问题。假设他们要用通信的方式来交流
接下来,哲学家A就把要与哲学家B讨论的内容写成信装在信封里,然后在信封上面写上收信人和地址。然后将信交给翻译A,且告诉翻译A翻译的要求是什么。但哲学家A并不关心翻译是如何翻译这封信的。等翻译A译好这封信时再交给秘书A,并告诉秘书A这信要在多长时间内交给谁等要求。然后秘书A就跟对方的秘书B约定好我用什么方式寄给你,你在收到信的时候给我打个电话之类的信息,等秘书B收到信后再将信交给翻译B,翻译B将信再译成哲学家B能看懂的语言交给他。这就完成了一次通信。
这样子做会带来什么好处呢?
1、可行性增加了。因为就算如果有一天,给哲学家干活的翻译辞职不干了,再找一个翻译也不是啥难事。(灵活性好:当任意层发生变化时,只要接口不变,上下层均不受影响。)
2、让哲学家专心搞学术,其它的工作都给别人做。让翻译专心搞翻译,让秘书专心搞外交等等。(各层独立:每一层不要知道下层是如何实现的,只要知道层间的接口和所提供的服务)
网络体系结构可以说是:层、服务、协议,这三者的集合。
层与层之间服务是通过接口来实现的,协议是水平的概念(翻译A与翻译B之间),服务是垂直的概念(哲学家与翻译,翻译与秘书之间)。
服务:各层向上层提供的一组操作,只定义接口,不涉及具体实现。也就是仅告诉上层我可以能做什么,但不告诉我我是怎么做到的。服务是每一层存在的意义。
协议:同层对等实体的具体规则。是服务的实现,为了服务,我要制定哪些规则,两个对等实体要怎么样通讯,才能实现服务。
二者的关系:实体利用协议实现服务定义的接口,只要服务不变,可以任意改变协议。
这就是非常经典的OSI网络模型了,但是很可惜,他在现实世界中并没有实际的例子与之对应。而且它的产生要比我们所熟知的TCP/IP协议集要晚。0.0
上三层是资源子网,下三层是通信子网,中间的 传输层是起到承上启下的作用。外部两列对应着资源子网的设备如计算机服务器等,内部两列对应着通信子网的设备路由器等。两个系统想要直接通信,就要符合一定的要求:要加载每一层且一一对应,而通信子网与资源子网没有对应,是因为通信子网只解决通信问题。
对这七层总结起来如下:
- 应用层(报文):做什么
- 表示层(报文):怎么描述
- 会话层(报文):从何开始
- 传输层(报文):对方在何处。通过端口号定位到目的节点某一个特点的应用进程。
- 网络层(分组或包):怎么走。通过ip地址定位目的节点所在的子网
- 数据链路层(帧):每一步怎么走
- 物理层(比特):怎么利用物理层。。。。通过物理地址定位到目的节点所在的主机