When we talk about communication between computers, we tend to use the word "protocol" a lot. But what is a protocol?
Here are some takes on the term:
- Wikipedia: A protocol is a convention or standard that controls or enables the connection, communication, and data transfer between two computing endpoints.
- Webopedia ISP Glossary: The protocol defines a common set of rules and signals that computers on the network use to communicate.
- AIX Information Center: A set of rules for handling communications at the physical or logical level.
OK, those definitions are mostly talking about wire protocols like Ethernet
. So what makes Internet Protocol (IP)
, for example, a protocol? These definitions don't really help.
I can't find a reference for this, but here's the best definition I've ever heard: A protocol is a format over a transport.
What does that mean?
- format -- The structure of the data, as represented sitting in a memory space. Examples: XML, CSV.
- transport -- The means for moving data between computers over a network.
Many (most? all?) protocols are packet-based, so the data must be divided into pieces and each piece must be put in a packet; that's the format the transport can transport.
A funny thing about protocols is that what looks like a protocol at one level merely looks like a transport at another level. IP is a protocol--its data must be IP packets that are moved over a transport like Ethernet. But when getting data over a protocol like FTP
, or SMTP
, IP looks like just a transport. In turn, each of those protocols looks like just a transport for the file, HTML document, or e-mail message you're sending across the network.
So, a protocol is a format over a transport, and a protocol at one layer is a transport for the next layer.