20

I was wondering what were the major reasons that TCP/IP became the protocol used to communicate over the Internet, as this was uncertain for quite some time in the 80'es and early 90'es.

Wikipedia says at https://en.wikipedia.org/wiki/Internet_protocol_suite things like

In March 1982, the US Department of Defense declared TCP/IP as the standard for all military computer networking

The spread of TCP/IP was fueled further in June 1989, when the University of California, Berkeley agreed to place the TCP/IP code developed for BSD UNIX into the public domain.

and lots of mentioning of various proprietary protocols.

So, was it the "If you want to be used by the military, you must speak TCP/IP" decree that was the real reason and then just add time, or something else?

9
  • 2
  • 19
    "IP" stands for "Internet Protocol" so by definition it is the internet protocol. Perhaps you're really asking "Why did internet become the standard for all networking instead of some other scheme?"
    – Chris Dodd
    Apr 11 at 22:20
  • 4
    @Frog There is also UDP/IP! Apr 12 at 11:29
  • 5
    From what I have heard BSD played a large role much earlier: Even though it wasn't in the public domain it was factually open source: A proven working implementation for everybody to see. A lot of theoretically hard-to-understand and incomplete requirements become clear if you have an implementation to look at. Apr 12 at 11:34
  • 1
    @UncleBod That raises the question is why they chose it.
    – Barmar
    Apr 12 at 14:06

9 Answers 9

41

Back in the 1970's, there were essentially two candidates for a potential internet protocol suite: TCP/IP and ISO Open Systems Interconnection (OSI).

OSI was being designed by a consortium of telephone companies. They were designing it in a bottom-up fashion, specifying details of a complex 7-layer model. But they weren't actually implementing much of it, and there were no actual applications.

Meanwhile, a number of academic and research organizations were designing TCP/IP. It was much simpler, with no formal layering model; it could be viewed as just 3 layers: network (IP), transport (TCP and UDP), and applications. They just got down to implementing it from the start in a more ad hoc fashion. Specifications were often written during or even after implementation of proofs of concepts.

Not only was it simpler than OSI, it was also designed by many of the same organizations (and people) that had designed and were using DOD's Arpanet. They purposely designed it so that Arpanet applications could be ported fairly easily to TCP/IP. So once the network stacks were implemented, they quickly had remote login (TELNET), file transfer (FTP), and email (SMTP) capabilities.

So at the time when universities, the military, and a number of high tech companies were actively using TCP/IP, the OSI people were still holding meetings to flesh out the design. It might have been theoretically "cleaner", but TCP/IP was practical and it actually worked. So this was the bandwagon that organizations jumped onto if they actually wanted to get work done, rather than just navel-gazing. Implementing it in BSD Unix soon led to it becoming ubiquitous, and eventually the US government declared it mandatory for their computers and the OSI development fizzled out.

This was a good example of Richard Gabriel's Worse is Better explanation of software acceptance.

15
  • 6
    I think this is the fundamental answer. Iterational development in the Agile style (working prototypes trump detailed specs) allowed people to get started with the subset that existed, rather than attempting to design against something that was still theoretical. Apr 12 at 15:51
  • 2
    I recall a lot of dial-up BBS's and FidoNet sites back in the 80's, tunneled inter-site communications via ARPANET by means of "borrowed time" on certain individual's dial-up accounts at local Universities in the US, saving huge amounts of money on long distance charges and/or shortening packet lag from days or weeks, to hours or minutes. While not a important as the DOD and academic drivers, a growing number of young geeks were at least aware of and used the technologies. The telecom's were pushing a switched architecture, to protect their profits.
    – jwdonahue
    Apr 12 at 17:59
  • 2
    @jwdonahue They were probably using university Internet connections, many schools didn't restrict them much at the time.
    – Barmar
    Apr 12 at 19:12
  • 3
    You make it sound as if OSI vanished forever - well no: CLNS, CLNP, CONS and X.25 made it well into the 21st century - Not as "the Internet protocol", but in high-reliability Telco applications.
    – tofro
    Apr 12 at 20:15
  • 2
    @tofro I thought it did. If it's still in use, it's not very visible.
    – Barmar
    Apr 12 at 20:17
