Protocol (computing)
|
In computing, a protocol is a convention or standard that controls or enables the connection, communication, and data transfer between two computing endpoints. Protocols may be implemented by hardware, software, or a combination of the two. At the lowest level, a protocol defines a hardware connection.
Protocols should be distinguished from technical standards, which tend to specify how to build a computer or related hardware device, or how the contents of a file are structured. Protocols are generally used in real-time communications, while standards are used to govern the structure of information committed to long-term storage.
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:
- 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
The widespread use and expansion of communication 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 an important collection (or protocol suite) of the 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 usually layered together into protocol stacks where the various tasks listed above are divided among different protocols in the stack.
The classic example of a protocol stack is the OSI model, which has become the dominant theoretical tool for teaching the concept even though most of the OSI protocols were not commercially successful.
Protocol stacks are not always uniform. A designer may be able to choose from several protocols to fill a given layer in a stack. A family of protocols which offers a full package from top to bottom and even multiple options for some stack layers is known as a protocol suite.
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 capabilties of end points and the computing architecture chosen.