A set of rules that computer systems and other technological devices use to communicate with or to pass information back and forth with other systems and devices is known as a communications protocol. A protocol defines the format and syntax of the data being transmitted. This could take the form of special commands sent before the actual data, or it could be the transmission of entire serialized objects of a specific type. Protocols can be implemented by software or can be built into hardware and embedded systems. There are many communications protocols in use, some of which are proprietary for security purposes and some of which are open source for development purposes.
A communications protocol is built by establishing a syntax that systems can both understand and follow. While the actual semantics of a protocol might vary, most are similar because they are based on the same underlying principles and hardware limitations. Once a protocol is established, all systems that understand the protocol will be able to send and receive data with other such systems. In this way, a communications protocol closely resembles the development of a common language that is used to relay information to and from someone else who knows that language.
Hardware protocols are frequently used to establish operating parameters for two devices. These protocols can establish constants such as the rate of transfer, the maximum size of a data block, and encryption and compression methods. While they are very efficient, hardware protocols deal primarily with establishing the physical link between two devices as opposed to actually interpreting data or other requests.
Software protocols can be very flexible and can do much more than just transfer arbitrary data. Once two pieces of software have implemented a communications protocol, they can enable any number of algorithms or functions. The most common are error detection and error correction.
Error detection and correction are ways that data, when transferred through a specific protocol, are able to be redundantly checked for errors. This can be necessary when the physical lines between the devices are unreliable or have a large amount of noise that could corrupt a signal. Several algorithms have been developed that can help to check and restore the integrity of data that have been sent.
Protocols are not an exclusive mechanism and are very often layered within a system or framework. Network protocols are almost always layered. This means there are different protocols assigned to handle different tasks. Some provide access to resources in the operating system while others might simply relay information blindly to another node. The layering of communications protocols is one of the foundations of the Internet that allows it to function consistently with so many different types of computers and devices.