25

It was there and it worked, it was an open standard, and it was reasonably straightforward.

(FWIW, I had a small role on the losing team, working in a corner of DECnet/OSI, aka DECnet Phase V, which was insanely complicated compared to the pretty damn good DECnet Phase IV using proprietary protocols).

13

I used to work at a university in the UK, and went to a talk on the history of JANet (the Joint Academic Network, one of the first National-area networks that links university campuses and other research and teaching facilities). The speakers, who had been directors or senior managers of JANet, talked about “killer apps” for the competing protocols so the answer would be network effect: a site needs IP for some killer app, then collaborating sites need IP to connect with it, then everyone needs IP.

JANet had built out using X.25, and these speakers remembered the IP “killer app” as being the X windowing system.

7
  • The X Window System on Unix (and formerly Linux) allows you to run a program on one machine, but tell it to display the window on another machine, normally yours
    – CSM
    Apr 12 at 9:54
  • 5
    @CSM, why do you say "formerly Linux"? I'm using X11 right now for that purpose, with Linux at both ends... Apr 12 at 10:06
  • 1
    X would have mostly been on VMS at the time, Unix later.
    – Graham Lee
    Apr 12 at 11:27
  • Was that the recent CCS talk about Janet? I unfortunately missed that.
    – dave
    Apr 12 at 12:12
  • At what time exactly, @GrahamLee? X was available on Unix pretty much from the beginning of X. W, its predecessor, had already been ported to Unix (from V) in 1983, before X was created (in 1984). Perhaps you're thinking about DEC's participation in project Athena, but that put X on Ultrix first. DEC did not port it to VMS until 1987-1988. Apr 12 at 13:55
12

I think IP became ubiquitous because there really wasn't anything else to compete with it.

You see IP is not a protocol for networking computers together, it's a protocol (actually a suite or protocols) for networking networks together, hence the name "inter network protocol".

IP effectively provides an abstraction layer over pretty much any other network type and implementing it was fairly straight forward. All you need is something equivalent to the address resolution protocol and a computer with routing tables connected to your network and any other network that is already connected to the Internet.

At the time it was designed there was nothing else quite like it (and now there never will be because it has got total dominance). You could find custom solutions for communication between two specific network types but these tended not to be extensible.

2
  • According to my memory, IBM tried to compete against TCP/IP with Token Ring. But Token Ring was complicated and proprietary, whereas TCP/IP was easy to use and open. Not to mention the LU6 disaster. Apr 14 at 13:08
  • 2
    @JonathanRosenne Token Ring was not a competitor to TCP/IP. Token Ring was a competitor to Ethernet. TCP/IP works equally well with Token Ring as it does with Ethernet and can be used to create a virtual network over networks using both technologies.
    – JeremyP
    Apr 15 at 9:40
6

One reason that the IP suite got everywhere is that there are good specifications for running it on top of various other networks. So if you're already using X.25 or ATM, you don't need to add more hardware to also have an IP network connecting the same systems.

3
  • 2
    The same was true for other protocol stacks - DECnet over X.25 was a thing.
    – dave
    Apr 12 at 12:16
  • Good point @dave. Unfortunately I'm not in a position to compare whether specifications for those are as available and useable as the Internet RFCs. Apr 12 at 15:44
  • X.25 and X.29 were pretty straightforward (I was involved in PDP-11 implementations). DECnet over X.25 was just up to the will of the architects. Realistically, you had DEC sites than you wished to connect, so then you could use X.25. You typically weren't already using an X.25 datalink for some reason and then decided to add host-to-host protocols on top of it.
    – dave
    Apr 12 at 16:39
5

In the late '80s I was working for a university CS dept as the hardware manager. We had various computers with different networks running on them. At various points, we were running token ring (pushed by IBM), StarLan (pushed by AT&T), 3bNet (AT&T proprietary protocol, we had a lot of AT&T-donated computers) and TCP/IP. Some were more difficult to work with than others as far as configuration. As I recall, TCP/IP was a lot easier and more friendly to use.

