跳到主要内容

II. 环境

我们假定主机运行分时操作系统, 其中 CPU 由各进程共享。

我们设想每个进程都带有一个用户号。可能有多个进程具有相同的用户号;若如此, 它们在使用网络方面应当相互协作。

我们设想每个进程包含一组该进程独有的端口。这些端口用于进程的输入或输出, 数据来自或去往文件、设备或其他进程。

我们还设想, 进程在尝试 LISTEN 或 CONNECT 时不会被置于休眠(即被阻塞或挂起)。相反, 当某个操作完成时它会得到通知。当然, 进程也可以自行挂起, 使其仅在某个外部事件发生时才被唤醒。

为参与网络活动, 进程将一个本地套接字附接到它的某个端口上。套接字由用户号、主机和 AEN 标识;如果两者的用户号相同且位于同一主机, 则该套接字对该进程而言是本地的。因此, 进程在引用本地套接字时只需指定 AEN。

每个端口都有一个状态, 该状态会被系统调用以及进程外部的并发事件(例如来自外部主机的“关闭连接”命令)修改。进程可以随时(通过 STATUS 系统调用)查看端口的状态。

我们假定端口与套接字之间是一一对应的。