计算机网络:协议层次和服务模型
协议层次和服务模型
层次化方式实现复杂网络功能
- 将网络复杂的功能分成,功能明确的层次,每一层实现了其中一个或一组功能,功能中有其上层可以使用的功能:服务(功能的子集)
- 本层协议实体相互交互,执行本层的协议动作,目的是实现本层功能,通过接口为上层提供更好的服务
- 在实现本层协议的时候,直接利用了下层所提供的服务
- 本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+ 更下层所提供的服务
服务和服务访问点
-
服务Service:低层实体向上层实体提供它们之间的通信的能力
- 服务用户(service user)
- 服务提供者(service provider)
- 服务访问点(service access point),如传输层的socket套接字,区分不同的上层用户;端口(port)
-
原语primitive:上层使用下层服务的形式,高层使用低层提供的服务,以及低层向高层提供服务都是通过服务访问原语进行交互的
如传输层向应用层提供的原语:关闭socket
服务的类型
-
面向连接
定义:在传输数据之前,发送方和接收方需要先建立一条连接,数据传输完成后再释放连接。连接建立的过程通常包括握手、协商传输参数等,确保双方通信状态一致。
特点:
- 提供可靠的传输,保证数据包按顺序到达并且不会丢失或重复。
- 常有错误检测和纠正机制,确保数据传输的完整性和一致性。
- 适用于需要保证数据准确传输的场景,如文件传输、视频流、银行交易等。
协议示例:TCP(传输控制协议)。TCP协议通过三次握手建立连接,传输过程中提供流量控制、错误恢复等机制,保证了数据的可靠性。
-
无连接
定义:发送方在传输数据时不需要建立预先的连接,数据包独立传输,每个数据包(也称为“数据报”)包含目的地址,直接发送到目标方。接收方接收到数据后无需发送确认信息。
特点:
- 传输过程简单,传输效率较高,但不能保证数据包的有序性或完整性,可能会出现丢包或数据包乱序。
- 适用于对传输时延敏感、但对数据完整性要求不高的场景,如实时视频会议、在线游戏、广播等。
协议示例:UDP(用户数据报协议)。UDP协议不提供可靠性保障,发送方直接发送数据,接收方根据实际情况处理,常用于需要快速传输但允许一定程度丢包的场景。
服务和协议的区别
服务(Service):服务是低层实体为高层实体提供的通信功能,借助原语(primitive)进行操作,作用是垂直的,体现了不同层次之间的交互。
协议(Protocol):协议是对等层实体之间在通信过程中必须遵守的规则集合,作用是水平的,确保相同层次的实体能够顺利进行通信。
-
上层协议的实现依赖于下层提供的服务。
-
本层实体通过协议向上层提供更高级别的服务。
数据单元
-
SDU(Service Data Unit)
服务数据单元,是从上层实体传递到下层实体的数据,未经过本层处理。SDU是上层传递给本层的原始数据,本层负责根据协议进行处理或封装。
-
ICI(Interface Control Information)
接口控制信息,是在传输过程中,本层附加在数据单元上的控制信息,用于指示数据的处理方式或传输要求。ICI帮助在不同层之间管理和控制数据的传输。
-
IDU(Interface Data Unit)
接口数据单元,包含SDU和ICI,是在层间传输时的完整数据单元。IDU通过层间接口进行交换,保证数据和控制信息的传递。
-
PDU(Protocol Data Unit)
协议数据单元,是本层在处理SDU后生成的数据单元。PDU是通过本层协议形成的传输单元,可能包含封装后的头部信息(如地址、校验等)以及经过处理的SDU,用于发送到同等层的对等实体。
每一层的PDU都有不同的称呼:帧、分组/数据报
分层处理和实现复杂系统的好处
-
应对复杂系统:
- 概念化:分层处理使系统结构清晰,有助于标识网络组件并描述它们之间的相互关系。
- 分层参考模型:提供清晰的层次结构,有助于理解和设计复杂系统。
-
结构化:
- 模块化:系统通过模块化设计变得更容易维护和升级。各层次之间的职责明确,减少了系统复杂性。
- 独立性:某一层的实现可以独立变化,而不影响其他层次的功能。例如:
- 修改登录程序不会影响系统的其他部分。
- 改变两个节点之间的通信方式不会影响它们之间的应用处理。
- 修改两个翻译之间使用的语言不影响上下层的其他任务。
-
分层思想的潜在弊端:
- 在某些情况下,过度分层可能会引入额外的开销和复杂性,导致系统性能下降或效率低下。
Internet协议栈
-
应用层:负责提供网络应用服务
- 直接为用户或其他应用进程提供网络服务。
- 常见协议:FTP、SMTP、HTTP、DNS。
-
传输层:管理主机之间的数据传输,进程到进程之间的区分
- 在网络层提供的主机到主机通信基础上,进一步细分为进程到进程通信。
- 通过协议将不可靠的通信转换为可靠的传输。
- 常见协议:TCP、UDP。
-
网络层:选择数据报从源到目的地的路由(端到端),转发和路由
- 负责主机之间的端到端通信,确保数据包能够通过多个网络传输到目的地。
- 通信不一定可靠,需结合传输层提供可靠性。
- 常见协议:IP、路由协议。
-
链路层:管理相邻网络节点之间的数据传输
- 处理相邻节点之间的通信,实现点对点通信。
- 传输可以是可靠或不可靠的。
- 常见协议:P2P(点对点协议)、802.11(WiFi)、以太网(Ethernet)。
-
物理层:负责在物理介质上传输比特流
- 将数据以比特形式在线路上传送,确保信号的物理传输。
链路层和物理层通常都被封装到一起。
ISO/OSI参考模型
在传输层和应用层之间,还有会话层和表示层。
表示层与会话层
-
表示层:负责允许应用程序解释传输的数据。提供数据的加密、压缩以及与机器相关的格式转换功能。
- 例如:数据加密、数据压缩、不同格式之间的转换。
-
会话层:管理数据交换的同步。提供检查点、恢复等机制,以确保会话过程中的数据完整性。
- 例如:数据传输的同步与恢复控制。
在互联网协议栈中的缺失
- 互联网协议栈(TCP/IP协议栈)没有明确的表示层和会话层。
- 这些功能如果需要,必须由应用程序自身实现。
这些层是否必要?
- 是否需要这些服务取决于具体应用的需求:
- 如果应用需要加密、压缩或同步恢复等功能,则需要在应用层自行实现这些机制。
各层次的协议数据单元PDU
- 应用层:
- PDU:报文(Message)
- 描述:应用层的PDU通常被称为“报文”,它代表应用程序之间传输的数据。
- 传输层:
- PDU:报文段(Segment)
- TCP段
- UDP数据报
- PDU:报文段(Segment)
- 网络层:
- PDU:分组(Packet),如果是无连接方式,则为数据报datagram
- 数据链路层:
- PDU:帧(Frame)
- 描述:数据链路层的PDU称为“帧”。在这一层,数据在两个相邻节点之间传输,帧包含了错误检测与纠正信息,确保点到点或链路到链路的可靠传输。
- 物理层:
- PDU:比特(Bit)
- 描述:物理层的PDU是“比特”。它负责将数据帧中的比特以电信号、光信号或无线信号的形式在物理介质上传输,确保信号的物理传送。