[net.bugs.4bsd] Networking Lossage in 4.1c Design

jdd@allegra.UUCP (07/01/83)

Well, if we're talking 4.1c lossage in net.bugs.4bsd, here's a great one:

In the design of the TCP Internet protocols, a channel is uniquely specified
by the 4-tuple:

	(machine-a, port-a, machine-b, port-b)

The same port number on the same machine can be associated with any number
of connections so long as the other machine and/or the other port differ.
This is the definition; this is reality.

Now the way the Internet domain is mapped onto the 4.1c networking
apparatus, one uses the "bind" system call to bind a socket to a particular
AF_INET port number.  \Unfortunately/, "bind" fails if any other socket is
currently bound to that port number on that machine!

I discovered this restriction when I tried to port a distributed program
that opened several TCP channels, reusing the same local port numbers on
each machine.  This is allowed by the Internet standard but not by 4.1c.

This is more a design flaw than a bug, since it's hard to imagine how to fix
it in the context of the 4.1c name-binding mechanism.  

Cheers,
John ("My Fingers Can't Type Any More") DeTreville
Bell Labs, Murray Hill

mo@ucbvax.UUCP (07/01/83)

The the problem with rebinding addresses is a non-problem.  There is
an option which is supplied to the socket() call to allow addresss
rebinding exactly compliant with the semantics of TCP.  This is an
option because not all protocols in the universe take TCP's view
of connection management.
	-Mike O'Dell