Protocol (computing)
You must add a |reason=
parameter to this Cleanup template – replace it with {{Cleanup|June 2006|reason=<Fill reason here>}}
, or remove the Cleanup template.
In computing, a protocol is a convention or standard that controls or enables the connection, communication, and data transfer between two computing endpoints. In its simplest form, a protocol can be defined as the rules governing the syntax, semantics, and synchronization of communication. Protocols may be implemented by hardware, software, or a combination of the two. At the lowest level, a protocol defines the behavior of a hardware connection.
Protocols should be distinguished from technical standards, which variously specify how to build a computer or related hardware device, or how the contents of a file are structured, or describe the static structure of a network interface. Protocols are generally used to define real-time communications behavior, while standards are used to govern the structure of information committed to long-term storage.
Typical properties
It is difficult to generalize about protocols because they vary so greatly in purpose and sophistication. Most protocols specify one or more of the following properties:
- Detection of the underlying physical connection (wired or wireless), or the existence of the other endpoint or node
- Handshaking
- Negotiation of various connection characteristics
- How to start and end a message
- How to format a message
- What to do with corrupted or improperly formatted messages (error correction)
- How to detect unexpected loss of the connection, and what to do next
- Termination of the session or connection
Importance
The widespread use and expansion of communications protocols is both a prerequisite to the Internet, and a major contributor to its power and success. The pair of Internet Protocol (or IP) and Transmission Control Protocol (or TCP) are the most important of these, and the term TCP/IP refers to a collection (or protocol suite) of its most used protocols. Most of the Internet's communication protocols are described in the RFC documents of the Internet Engineering Task Force (or IETF).
Object-oriented programming has extended the use of the term to include the programming protocols available for connections and communication between objects.
Generally, only the simplest protocols are used alone. Most protocols, especially in the context of communications or networking, are layered together into protocol stacks where the various tasks listed above are divided among different protocols in the stack.
Whereas the protocol stack denotes a specific combination of protocols that work together, the Reference Model is a software architecture that lists each layer and the services each should offer. The classic seven-layer reference model is the OSI model, which is used for conceptualizing protocol stacks and peer entities. This reference model also provides an opportunity to teach more general software engineering concepts like hiding, modularity, and delegation of tasks. This model has endured in spite of the demise of many of its protocols (and protocol stacks) originally sanctioned by the ISO. The OSI model is not the only reference model however.
Common protocols
The Internet model, also known as the TCP/IP model, is a five-layer reference model that saw increased use starting in the 1990s. Although its layer names are a subset of those of the OSI model, the responsibilities of each layer of the TCP/IP model are subtly different from those in the OSI model.
Although occasionally synonymous with the term protocol stack, a protocol suite is a collection by layer of all protocols that implement that layer for any given reference model. The Internet protocol suite provides an example for the Internet reference model.
A distinction that is useful in the understanding of protocols is that between a functional protocol and a stimulus protocol. This distinction can be used to select a protocol based on the capabilities of end points and the computing architecture chosen.