Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10 5/3/83; site allegra.UUCP
Path: utzoo!linus!genrad!mit-eddi!mit-vax!eagle!allegra!jdd
From: jdd@allegra.UUCP
Newsgroups: net.bugs.4bsd
Subject: Networking Lossage in 4.1c Design
Message-ID: <1620@allegra.UUCP>
Date: Thu, 30-Jun-83 22:30:21 EDT
Article-I.D.: allegra.1620
Posted: Thu Jun 30 22:30:21 1983
Date-Received: Fri, 1-Jul-83 06:25:30 EDT
Organization: Bell Labs, Murray Hill
Lines: 26

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