Reputation: 2077
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 Port"?
Upvotes: 14
Views: 13571
Reputation: 4735
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 portlisten
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 packetsrecv
(or poll
or select
certainly) will pickup data from the reception bufferUpvotes: 14
Reputation: 5722
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".
Upvotes: 7