文章目录
计算机网络体系结构
为了降低网络设计的复杂性
,绝大多数网络都组织成一个层次栈(a stack of layer)或分级栈(a stack of level),每一层都建立在其下一层的基础之上。
层次结构的要点
- 除了在物理媒体上进行的是实通信之外,其余各对等实体间进行的都是虚通信。
- 对等层的虚通信必须遵循该层的协议。
- n层的虚通信是通过n/n-1层间接口处n-1层提供的服务以及n-1层的通信(通常也是虚通信)来实现的。
层次结构划分的原则
- 以功能作为划分层次的基础
- 各层之间相互独立,每层只能实现一种相对独立的功能
- 每层之间界面自然清晰,易于理解,相互交流少
- 结构上可分割开,每层都采用最合适的技术来实现
- 保持下层对上层的独立性,上层单层使用下层提供的服务
- 层数应适中。若层数太少,则造成每一层的协议太复杂;若层数太多,则体系结构过于复杂,使描述和实现各层功能变得困难。
- 整个分层结构应能促进标准化工作
分层结构中的相关概念
实体
- 第n层中的活动元素称为n层实体。同一层的实体称为
对等实体(peer)
。这些对等体可能是软件过程、硬件设备,或者甚至是人类。换句话说,正是这些对等体为了实现彼此沟通才使用协议来进行通信。
协议(protocol)
- 一台机器上的第 n 层与另一台机器上的第 n 层进行对话,该对话中使用的规则和约定统称为第 n 层协议。基本上,所谓协议是指通信双方就如何进行通信的一种约定。
- 为进行网络中的对等实体数据交换而建立的规则,标准或者约定称为网络协议。
- 协议是水平的,不对等实体之间不存在协议
- 协议由
语法、语义、同步
三部分组成- 语法(Syntax):规定传输数据与控制信息的结构或格式
- 语义(Semantics):规定需要发出何种控制信息,完成何种动作或做出何种响应
- 同步(Timing):规定事件实现顺序的详细说明
- 一个特定的系统所使用的一组协议,即每一层一个协议,称为协议栈(protocol stack)。
接口(interface)
- 接口定义了下层向上层提供哪些原语操作和服务,是上层使用下层服务的入口。
- 每层只能为紧邻的层次之间定义接口,不能跨层定义接口。
服务
- 服务指下层为紧邻的上层提供的功能调用,它是垂直的。本层能为上一层服务,但要实现本层协议还需要下一层所提供的服务。
- 服务定义了该层准备代表其用户执行哪些操作,但是它并不涉及如何实现这些操作。服务与两层之间的接口有关,
低层是服务提供者,而上层是服务用户
。 - 注意:
在一层内完成的全部功能并非都称之为服务,只有那些能够被高一层实体“看得见”的功能才能称为服务
。
服务原语(Service Primitiv)
- 上层使用下层所提供的服务必须与下层交换一些指令,这些指令在OSI中被称为服务原语。
- 一个服务由一组原语(primitive)正式说明,用户进程通过这些原语(操作)来访问该服务。
与协议不同的是,服务原语用于服务提供者与服务用户,而协议是用于服务用户之间的通信
。- OSI将原语划分为4类:
原语 | 含义 |
---|---|
请求(Request) | 由服务用户发往服务提供者,请求它完成某项工作 |
指示(Indication) | 由服务提供者发往服务用户,指示发生了某些事件 |
响应(Response) | 由服务用户发往服务提供者,对前面发生的指示的响应 |
证实(Confirmation) | 由服务提供者发往服务用户,对前面发生的请求的证实 |
- Request与Confirm是一对原语,用于上层向本层发起的服务请求;Indication与Response是一对原语,用于本层向上层发起的事件指示。
- 有应答服务包括全部4种原语,无应答服务则只有请求和指示。
服务与协议的关系
- 服务是各层向它上层提供的一组原语,定义了两层之间的接口。
- 协议是同层对等实体之间交换数据帧、分组和报文的格式及意义等信息的一组规则。
- 服务确定了能为上一层提供的操作。
- 协议实现为上一层提供服务的具体方法。
- 对等实体利用协议来实现它们的服务定义,它们可以自由地改变协议,只要不改变呈现给它们用户的服务即可。
- 只有本层协议的实现才能保证向上一层提供服务,本层的服务用户只能看见服务而无法看见下面的协议,即
下面的协议对上层的服务用户是透明的
。
网络体系结构(network architecture)
- 层和协议的集合称为网络体系结构
网络体系结构的特点
- 以功能作为划分层次的基础。
- n层的实体在实现自身定义的功能时,只能使用第n-1层提供的服务。
- 第n层在向第n+1层提供的服务时,此服务不仅包含第n层本身的功能,还包含由下层服务提供的功能。
- 仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽。
封装
- 各个层次中数据单位都分为两部分,一是数据部分,即SDU;二是控制信息部分,即PCI,它们共同组成PDU
- SDU服务数据单元:为完成用户所要求的功能而应传送的数据
- PCI协议控制信息:控制协议操作的信息
- PDU协议数据单元:对等层次之间传送的数据单位
-
n
−
S
D
U
+
n
−
P
C
I
=
n
−
P
D
U
=
(
n
−
1
)
−
S
D
U
n-SDU + n-PCI = n-PDU = ( n - 1 )-SDU
n−SDU+n−PCI=n−PDU=(n−1)−SDU
发送端就是对应用层数据一层一层加头的过程,到接收端后,接收端再一层一层去掉头部信息,然后交给对应的应用程序
层次设计问题
检错与纠错
- 由于存在电气噪声、随机无线信号、硬件缺陷、
软件错误等原因,其中的某些比特到达接收端时已经遭到了损坏(即被逆转了) - 从接收到的信息中发现错误所用的一种机制是检错(error detection)编码;然后重新传输接收到的不正确信息,直到它被正确接收为止
- 更强大的编码不仅能检错,还能纠错(error correction),即从最初收到的可能不正确的比特中恢复正确的消息。
- 这两种机制的工作都需要在被传的信息中添加冗余信息。这些冗余信息被较低层次用来保障数据包在个别链路上的正确传输,也可被较高层次用来检测接收到的数据包是否包含了正确的内容。
路由(routing)
- 另一个可靠性问题是找到通过网络的工作路径。在源和目的地之间经常存在多条路径,而且在一个大型网络中可能有一些链路或路由器偶尔发生故障。
- 网络应该能自动做出这种路由决策。这个主题就是所谓的路由(routing)。
面向连接与无连接服务
面向连接的服务(connection-oriented service)
- 为了使用面向连接的网络服务,服务用户首先必须建立一个连接,然后使用该连接传输数据,最后释放该连接。
- 特点
- 静态地分配资源,传输前需要建立连接,
适用于在一段时间内向一个目的地址发送大量的数据
- 在绝大多数情况下,数据位保持原来的顺序,所以数据位都会按照发送的顺序到达
- 静态地分配资源,传输前需要建立连接,
- 参考模型:电话系统
无连接服务(conncetionless service)
- 不需要建立连接直接进行数据的传输,报文之间相互独立,每个报文(信件)都携带了完整的目标地址,每个报文都由系统中的中间节点路由,而且路由独立于后续报文。
- 报文(message)在不同的上下文中有不同的称呼;数据包/包(packet)是网络层的报文。
- 存储-转发交换(store-and-forward switching):中间节点只能在收到报文的全部内容之后再将该报文发送给下一个节点的处理方式
- 直通式交换(cut-through switching):在报文还没有被全部接收完毕之前就向下一个节点传输的处理方式
- 可能发生先发送的报文被延迟,因而后发送的报文比它先到达的情况。
- 参考模型:邮政系统
服务质量(quality of service)
- 可靠与不可靠性是面向连接或者无连接服务的一种性质
- 可靠服务:网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。
- 一般情况下,一个可靠服务是这样实现的:接收方向发送方确认收到的每个报文,因而发送方可以据此保证报文已经到达接收方。
- 不可靠服务:尽量正确、可靠地传送,不能保证数据正确、可靠地传送到目的地。
- 对于不可靠服务,其网络的正确性、可靠性要靠用户或应用来保证
应答
- 有应答服务是指接收方在收到数据后向发送方给出相相应的应答。
- 该应答由传输系统内部自动实现,所发送的应答既可以是肯定应答,也可以是否定应答,推收到的数据有错误时发送否定应答。
- 例如,文件传输服务就是种有应答服务。
- 无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现。
- 例如,对于www服务,客户端收到服务器发送的页面文件后不给出应答。
面向连接服务的类型
- 报文流:可靠的,报文的边界始终得到保持。
- 字节流:可靠的,该连接只是一个字节流,没有任何报文边界。
对于报文流,发送两个 1024 字节的报文,收到的仍然是两个独立的长度为1024 字节的报文,而决不可能变成一个长度为 2048字节的报文。
而对于字节流,当 2048 个字节到达接收方时,接收方无法判断发送方发出的是一个长度为 2048 字节的报文,还是两个长度为1024 字节的报文,或者是 2048个长度只有 1 字节的报文。
- 不可靠的面向连接服务 :对于有些应用,因确认而引入的传输延迟是不可接受的。比如说IP 语音(voice over IP)
无连接服务的类型
- 数据报服务(datagram service):不可靠的无连接服务,一般不会给发送方反馈任何确认消息。
- 有确认的数据报服务(acknowledged datagram service):对每一个接收到的报文都响应一个确认。
- 请求-应答服务(request-reply service):发送方传输一个包含了某个请求的数据报;接受方以
一个包含了请求结果的应答数据报
作为反馈。
请求-应答服务通常用在客户机-服务器模型中:客户机发出一个请求,然后服务器对此做出响应。例如,一个手机客户向地图服务器发出一个请求,要求查询其当前位置的地图数据。