端口只是一个概念,不像您可以检查一些内存位,等待某些信息。 因此,监听端口将会教内核在接收到具有特定端口号的数据包时要执行什么操作:将其传输到请求侦听该端口的进程,而不是回复或不回复该端口未打开。 NB:这只是猜测,我没有调查任何内核实现。 编辑:在进程方面, listen会告诉内核您对特定的约会端口感兴趣 (我不确定listen和accept之间发生了什么事情,无论是内核缓冲新连接还是拒绝它们,直到调用accept,请参阅相关手册) accept将连接绑定到一个通信端口,并开始缓冲传入的数据包 recv(或poll或select肯定)将从接收缓冲区中获取数据
内核从传入的IP数据包中提取目标端口,然后将数据包转发到所有订阅该特定端口的接收者(是的,可能有多个)。用户进程通常使用select(2)或poll(2)等待事件,但这种轮询与传统轮询(如“读取I/O端口;延迟500毫秒”)不同。