[TUHS] History of select(2)

Johnny Billquist bqt at update.uu.se
Sun Jan 15 08:02:02 AEST 2017

On 2017-01-13 18:57, Paul Ruizendaal <pnr at planet.nl> wrote:
> On 12 Jan 2017, at 4:54 , Clem Cole wrote:
>> The point is that while I have no memory of capac(), but I can confirm that I definitely programmed with the empty() system call and Rand ports on a v6 based kernel in the mid-1970s and that it was definitely at places besides Rand themselves.
> Thank you for confirming that. If anybody knows of surviving source for these extensions I'd love to hear about it. Although the description in the implementation report is clear enough to recreate it (it would seem to be one file similar to pipe.c and a pseudo device driver similar in size to mem.c), original code is better. It is also possible that the code in pipe.c was modified to drive both pipes and ports -- there would have been a lot of similarity between the two, and kernel space was at a premium.
>> [...] confirming something I have been saying for few years and some people have had a hard time believing. The specifications for what would become IP and TCP were kicking around the ARPAnet in the late 1970s.
> My understanding is that all RFC's and IEN's were available to all legit users of the Arpanet. By 1979 there were 90 nodes (IMP's) and about 200 hosts connected. I don't get the impression that stuff was always easy to find, with Postel making a few posts about putting together "protocol information binders". Apparently nobody had the idea to put all RFC's in a directory and give FTP access to it.

They were, and still are. And I suspect Clem is thinking of me, as I 
constantly question his memory on this subject.

The problem is that all the RFCs are available, and they are later than 
this. The ARPAnet existed in 1979, but it was not using TCP/IP. If you 
look at the early drafts of TCP/IP, from around 1980-1981, you will also 
see that there are significant differences compared to the TCP/IP we 
know today. There was no ICMP, for example. Error handling and passing 
around looked different.
IMPs did not talk IP, just for the record.

RFC760 defines IPv4, and is dated January 1980. It refers to some 
previous documents that describe IP, but they are not RFCs. Also, if you 
look at RFC760, you will see that errors were supposed to be handled 
through options in the packet header, and that IP addresses, while 32 
bits, were just split into 8 bits for network number, and 24 bits for 
host. There were obviously still some work needed before we got to what 
people think on IPv4 today. Anyone implementing RFC760 would probably 
not work at all with an IPv4 implementation that exist today.

> I am not sure how available this stuff was outside the Arpanet community. I think I should put a question out about this, over on the internet history mailing list.
> As an aside: IMHO, conceptually the difference between NCP and TCP wasn't all that big. In my current understanding the big difference was that NCP assumes in-order, reliable delivery of packets (as was the case between IMP's) and that TCP allows for unreliable links. Otherwise, the connection build-up and tear-down and the flow control were similar. See for instance RFC54 and RFC55 from 1970. My point is: yes, these concepts were kicking around for over a decade in academia before BSD.

Not sure if BSD is a good reference point. Much stuff was not actually 
done on Unix systems at all, if you start reading machine lists in the 
early RFCs. Unix had this UUCP thingy, that they liked. ;-) BSD and 
networking research came more to the front doing all the refinements 
over the years.

Anyway, yes, for sure TCP did not come out of the void. It was based on 
earlier work. But there are some significant differences between TCP/IP 
and NCP, which is why you had the big switch day.


Johnny Billquist                  || "I'm on a bus
                                   ||  on a psychedelic trip
email: bqt at softjar.se             ||  Reading murder books
pdp is alive!                     ||  tryin' to stay hip" - B. Idol

More information about the TUHS mailing list