Hi, and welcome to another post in my Tech Talk series! A series where I write a little about what I’ve learnt while trying to improve my knowledge in computer science theory.
In my last Tech Talk post, I wrote about layering and briefly mentioned an example of a layered reference model, the Open System Interconnection (OSI). I explained that the OSI is a layered set of protocols in which two multilayered programs, one at either end of a communications exchange, use an identical set of layers.
But I didn’t properly explain what protocol meant in computing.
What is a Protocol?
A protocol is a set of rules for transmitting data between electronic devices.
Let’s elaborate on that…
There is a protocol for almost everything.
When you travel to a different country, the protocol to be let onto the plane is for you to provide a valid ticket for the plane, and a passport identifying who you are. When you enter employment into a new company, the protocol varies, but generally you need to provide identification, proof you’re eligible to work in the country, and a reference from a previous employer.
And just like these real-life scenarios, there are various protocols in computer science, and they are established by international or industrywide organisations.
More specifically, these protocols define how information will be structured between the two devices, and how each side will send and receive it. For example, without a protocol, a transmitting computer could send its data in 8-bit packets yet the receiving computer might expect data in 16-bit packets.
Protocols in computing are like a contract in a house sale
Imagine a contract for a house sale being signed by two people, the buyer and the seller.
The contract itself isn’t really part of the sale, because without an agreement to exchange something such as data or property, it’s just a piece of paper – but it’s essential, as it states what both sides of the sale need to do in order for it to go through. It sets the protocol for the sale.
The buyer is expected to pay the seller the amount that they agreed on, and to pay it by the date they agreed on. The seller is expected to have a house to sell, and to hand over details to the buyer such as environmental matters, fittings and contents included in the sale, any disputes and complaints with other neighbours, and to provide the property title deeds and keys on completion.
Once the buyer and the seller have signed this contract, they have agreed to the rules that it states. The seller can’t sell a house, and then swap it for a boat: it won’t be what the buyer is expecting. Likewise, the buyer cannot agree to pay an amount in pounds then try to pay in pistachio shells: the seller won’t be able to process it as it’s not what they’re expecting (is there even an exchange rate for that?), and also, it’s just a little weird.
Like the contract in this house sale example, protocols work in the same way. Each side is made aware of what they need to expect to receive, and what they are expected to send.
What is an example of a protocol?
An example of a protocol you interact with and likely see every day is HTTP. It stands for Hypertext Transfer Protocol, and is a protocol that allows web browsers and servers to communicate.
To simplify, when you type a URL into your web browser, your browser will make a request to the server that hosts the web page you want to look at, and the host’s server will respond with the data that your browser will be able to use in order to view the page. For this communication to go smoothly, the browser needs to know what it needs to send to the host server and what it will receive from it, and the host server will need to know what it will receive from the browser and what to send to it. Thanks to HTTP, your browser and the host servers it requests web pages from, have an agreement in place that ensures they know exactly what they’re receiving and what to send.
So to summarise, protocols in computing are rules that allow two devices to communicate successfully, and exchange data with each other. I hope this has been an informative post! If you have any questions or anything to add, please comment below!