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
andaccept
, either the kernel buffers the new connections or rejects them untilaccept
has been called, please refer to the relevant manual) accept
will bind the connection to a communication port, and start buffering the incoming packetsrecv
(orpoll
orselect
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".
精彩评论