What is TCP/IP and why is it so prevalent in modern day computing?


What is TCP/IP and why is it so prevalent in modern day computing?

In: Technology

Transmission Control Protocol and Internet Protocol are how most information moves around on home and business networks and on the Internet. These two functions work together to chop up data, send those pieces from point A to point B, reassemble them in the correct order, and correct any errors. Print to the printer over wifi? Access ripped movies using Plex on your streaming device? Send an email? Upload a meme to Imgur? It all happens because of TCP/IP.

Multiple “layers” of “how to do things” encoded into the actual network card devices and into the software that runs them.

From “how to pulse 5 volts across a bunch of wires in order to send information” (sort of like a Morse code standard, but not really), to “how to put the 1’s and 0’s in the correct order and how to check for errors”, to “how to break up 50 gigabytes of data into chunks small enough to be sent”, to “where am I sending this stuff, what’s the damn address”, to “I’m receiving 2939504 data packs, but they’re out of order!!!, how do I piece the puzzle together so I can see the video” to “you want to send with encryption or without? to multiple devices or just one?” etc.

It’s prevalent because computers need to send data to other computers, it’s what the Internet is all about, and TCP/IP is the set of standards that tells everyone how the communication is supposed to happen.

It’s also prevalent because it’s more customizable / easy to adapt to various configurations that companies have (multiple divisions across the globe, etc) than other standards we had in the past, like TokenRing, IPX/SPX, etc.

Basically, just like with the “format wars” (betamax vs. vhs, ntsc vs. pal, blu ray vs. hd dvd) multiple companies had multiple standards, but eventually one won over and was adopted by everyone and became prevalent.

You want to send a letter to your friend, and it’s several pages long. But you can only fit one page per envelope! Also, you need your friend’s address. Not only that, that address must be unique (you don’t want someone else receiving the letter instead of your friend).

TCP/IP is a mechanism (there are others, IP is nearly universal, but there are many situations in which UDP is used instead of TCP, for example) that allows you to send all those envelopes to your friend, makes sure he gets them properly ordered and undamaged. It tells you if any of those could not be achieved (an envelope got lost, f.e.) so you can send it again. It ensures that both your addresses are unique (he wants to know who sent it, of course!). And it also makes sure that it’s your friend who reads the letter and not his mom when it gets home.

Communicating on the internet generally uses 5 layers. Making it layered makes it easy to tackle the different subproblems individually. Let’s take an email as example. I want to send an email to you, these are the questions at each layer:

* **Application layer**: What exactly is an email, compared to a webpage, a random file, …? What exactly is an email address and how do I define you as the recipient, CC, BCC? How do I encrypt it?

* **Transport layer**: How fast can I send my email? How fast can you receive it? How can I be sure you received the full email in order? Does it even matter whether it’s in order or not? (What TCP does)

* **Network layer**: How do I get from my computer to yours? Which routing path is the shortest/fastest? What if this router along the way fails, is there another route? (What IP does)

* **Data Link Layer**: How do I get from one computer to the next? (along the route we found above!) How do I send something across an Ethernet wire? What about wifi? (Ethernet, Wifi, Bluetooth are all defined here)

* **Physical Layer**: How do I transmit bytes over my connection, both wired as wireless?

So TCP is in the Transport layer, and provides all the reliability guarantees I questioned: retransmits, ordering, transmission speed, … If you don’t need all of this, for example when gaming, you use UDP. Most of the internet uses TCP. If you want realiability, look no further.

IP is in the Network layer, and makes up the routing. It’s just the best scheme. Apart from the IPv4 to IPv6 upgrade, there is really no reason to change anything here.

**Conclusion: IP and TCP are just simply the best protocols in their league. Together they basically guarantee that the message reliably gets from A to B through the most efficient route.**