RE: Re: Call queueing


art@acc.arpa
8 Sep 88 09:20:00 PST


>Why does this connection queue have to be handled by the kernel? Why couldn't
>the application just open and initialise for listening (not in the BSD syscall
>sense) as many transport endpoints as it's queue needs to be long?
>
>Opinions, anybody?

At least for BSD, the kernel will not allow more than one listening socket
to be bound to a particular local endpoint address, but the server wants to
be able to open multiple connections which refer to the same local endpoint
address. To deal with this, the kernel accepts multiple connections and
queues them at the listening socket. When an accept system call is issued,
an open connection is associated with a new socket which is then returned
to the user. One can think of the new socket a "clone" of the listening
socket.

To allow multiple listening sockets to be bound to the same endpoint address
opens up a bunch of ambiguity problems.
(TCP doesn't know if identical services are available on all those sockets)

                                                Art Berggreen
                                                art@acc.arpa

------



This archive was generated by hypermail 2.0b3 on Thu Mar 09 2000 - 14:43:14 GMT