<div dir="ltr">Hi John,<div><br></div><div>Just FYI, the Unix TCP listing that survives implemented TCP version 4 and is dated March 30, 1979.   It is however a descendant of earlier versions that started with TCP 2.5.  </div>
<div><br></div><div>As far as I know, there were no other Unix TCPs at the time - mid 1977.   At least neither BBN nor (D)ARPA knew of any (and I'd expect Vint would have known).   We needed a TCP for a Unix system as a part of another ARPA project, so I got the task to take Jim Mathis' existing LSI-11 TCP code and tweak it as needed to get a TCP functional on Unix on a PDP-11/40 for that project to use.   That ended up involving mostly kernel hacking to get the right primitives into Unix and creating interfaces for user processes.   It was never intended to be a general purpose Unix implementation, and the design choices necessary to get everything into a PDP-11/40 were not what anyone would want for a more capable computer, so other implementations were subsequently started (funded) by DARPA and DCEC at BBN to create "from scratch" general purpose TCPs for PDP11/45 and /70 Unix systems (Rob Gurwitz, Al Nemeth, Mike Wingfield and others I can't remember...).</div>
<div><br></div><div>My yellowing lab notebook saved with the listing contains diary entries, e.g., July 27, 1977: "got TCP11 Unix version to assemble", and September 16, 1977: "TCP and Al Spector's TCP can talk fine" (Al was using Mathis' TCP on an LSI-11 communicating with the Unix system).  Most of the intervening entries had to do with recovering from disk crashes and other such annoyances.  By 1979 the TCP working group had gotten to the TCP4 stage and I modified the original code as needed along the way as we made changes to get from 2.5 to 2.5 plus epsilon to eventually 4 as captured by the 1979 listing.</div>
<div><br></div><div>Fun times!</div><div><br></div><div>/Jack Haverty</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, May 18, 2014 at 12:40 PM, John Day <span dir="ltr"><<a href="mailto:jeanjour@comcast.net" target="_blank">jeanjour@comcast.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">At 11:46 AM -0700 5/18/14, Jack Haverty wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Since this is a "history" forum, I'll offer my perspective as one who was there in the 80s and involved in the TCP work...<br>
<br>
IMHO, it's important to make the distinction between the protocol and the implementations of that protocol.   The protocol defines the formats of the data passing back and forth "on the wire", and the required actions that the computer at each and take in response to receiving that data.<br>

<br>
How a particular implementation performs that response is totally up to that particular implementer.<br>
<br>
So, when you're talking about ARQ, packet timers, retransmission algorithms, et al, you're talking about the *implementation*, rather than the TCP protocol itself.<br>
<br>
I wrote a TCP back in the 1979 timeframe - the first one for a Unix system, running on a PDP-11/40.  It first implemented TCP version 2.5, and later evolved to version 4.   It was a very basic implementation, no "slow start" or any other such niceties that were created as the Internet grew.<br>

</blockquote>
<br></div>
I think we went over this earlier and the conclusion was, we weren't sure.  But I can say Jack's was probably the first on an 11/40.<br>
<br>
By 1979, we were on our second TCP implementation on Unix on an 11/45 and 11/70, and would start our third soon.<br>
<br>
Take care,<br>
John<br>
</blockquote></div><br></div>