During the last few weeks, I have pondered upon what makes it so difficult for people to understand how the Internet works. After all, the concept of a network is easy enough to understand. At one point, I realized that most people really don’t understand what a protocol is and how it is relevant to communication over the wire. Or perhaps there are some who understand what a protocol is, in essence, but do not understand how their different layers play diverse roles. I intend to clear this up and explain how protocols have revolutionized the internet and have become the sole ether of all our online communications.
The Internet Protocol (IP)
An IP address composes an essential part of the internet protocol (IP). Therefore, the full name of an IP address is the internet protocol address. The Internet protocol governs the most basic parts of internet communications, like packet transmission. Everything that goes out of your computer first uses the IP protocol before anything else.
After that, it branches out into two types of protocols that form a layer (known as the transport layer) on top of IP: connected, and connection-less. They are known, respectively, as the transmission control protocol (TCP, or TCP/IP) and the user datagram protocol (UDP).
With TCP, you must establish a means of communication with the server (as seen in the above image) before you are allowed into a virtual space that is allocated for you. This is much like establishing a phone call. The phone rings, and once the receiving end picks up, you both can have a conversation. You absolutely need TCP when you’re sending data and its reception must be confirmed.
UDP works more like the post office. You can send a message to a server at any time, without having to establish a connection. All you have to know is the destination address, and you send a datagram packet to that address, which it will read, interpret, and respond to accordingly. The differences in how computers interact through TCP and UDP are shown in the above image. Some applications prefer UDP (such as BitTorrent), because it doesn’t waste upstream bandwidth by sending confirmations (acknowledgement, or ACK, packets) of every single bit of data transferred. Instead, data that has not been sent is simply re-sent upon any further requests. Because of this, UDP is significantly faster for downloading.
These two protocols are the most used in the Internet Protocol (IP) Suite. For the sake of simplicity, this article will not dive into other parts of the suite.
Application Layer Protocols
We’re way past the days when simple text messages were transmitted across wires to relay information and commands to different servers. You now have YouTube and several other websites that you browse and enjoy on a daily basis. For sophisticated internet communications, we must have other protocols that function on a layer on top of TCP and UDP, known as the application layer.
The application layer is just what it suggests. It’s a collection of protocols functioning on top of TCP and UDP that provide additional ways for computers to communicate with each other. Your BitTorrent application uses the BitTorrent protocol. Your browser uses the Hypertext Transfer Protocol (HTTP) and HTTP Secure (“https://”, which operates over an encrypted SSL/TLS connection). Below is an example of how a typical application layer protocol (HTTP Secure, in this example) relates to all the other protocols running below it.
Email clients often use either the Internet Message Access Protocol (IMAP) or the Post Office Protocol (POP) for incoming messages. The Simple Mail Transfer Protocol (SMTP) is used for outgoing messages.
There are literally thousands of protocols out there, each used by an application to optimize functionality and add as many features as possible so you can be happy with the products you use. New versions of applications are often compatible with newer protocol versions, adding to the snowball of features you already enjoy. That’s how some mind-blowing features actually come to show up on certain applications.
Perhaps you now understand why it is that some online games require you to upgrade to a new version in order to continue playing on particular servers. The servers are likely using versions of its own communications protocol that are no longer compatible with your game. These problems are being dealt with as protocols continue to improve and mitigate the obstacles that prevent users of older applications from communicating and interacting with users of newer versions.
Still Can’t Quite Understand Something?
If you’re still stumped about protocols after reading this, then I haven’t done my job! Allow me to finish it by posting your question in a comment below!
Image crdit: network cables RJ45 connected to a switch by BigStockPhoto