http://baijiahao.baidu.com/s?id=1565261694543910&wfr=spider&for=pc
最初,计算机网络设计主要考虑的是硬件,其次考虑的才是软件。而今这种策略不再行得通。现在的网络软件已经高度结构化。
为什么需要 协议层次结构
为了降低网络设计的复杂性,绝大多数网络都组织成一个层次栈(a stack oflayer)或分级栈(a stack of level),每一层都建立在其下一层的基础之上。层的个数、每一层的名字、每一层的内容以及每一层的功能都不相同。每一层的目的是向上一层提供特定的服务,而把如何实现这些服务的细节对上一层加以屏蔽。从某种意义上讲,每一层都是一个单位,它向上一层提供特定的服务。
![](https://i-blog.csdnimg.cn/blog_migrate/7cf44c0f0d78ad770f018989b5c885aa.jpeg)
层次栈
这种分层的概念实际上并不陌生,它已被广泛应用于计算机科学领域中,只是具有不同的称谓,包括信息隐藏、抽象数据类型、数据封装以及而向对象程序设计。其基本思想是一个特定的软件(或硬件)向其用广提供某种服务,但是将内部状态和算法的细节隐藏起来。
一台机器上的第n层与另一台机器上的第n层进行对话,该对话中使用的规则和约定统称为第n层协议。所谓协议( protocol)是指通信双方就如何进行通信的一种约定。大家可以看:到底什么是“网络协议(标准)”形象举例说明5。
图1-13显示了一个5层网络。不同机器上构成相应层次的实体称为对等体(peer)。这些对等体可能是软件、硬件设备,或者甚至是人类。换句话说,正是这些对等体为了实现彼此沟通才使用协议来进行通信。
![](https://i-blog.csdnimg.cn/blog_migrate/1327a9477f3ec229c2ab5b81b0a2f7bd.jpeg)
实际上,数据并不是从一台机器的第n层直接传递到另一台机器的第n层。相反,每一层都将数据和控制信息传递给它的下一层,这样一直传递到最低层。第1层下面是物理介质(physical medium)。通过它进行实际的通信。在图1-13中,虚线表示虚拟通信,实线表示物理通信。
![](https://i-blog.csdnimg.cn/blog_migrate/56bf744712b0019184fbbecc50415177.jpeg)
各层的功能含义
在每一对相邻层次之间的是接口( interface)。接口定义了下层向上层提供哪些原语操作和服务。当网络设计者在决定一个网络中应该包含多少层,以及每一层应该提供哪些功能时,其中最重要的一个考虑是必须定义清楚层与层之间的接口。为了做到这一点,要求每一层完成一组特定的有明确含义的功能。除了尽可能地减少层与层之间必须要传递的信息最外,层与层之间清晰的接口使得同层协议的替换更加容易,即某一层的当前协议或实现替换成另一个完全不同的协议或者实现(比如说,所有的电话线路被替换成卫星信道):因为对于新协议或新实现来说,它所要做的仅仅是向紧邻的上层提供与旧协议或者旧实现完全相同的服务。 一般来说,对于同一个协议不同的主机使用了不同的实现(经常由不同的公司编写代码)。事实上,某个层次的协议本身是可以改变的,无须通知上层和下层