协议层次和服务模型

层次化方式实现复杂网络功能

  • 将网络复杂的功能分成,功能明确的层次,每一层实现了其中一个或一组功能,功能中有其上层可以使用的功能:服务(功能的子集)
  • 本层协议实体相互交互,执行本层的协议动作,目的是实现本层功能,通过接口为上层提供更好的服务
  • 在实现本层协议的时候,直接利用了下层所提供的服务
  • 本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+ 更下层所提供的服务

服务和服务访问点

  • 服务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:分组(Packet),如果是无连接方式,则为数据报datagram
  • 数据链路层
    • PDU:帧(Frame)
    • 描述:数据链路层的PDU称为“帧”。在这一层,数据在两个相邻节点之间传输,帧包含了错误检测与纠正信息,确保点到点或链路到链路的可靠传输。
  • 物理层
    • PDU:比特(Bit)
    • 描述:物理层的PDU是“比特”。它负责将数据帧中的比特以电信号、光信号或无线信号的形式在物理介质上传输,确保信号的物理传送。