跳到主要内容

II 数据结构

  1. 连接表

  2. 进程表

  3. 输入链路表

  4. 输出链路表

  5. 链路分配表

连接表​

本表保存与本地套接字有关的全部信息, 尤其是某个套接字是否参与了一条连接, 若是, 该连接处于什么状态。表项以本地套接字为键, 但其它表也持有指向本表的指针。(参见进程表、输入链路表和输出链路表。)

每个表项包含以下信息:

  1. 本地套接字(键)

  2. 外部套接字

  3. 链路

  4. 连接状态

  5. 流状态与缓冲区控制

  6. 指向用户进程的指针

  7. 重连接控制状态

  8. 等待呼叫方的队列

本地套接字是一个 32 位数。如果某个套接字尚无对应表项, 可以用空值创建一个。

外部套接字是一个 40 位数。若未建立连接, 该字段将不被赋值。

链路是一个 8 位数, 是数据从发送方传送到接收方所经过的链路。一个套接字是接收套接字, 当且仅当其最低位为零。

连接状态指的是连接是否打开等。可能出现以下几种情况。

  1. 本地进程已请求连接

  2. 外部进程已请求连接

  3. 连接已建立

  4. 重连接进行中

  5. 等待关闭

  6. 等待重连接

流状态与缓冲区控制指的是检查 RFNM, 发送和接受停止、暂停与恢复命令, 以及跟踪传入或传出的数据。

如果进程已请求连接, 则指向用户进程的指针是必需的。

如果重连接正在进行, 则有必要跟踪事件序列。参与重连接的套接字要么是一个端点, 要么是一个中间点。如果它是中间点, 则有必要存储连接到同一进程的另一个中间点的 8 位名称, 并记录 END 和 RDY 命令的接收情况。

最后, 如果在该套接字繁忙时或没有进程占用它时收到 RFC, 这些 RFC 会按先进先出顺序堆叠在指定本地套接字的队列上。

进程表​

本表把进程与套接字关联起来。它用于处理系统调用。

输入链路表​

本表把接收链路与本地套接字关联起来。它用于判定传入消息的目的方是谁。

输出链路表​

本表把发送链路与本地套接字关联起来。它用于解释 RFNM 和 RSM 命令。

链路分配表​

链路由接收方分配。本表显示哪些链路是空闲的。