II 数据结构
-
连接表
-
进程表
-
输入链路表
-
输出链路表
-
链路分配表
连接表
本表保存与本地套接字有关的全部信息, 尤其是某个套接字是否参与了一条连接, 若是, 该连接处于什么状态。表项以本地套接字为键, 但其它表也持有指向本表的指针。(参见进程表、输入链路表和输出链路表。)
每个表项包含以下信息:
-
本地套接字(键)
-
外部套接字
-
链路
-
连接状态
-
流状态与缓冲区控制
-
指向用户进程的指针
-
重连接控制状态
-
等待呼叫方的队列
本地套接字是一个 32 位数。如果某个套接字尚无对应表项, 可以用空值创建一个。
外部套接字是一个 40 位数。若未建立连接, 该字段将不被赋值。
链路是一个 8 位数, 是数据从发送方传送到接收方所经过的链路。一个套接字是接收套接字, 当且仅当其最低位为零。
连接状态指的是连接是否打开等。可能出现以下几种情况。
-
本地进程已请求连接
-
外部进程已请求连接
-
连接已建立
-
重连接进行中
-
等待关闭
-
等待重连接
流状态与缓冲区控制指的是检查 RFNM, 发送和接受停止、暂停与恢复命令, 以及跟踪传入或传出的数据。
如果进程已请求连接, 则指向用户进程的指针是必需的。
如果重连接正在进行, 则有必要跟踪事件序列。参与重连接的套接字要么是一个端点, 要么是一个中间点。如果它是中间点, 则有必要存储连接到同一进程的另一个中间点的 8 位名称, 并记录 END 和 RDY 命令的接收情况。
最后, 如果在该套接字繁忙时或没有进程占用它时收到 RFC, 这些 RFC 会按先进先出顺序堆叠在指定本地套接字的队列上。
进程表
本表把进程与套接字关联起来。它用于处理系统调用。
输入链路表
本表把接收链路与本地套接字关联起来。它用于判定传入消息的目的方是谁。
输出链路表
本表把发送链路与本地套接字关联起来。它用于解释 RFNM 和 RSM 命令。
链路分配表
链路由接收方分配。本表显示哪些链路是空闲的。