As Graham Lee mentioned "killer apps" in his answer, one was FTP, which came with the TCP/IP suite. By comparison, for example, 3bnet required you to have an "rje" (Remote Job Entry) publically accessible directory in your home directory in order to transfer files between computers. FTP let you transfer files to/from any directory, so was much friendlier.

Also, when TCP/IP was becoming more popular, it at first required thick Ethernet, which required RG-59 cable in multiples of 2.5m, which was a pain to run. When thin Ethernet came out (what we call Ethernet today), it was much easier, and I think helped adoption of TCP/IP.

BSD making the source code available helped a lot, too. I don't remember anyone mentioning the military as being a reason.

3
  • 4
    Actually, "what we call Ethernet today" is mostly twisted-pair point-to-point rather than thin coaxial. Apr 12 at 15:47
  • 6
    I think you're comparing apples and oranges. Token ring, StarLan, 3bNet, Ethernet are LAN hardware protocols, not internetworking protocols. TCP/IP didn't require any particular kind of hardware. It just needs a specification for how to map IP datagrams onto frames of the network hardware.
    – Barmar
    Apr 12 at 15:57
  • By definition, IP was an inter-LAN protocol that required some form of WAN technology to operate, but it has always been hardware agnostic.
    – jwdonahue
    Apr 12 at 21:53
5

There's a lot of apples and oranges here. And everyone had a lot of good points made, but your question is simple, and has a very simple answer. I'll endeavor to address that directly, but do need to tend to some of what has already been said.

IP, or TCP/IP as it's phrased above, and the OSI model ARE NOT COMPETING MODELS. That's just plain wrong. The OSI model is ubiquitous today and Internet Protocol (TCP/IP as it's being referred to) Fits within that model.

Further, IP (Internet Protocol) was launched in 1983, and the OSI model was adopted in 1984. Please do not conflate the two - they are complimentary, not contentious or competing with each other - Please Read further for the complete answer and supporting contexts.

The OSI Model's 7 Layers Showing how IP, TCP, UDP, etc., fit within it

Scroll down to the tl;dr for the succinct answer of your question

Ethernet, ARCNET, Token Ring, Thick net (RG-59), Thin net (RG-58 A/U), and UTP (Cat 3, Cat 5, and Cat 6 unshielded twisted pair, Etc.) really have zero bearing on your question insofar as IP is concerned. All of these specifications relate to the definition of technologies that, although are indeed addressed in the OSI model which is indeed very much in use to this day,but are outside the scope of Internet Protocol. I'll come back to this in a minute.

It's quite common to say TCP/IP, but really, it's just IP. For example, we have TCP ports and we have UDP ports in firewalling. i.e., TCP is Transmission Control Protocol and handles the delivery of data in the form of packets. IP handles the routing itself so those messages can arrive to and from the end points. User Datagram Protocol is another delivery system that does not guarantee arrival but operates on a best effort basis, while TCP is much chattier as it guarantees delivery and retransmission of missed packets - UDP is pretty efficient but in the case of say, a phone call, a packet here and there won't be missed by the human ear.

That's a very simplistic high level-view that will only stand up to the most basic of scrutiny, but this isn't a class on internetworking ;) If you just want to be able to understand conceptually, my definition will suffice.

Networking (LAN) topologies like Token Ring, ARCNET, and Ethernet aren't anywhere in the IP stack, but figure prominently in the OSI stack. I'm not going to go into the details of how these work, or the physical connection methods used like Vampire Taps, Thin net, or twisted pair with RJ-45 terminators, but their relationship will become obvious in a moment.

The OSI model unfolds like so, remember this little mnemonic to keep it straight so you always know:

People Don't Need To See Paula Abdul

Okay, touched on already, but not really treated, is the description of that little memory aid.

Physical, Data Link, Network, Transport, Session, Presentation, and Application layers (From bottom to top).

