端口监听是什么?

14

“监听”端口是指连续轮询该端口、离散轮询还是中断驱动进程,具体在“监听端口”中发生了什么?


1
深入描述了端口是如何监听“拉”或“推”的。 - Dinushan
答案描述了非常低层的机制,低于 tcp/udp端口 甚至 监听 的概念,这对于任何网络数据接收都是正确的。 - Kevin
2个回答

13

端口只是一个概念,不像您可以检查一些内存位,等待某些信息。

因此,监听端口将会教内核在接收到具有特定端口号的数据包时要执行什么操作:将其传输到请求侦听该端口的进程,而不是回复或不回复该端口未打开。

NB:这只是猜测,我没有调查任何内核实现。

编辑:在进程方面,

  • listen会告诉内核您对特定的约会端口感兴趣
  • (我不确定listenaccept之间发生了什么事情,无论是内核缓冲新连接还是拒绝它们,直到调用accept,请参阅相关手册)
  • accept将连接绑定到一个通信端口,并开始缓冲传入的数据包
  • recv(或pollselect肯定)将从接收缓冲区中获取数据

这意味着当接收到该数据包时,内核将中断(通知)该进程。 - Dinushan

7
内核从传入的IP数据包中提取目标端口,然后将数据包转发到所有订阅该特定端口的接收者(是的,可能有多个)。用户进程通常使用select(2)或poll(2)等待事件,但这种轮询与传统轮询(如“读取I/O端口;延迟500毫秒”)不同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接