📜  什么是 SPX(序列包交换)?

📅  最后修改于: 2022-05-13 01:57:03.366000             🧑  作者: Mango

什么是 SPX(序列包交换)?

先决条件: Novell NetWare 简介

由 Novell 开发的 NetWare 是一种扩展到网络操作系统的 NOS。 NOS 是一种特殊的操作系统,它帮助网络中的个人计算机(例如:连接在 LAN 中的计算机)共享文件和资源,如打印机。它们使通过网络连接的 PC 在客户端-服务器架构中运行。 IPX/SPX 是 NetWare OS 中使用的协议。

IPX 协议对应于网络层,其之上的 SPX 协议对应于 OSI 模型中的传输层。 IPX/SPX 类似于 TCP/IP,其中 IPX 扮演 IP 角色,SPX 扮演 TCP 角色。

SPX 协议

SPX 协议是由 Novell 为局域网开发的。它扩展到顺序数据包交换,它是面向连接的。它可以借助 IPX 协议实现网络中客户端和服务器之间的信息交换。 IPX/SPX 协议源自施乐网络系统中定义的 SPP(序列包协议)。 SPP 是无连接协议,而 SPX 是面向连接的。

SPX 数据包的结构

SPX数据包格式

SPX数据包格式

SPX 数据包包含一个 42 字节的报头,数据可能在 0 到 534 字节之间变化。最小长度为 42 字节,即没有任何数据。前 30 个字节取自 IPX 标头,其余 12 个字节是属于 SPX 的新的 7 个字段(在上图中称为 1…7)。

IPX 标头考虑的字段如下:

校验和

需要校验和来维护所交换数据的完整性。源和目标在某些方法中派生校验和。源将其附加到标头并将其发送到目标。另一方面,目的地将自己计算的校验和与数据包头中的校验和进行比较。如果存在不匹配,则称数据已损坏。通常,16 位校验和用于网络协议。 IPX 还在标头中使用2 个字节作为校验和。如果设置了FFFF的十六进制值,则不使用校验和。

长度

这表示交换的数据包的总长度(标头 + 数据)。它消耗2 个字节

运输控制

这是一个1 字节字段,用于计算数据包通过的路由器数量。从值 0 开始,每个收到数据包的路由器都会在该字段中添加“1”。当数据包经过 15 个路由器时,第 16 个路由器将丢弃该数据包。

数据包类型

这用于了解数据包呈现什么服务。它也只需要1 个字节。根据此字节的值,以下任一项都可以是数据包类型:

  1. 0 – 未知
  2. 1 – 路由信息协议
  3. 2 – 回声包
  4. 3 – 错误包
  5. 4 – 数据包交换协议
  6. 5 – 序列数据包协议
  7. 17- NetWare 核心协议

源地址

IPX寻址结构中提到了数据包的源地址。它需要12 个字节

目的地址

必须将数据包传送到的目标应用程序的地址。它应该遵循 IPX 寻址结构。为了向网络中的所有计算机发送数据 FF:FF:FF:FF:FF:应在目标中指定 FF。它需要12 个字节

IPX 寻址结构

IPX 寻址结构包含三个字段:

  1. 网络
  2. 节点
  3. 插座

网络用于在互联网络通信中指定网络的编号。互联网络通信允许存在于不同电缆连接中的节点之间进行数据交换。如果网络号被提及为 00:00:00:00,则通信发生在同一网络内。指定网络的编号需要32 位

节点用于唯一标识该网络中的个人计算机。

套接字用于识别数据包必须传送到的目标端的适当应用程序。

因此, 2(校验和)+ 2(长度)+ 1(传输控制)+ 1(数据包类型)+ 12(源地址)+ 12(目标地址)= 30 字节的 IPX 报头。 IPX 标头以及以下七个字段组成了 SPX 数据包的标头。

七个新领域是:

  1. 连接控制
  2. 数据流类型
  3. 源连接 ID
  4. 目标连接 ID
  5. 序列号
  6. 确认号码
  7. 分配编号

1.连接控制

它是一个1 字节的字段,用于控制双向数据交换。根据数据包是用于系统还是单个应用程序,将设置四个标志。标志如下:

  • END_OF_MESSAGE
  • 注意力
  • ACKNOWLEDGEMENT_REQUIRED
  • 系统包

2.数据流类型

它是一个1 字节字段,表示数据包中的数据类型。十六进制值0xFE 和 0xFF保留用于特定目的。客户端使用值 0xFE 表示这是最后一条消息,并且传递的数据包称为连接结束数据包。如果该值设置为 0xFF,则它是确认连接终止的系统数据包,这称为连接结束确认数据包。

3 & 4. 源连接 ID & 目标连接 ID

这些是指与本地源和远程目标相关联的标识号。每个占用2 个字节,因此两者一起占用4 个字节

5.序号

这是一个由 SPX 协议管理的计数,用于指示在单个方向上发送的数据包数。这需要2 个字节,它可以达到的最大值是 0xFFFF(65,535)。在最大值之后,它重置为“0”。

6.确认号码

这需要2 个字节并指示预期的序列号。这里的最大值也是 0xFFFF(65,535)。可以使用确认号确定重复的数据包。如果新数据包的序列号 < 确认号,则它是重复数据包,必须丢弃。

7. 分配编号

数据包将被发送,直到本地源的序列号等于远程目标的分配号。要控制数据流并了解正在侦听 SPX 数据包的剩余缓冲区,可以使用(目标分配编号 - 确认编号)公式。它消耗2 个字节。

TCP/IP 和 IPX/SPX 的区别

S. No.                             TCP/IP                                             IPX/SPX                                                       
1.This is the basis of the Internet.Mainly used and optimized for LAN connections and not suitable for the internet.
2.It is a connection-less protocolIt is a connection-oriented protocol.
3.The addressing logic is a bit complex as it requires both MAC, IP address, and masking techniques for routing the data.The addressing logic is simpler as only the MAC address is used and is broken down into ethernet card and node addresses.
4.The network number has to be derived from the IP address. The subnet mask will be used for derivation.Network numbers are separate and do not depend on the local address of the nodes.
5.Speed is lesser compared to IPX/SPX stack.Faster stack compared to TCP/IP.