The physical and Data Link layers cover things like the cabling methods described above,and you're probably familiar with MAC Addresses (medium access control) on NICs (network interface controller). These correlate to the first two layers of the OSI stack, namely, the Physical (obvious - you can touch it), and the Data Link layer - how each host's NIC and switches on each LAN segment talk to each other and decide which packets are designated for whom (People Don't).

In software engineering, we're concerned mostly with the Session, Presentation, and Application layers (See Paula Abdul). Detailed explanation of these top three layers is outside the scope of this discussion.

The Beauty of the OSI model is that each layer on one host (or program) talks to exclusively with the same layer of the program or hardware on the other host it is communicating with - or so it believes it is, because, as should be obvious, is has to pass its information down the stack to the next layer below itself, and then when it arrives at the other host, it passes that information back up the stack until it reaches the very top (Abdul) of the stack - the application.

Not all communication involves all of the stacks. At the LAN (Local Area Network) level, we're mostly concerned with the Physical and Data Link layers - we're just trying to get some packet that we aren't concerned about the contents of from one box to another. But that packet probably includes information that goes all the way up the stack.

For instance, NIC #1 has the MAC: 00:b0:d0:63:c2:26 and NIC #2 has a MAC of 00:00:5e:c0:53:af. There's communication between these two NICs over the Ethernet on this LAN segment. One says I have a packet for 00:00:5e:c0:53:af and then two answers and says, "Hey that's me!" Nobody else has that address on the LAN, so they don't answer and stop listening for the payload.

Now for Internet Protocol (IP) and TCP/UDP (Transmission Control Protocol and User Datagram Protocol):

IP corresponds to Layer 3 (Need) - the Network Layer of the **OSI Model.

TCP and UDP correspond to Layer 4 (To) - the Transport Layer of the OSI model.

That covers the entire OSI model and how TCP/IP correspond to it - almost. You're not getting off that easy today.

There's actually a bit of conflation and overlapping there. Just like in real life, it's never that cut and dried. For that, we have the following excellent explanation and drill down thanks to Julia Evans:

  • Layer 2 (Don't) corresponds to Ethernet.
  • Layer 3 (Need) corresponds to IP.
  • Layer 4 (To) corresponds to TCP or UDP (or ICMP etc)
  • Layer 7 (Abdul) corresponds to whatever is inside the TCP or UDP packet (for example a DNS query)

You may wish to give her page a gander for just a bit more of a deeper dive.

Now let's talk about what might be a bit of a misconception on the part of some, or at least, a bit of a foggy conflation between that of the specification of the OSI model and a Company called Bolt Beranek & Newman (BBN) a government contractor tasked with developing the IP stack networking code.

The TCP/IP you know and depend upon today wasn't written by them, and to suggest that it was the OSI model that was scrapped instead of BBN's product is a bit of a misunderstanding. As you can see from above, the OSI model is very much alive and well, and factors into your everyday life, encompasses software development and communications, device manufacturing and engineering, as well as routing and delivery of information.

This next part is rather opinionated, and the way that many of us choose to remember our history of UNIX, the ARPANET, the NSFnet, and the Internet:

The IP stack you know and use everyday was fathered by Bill Joy, who arrived at UC Berkeley in (IIRC) 1974), created vi because ed just wasn't cutting it when he wanted a full screen editor to write Berkeley UNIX (BSD), including TCP/IP, and co-founded Sun Microsystems (SunOS / Solaris):

Bill Joy just didn’t feel like this (the BBN code) was as efficient as he could do if he did it himself. And so Joy just rewrote it. Here the stuff was delivered to him, he said, “That’s a bunch of junk,” and he redid it. There was no debate at all. He just unilaterally redid it.

Because UNIX was hitherto an AT&T product, and because government contracting has always been rife with interminable vacillating and pontificating, BBN never actually managed to produce code for the the IP stack that could really be relied upon. In short, it kinda sucked. Bad.

I highly recommend that you take a look at this excellent resource explaining the OSI model.

tl;dr:

So! You've decided to scroll down and skip all of the other stuff to get the straight dope on the answer to your question. Here it is:

What were the major things that caused TCP/IP to become the internet standard protocol?

The ARPANET (and where I worked, what was to become specifically the MILNET portion of that) had a mandate to replace NCP (Network Control Protocol) with IP (Internet Protocol). We did a dry run and literally over two thirds of the Internet (ARPANET) at that time disappeared, because people are lazy, software has bugs, you name it. There were lots of reasons. But that only lasted the better part of a day for the most part.

At that time the ARPANET really only consisted of Universities, big Defense contractors and U.S. Military facilities. Now, if you'll do a bit of digging around, you'll discover that there was really no such thing as NCP - that is, for the most part, what the film industry refers to as a retcon, meaning that we, as an industry, retroactively went back and came up with a way to explain away replacing a protocol that didn't really exist - a backstory, if you will. Sure, there was NCP, it was mostly a kludge of heterogeneous management and communications programs that varied from system to system, site to site, with several commonalities and inconsistencies that were hobbled together with bailing twine, coat hangers, and duct tape (for lack of a better metaphor).

So we really, really, needed something as uniform and ubiquitous as the promise that Internet Protocol would deliver. Because Bill Joy and others had done so much work at UC Berkeley, we actually had 4.1BSD (4.1a) to work with on our DEC machinery. As a junior member of my division, in both age and experience, I was given the task of, let's say throwing the switch on some of our machines, so to speak, when we cut over from the NCP spaghetti and henceforth embraced TCP/IP no matter what, on Flag Day - 01 January 1983.

So you see,the adoption of Internet Protocol was not a de facto occurrence - it was de jure, a government mandate to occur at a specific time on a specific day.

It literally had nothing to do with popularity or some kind of organic adoption, the erroneously described, so-called demise of the OSI model, or any physical network topology.

DARPA said 01 January 1983 and that's it, and that was it - Flag Day.

Sure, it took a few days for several facilities to come up (anyone not running IP was summarily and unceremoniously cut off from the ARPANET).

And one also needs to consider that it wasn't every machine - we only had some machines that were Internet hosts. We still had a lot of mainframes and mini computers, etc., that were interconnected within our facilities in a hodgepodge or some other fashion. Nowadays we have a tendency to be somewhat incredulous if every device doesn't directly connect over IP to the Internet in some way. That wasn't the case back then - you passed traffic internally, sometimes by unmounting tapes from one machine and mounting them on another.

There was a lot of hand wringing, stress, boatloads of frustration, and concern by people over keeping their jobs all over the world. But that's why and when it happened. Six months later in the UNIX portions of networks we had much greater stability with the release of 4.2BSD, but it wouldn't really be until a few years later Net2 was released that things settled down with the virtually flawless networking stability that we enjoy today.

5
  • 1
    what's "Uniform Data Protocol"?
    – ilkkachu
    Apr 13 at 18:28
  • 2
    It was nice to hear about this from someone who was actually there! I think this might be some kind of fundamental property of protocols that tie different networks together, ie. internetwork protocols, that changing them is really hard and costly, so once you have one that works, something drastic needs to happen for you to switch over to something else.
    – Zds
    Apr 14 at 3:29
  • 5
    The OSI model was not competing with the Internet suite of protocols, but the OSI/ISO protocols surely were, in particular the ISO layer 3 and 4 protocols in all their varied glory.
    – dave
    Apr 14 at 16:20
  • 1
  • All great contributions from everyone, and so very many aspects involved in arriving where we are today. Pro and Con, For and Against, Ehtusiasm and Pessimism - in truth, all of these things contributed and it's truly the esoteric concepts that even today continue to shape our computer communications. Thank you everyone for your comments and contributions :)
    – tallship
    Apr 15 at 13:55
3

It may be worth looking at institutional aspects, as well.

It wasn't that clear sailing as one might suppose. While the US DoD had switched to TCP/IP on Jan. 1, 1983, there was also the competing (and in theory maybe cleaner) OSI standard* (1977), blessed by ISO and adopted by NIST as the standard by 1985, and universities used DEC and IBM networking.

It seems to have been due to the NSF (National Science Foundation) and NSFnet (operational by 1986), linking universities and research facilities. In 1985 NSF ruled (against some pressure by NIST, opting for OSI) that the system would be based on TCP/IP, apparently backed by the argument that TCP/IP was already implemented in various systems, not to the least in Unix. (Moreover, the NSF-funded CSnet, linking already various supercomputing centers and research facilities, was also based on TCP/IP.) With NSFnet networking was soon everywhere on campuses and became adopted as a universal standard by various gov. agencies. Eventually, in 1988, in what may have been the final impetus, the regional centers were forced to become general purpose providers, which really opened up the Internet for commercial providers and customers.

[This is really a short version of the history as provided in M. Mitchell Waldrop's "The Dream Machine", 2001.]

*) It may be worth noting that OSI wasn't just the well-known OSI layer model, but a standard of its own, which was favored outside the US, especially in Europe. (E.g., I was taught in 1984 that the upcoming network standard, everybody was finally agreeing upon, was OSI.)

-1

I would think there is a very basic misunderstanding about what IP is and what networks are.

I was wondering what were the major reasons that TCP/IP became the protocol used to communicate over the Internet,

Well, the I in IP stands for Internet. It's the very reason it's called the internet. Any other protocol would not work over the internet.

Also, IP does not define the underlaying network, it only defines a set of application level communication protocols used over some network.

as this was uncertain for quite some time in the 80'es and early 90'es.

Not really, the point about the API an application uses to communicate.

So, was it the "If you want to be used by the military, you must speak TCP/IP" decree that was the real reason and then just add time,

Na. If military would be a major force for standards, then we'd be using ADA (lovely idea) and VHDL - both being binding standards for development of soft and hardware. Not just in teh US but NATO wide, plus followed by many non NATO countries. But it's C(++) and Verilog.

or something else?

As usual devices barely doing the job, sold at low prices. Dirt cheap nodes compared to what established manufacturers like AT&T or Siemens asked for their WAN boxes.

Kinda the same way the PC took over. Not by being the best possible hardware, or even a good one, or having a good OS, but by being dirt cheap, creating a market where everyone could produce clones and compete for lower prices.

Same with ATA hard drivers. Lets be honest, that interface is rubbish. all the variations, incompatibility and crutches it needed to be expanded - but it was cheap and everyone could somehow get connected.

IP's story is very much the same. It works good enough to build applications on top and once those are sold, users want to use them, asking for IP capable network interfaces.

4
  • 4
    I think they're using Internet as shorthand for "the globally dominant internetwork", so I think saying that IP and the Internet is inseparable is missing the point of the question. It's not as if there isn't room for less major internetworks. Internet2 exists for the same reason universities originally got into Internet, for example... scientists collaborating and sharing research data that prior solutions weren't up to the task of efficiently pushing around.
    – ssokolow
    Apr 12 at 21:55
  • 1
    @ssokolow Not really, as I read it question asks especially about the IP protocol being the one most visibly used. Also, one has to understand that there is not one internet, but a wohle bunch of networks that can be traversed using the IP protocols. This does neither mean that these protocols are native to either network nor used at all. Likewise is 'Internet2' just a name for one of those networks. Internet2 is not different from any other telco network and by no way a separate entity. It doesn't matter if those private routes are between universities, companies or telcos.
    – Raffzahn
    Apr 12 at 22:50
  • I dispute that the Internet being made up of smaller networks means "*there is not one internet" any more than the presence of multiple discrete components (including various ARM and possibly RISC-V microcontrollers) means you can't use a singular to refer to the computer you're sitting at. The distinction between The Internet and Internet2 is that, under normal operation, your... Netflix movies will never impinge on the capacity allocated to Internet2.
    – ssokolow
    Apr 13 at 22:46
  • @ssokolow You're right, it wont - much the same way as me watching Netflix on a t-mobile connected device will not have any influence on Orange's network. Then again, watching Netflix on a device connected via Internet2 will quite well use up their bandwidth. And that 'Internet2' not anything separate, but only another network within the internet. Naming doesn't change technology.
    – Raffzahn
    Apr 14 at 2:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .