开发者

What exactly is Port Listening

Does "Listening" a port means a continuous polling to that port or a discrete polling or an interrupt driven process. What exactly is going on in "Listening to a Por开发者_运维知识库t"?


A port is nothing more than a concept, it's not like if you could check some memory bits, waiting for some information.

So, listening to a port will teach the kernel what to do upon receiving packets with this specific port number: transmit it to the process which asked to listen on that port, instead of replying [or not] that the port in not open.

NB: that's just speculations, I didn't investigate any kernel implementation.

EDIT: On the process side,

  • listen will tell the kernel that you're interested in a particular rendez-vous port
  • (I'm not sure what happens between listen and accept, either the kernel buffers the new connections or rejects them until accept has been called, please refer to the relevant manual)
  • accept will bind the connection to a communication port, and start buffering the incoming packets
  • recv (or poll or select certainly) will pickup data from the reception buffer


The kernel extracts the destination port from incoming IP-packets and then forwards the packet to all receivers, that registered for this specific port (yes, there may be multiple). A user process normally uses select(2) or poll(2) to wait for an event, but this poll is different from the traditional polling like "read I/O port; delay 500 ms".

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