Network programming 端口监听到底是什么

Network programming 端口监听到底是什么,network-programming,listener,port,Network Programming,Listener,Port,“侦听”端口是否意味着对该端口的连续轮询或离散轮询或中断驱动过程。 “监听端口”到底是怎么回事?端口只不过是一个概念,它不像你可以检查一些内存位,等待一些信息 因此,监听一个端口将告诉内核在接收到具有此特定端口号的数据包时该怎么做:将其发送到请求监听该端口的进程,而不是回复[或不]该端口未打开 注意:这只是猜测,我没有调查任何内核实现 编辑:在流程端 将告诉内核您对特定的rendez-vous端口感兴趣 (我不确定listen和accept之间会发生什么,要么内核缓冲新连接,要么拒绝它们,直到

“侦听”端口是否意味着对该端口的连续轮询或离散轮询或中断驱动过程。 “监听端口”到底是怎么回事?

端口只不过是一个概念,它不像你可以检查一些内存位,等待一些信息

因此,监听一个端口将告诉内核在接收到具有此特定端口号的数据包时该怎么做:将其发送到请求监听该端口的进程,而不是回复[或不]该端口未打开

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

编辑:在流程端

  • 将告诉内核您对特定的rendez-vous端口感兴趣
  • (我不确定
    listen
    accept
    之间会发生什么,要么内核缓冲新连接,要么拒绝它们,直到调用
    accept
    ,请参阅相关手册)
  • 将连接绑定到通信端口,并开始缓冲传入的数据包
  • (或
    轮询
    选择
    当然)将从接收缓冲区拾取数据

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

这意味着内核将在收到此数据包时中断(通知)进程。这是由程序员提供的。stackexchange[how-A-port-listens-pull-or-push]对此进行了深入描述。[1] :答案描述了非常低级别的机制,低于tcp/udp、端口甚至侦听的概念,适用于任何网络数据接收。