Communication protocol
Communication protocol
Communicating systems
[edit]
History
[edit]
The CYCLADES network, designed by Louis Pouzin in the early 1970s was the
first to implement the end-to-end principle, and make the hosts responsible
for the reliable delivery of data on a packet-switched network, rather than
this being a service of the network itself.[13] His team was the first to tackle
the highly complex problem of providing user applications with a
reliable virtual circuit service while using a best-effort service, an early
contribution to what will be the Transmission Control Protocol (TCP).[14][15][16]
Bob Metcalfe and others at Xerox PARC outlined the idea of Ethernet and
the PARC Universal Packet (PUP) for internetworking.[17]
Research in the early 1970s by Bob Kahn and Vint Cerf led to the formulation
of the Transmission Control Program (TCP).[18] Its RFC 675 specification was
written by Cerf with Yogen Dalal and Carl Sunshine in December 1974, still a
monolithic design at this time.
Concept
[edit]
At the time the Internet was developed, abstraction layering had proven to
be a successful design approach for both compiler and operating system
design and, given the similarities between programming languages and
communication protocols, the originally monolithic networking programs
were decomposed into cooperating protocols.[30] This gave rise to the concept
of layered protocols which nowadays forms the basis of protocol design. [31]
Types
[edit]
Text-based
[edit]
Binary
[edit]
Basic requirements
[edit]
Getting the data across a network is only part of the problem for a protocol.
The data received has to be evaluated in the context of the progress of the
conversation, so a protocol must include rules describing the context. These
kinds of rules are said to express the syntax of the communication. Other
rules determine whether the data is meaningful for the context in which the
exchange takes place. These kinds of rules are said to express
the semantics of the communication.
Digital message bitstrings are exchanged. The bitstrings are divided in fields
and each field carries information relevant to the protocol. Conceptually the
bitstring is divided into two parts called the header and the payload. The
actual message is carried in the payload. The header area contains the fields
with relevance to the operation of the protocol. Bitstrings longer than
the maximum transmission unit (MTU) are divided in pieces of appropriate
size.[41]
Address formats for data exchange
Addresses are used to identify both the sender and the intended receiver(s).
The addresses are carried in the header area of the bitstrings, allowing the
receivers to determine whether the bitstrings are of interest and should be
processed or should be ignored. A connection between a sender and a
receiver can be identified using an address pair (sender address, receiver
address). Usually, some address values have special meanings. An all-1s
address could be taken to mean an addressing of all stations on the network,
so sending to this address would result in a broadcast on the local network.
The rules describing the meanings of the address value are collectively
called an addressing scheme.[42]
Address mapping
Routing
Acknowledgements
Sequence control
If long bitstrings are divided into pieces and then sent on the network
individually, the pieces may get lost or delayed or, on some types of
networks, take different routes to their destination. As a result, pieces may
arrive out of sequence. Retransmissions can result in duplicate pieces. By
marking the pieces with sequence information at the sender, the receiver
can determine what was lost or duplicated, ask for necessary
retransmissions and reassemble the original message. [48]
Flow control
Flow control is needed when the sender transmits faster than the receiver or
intermediate network equipment can process the transmissions. Flow control
can be implemented by messaging from receiver to sender. [49]
Queueing
Protocol design
[edit]
Layering
[edit]
Protocol layering
[edit]
Protocol layering forms the basis of protocol design. [31] It allows the
decomposition of single, complex protocols into simpler, cooperating
protocols.[54] The protocol layers each solve a distinct class of communication
problems. Together, the layers make up a layering scheme or model.
Computations deal with algorithms and data; Communication involves
protocols and messages; So the analog of a data flow diagram is some kind
of message flow diagram.[4] To visualize protocol layering and protocol suites,
a diagram of the message flows in and between two systems, A and B, is
shown in figure 3. The systems, A and B, both make use of the same protocol
suite. The vertical flows (and protocols) are in-system and the horizontal
message flows (and protocols) are between systems. The message flows are
governed by rules, and data formats specified by protocols. The blue lines
mark the boundaries of the (horizontal) protocol layers.
Software layering
[edit]
The modules below the application layer are generally considered part of the
operating system. Passing data between these modules is much less
expensive than passing data between an application program and the
transport layer. The boundary between the application layer and the
transport layer is called the operating system boundary. [57]
Strict layering
[edit]
Although the use of protocol layering is today ubiquitous across the field of
computer networking, it has been historically criticized by many
researchers[60] as abstracting the protocol stack in this way may cause a
higher layer to duplicate the functionality of a lower layer, a prime example
being error recovery on both a per-link basis and an end-to-end basis. [61]
Design patterns
[edit]
Formal specification
[edit]
Protocol development
[edit]
For communication to occur, protocols have to be selected. The rules can be
expressed by algorithms and data structures. Hardware and operating
system independence is enhanced by expressing the algorithms in a portable
programming language. Source independence of the specification provides
wider interoperability.
[edit]
The need for protocol standards can be shown by looking at what happened
to the Binary Synchronous Communications (BSC) protocol invented by IBM.
BSC is an early link-level protocol used to connect two separate nodes. It was
originally not intended to be used in a multinode network, but doing so
revealed several deficiencies of the protocol. In the absence of
standardization, manufacturers and organizations felt free to enhance the
protocol, creating incompatible versions on their networks. In some cases,
this was deliberately done to discourage users from using equipment from
other manufacturers. There are more than 50 variants of the original bi-sync
protocol. One can assume, that a standard would have prevented at least
some of this from happening.[29]
Standards organizations
[edit]
[edit]
In the ISO, the standardization process starts off with the commissioning of a
sub-committee workgroup. The workgroup issues working drafts and
discussion documents to interested parties (including other standards
bodies) in order to provoke discussion and comments. This will generate a lot
of questions, much discussion and usually some disagreement. These
comments are taken into account and a draft proposal is produced by the
working group. After feedback, modification, and compromise the proposal
reaches the status of a draft international standard, and ultimately
an international standard. International standards are reissued periodically to
handle the deficiencies and reflect changing views on the subject. [72]
OSI standardization
[edit]
OSI model
by layer
hide
7. Application layer
NNTP
SIP
SSI
DNS
FTP
Gopher
HTTP (HTTP/3)
NFS
NTP
SMPP
SSH
SMTP
SNMP
Telnet
DHCP
NETCONF
more....
hide
6. Presentation layer
MIME
XDR
ASN.1
ASCII
TLS
PGP
hide
5. Session layer
Named pipe
NetBIOS
SAP
PPTP
RTP
SOCKS
X.225[73]
hide
4. Transport layer
TCP
UDP
SCTP
DCCP
QUIC
SPX
hide
3. Network layer
IP
IPv4
IPv6
ICMP (ICMPv6)
IPsec
IGMP
IPX
IS-IS
AppleTalk
X.25
PLP
hide
ATM
ARP
SDLC
HDLC
CSLIP
SLIP
GFP
PLIP
IEEE 802
LLC
MAC
L2TP
Frame Relay
PPP
X.25 LAPB
Q.922 LAPF
hide
1. Physical layer
RS-232
RS-449
ITU-T V-Series
I.430
I.431
PDH
SONET/SDH
PON
OTN
DSL
IEEE 802
IEEE 1394
USB
Bluetooth
X.21
v
t
e
A lesson learned from ARPANET, the predecessor of the Internet, was that
protocols need a framework to operate. It is therefore important to develop a
general-purpose, future-proof framework suitable for structured
protocols (such as layered protocols) and their standardization. This would
prevent protocol standards with overlapping functionality and would allow
clear definition of the responsibilities of a protocol at the different levels
(layers).[74] This gave rise to the Open Systems Interconnection model (OSI
model), which is used as a framework for the design of standard protocols
and services conforming to the various layer specifications. [75]
In the OSI model, the layers and their functionality are (from highest to
lowest layer):
The network layer does the setup, maintenance and release of network
paths between transport peer entities. When relays are needed,
routing and relay functions are provided by this layer. The quality of
service is negotiated between network and transport entities at the
time the connection is set up. This layer is also responsible for network
congestion control.[81]
The data link layer does the setup, maintenance and release of data
link connections. Errors occurring in the physical layer are detected
and may be corrected. Errors are reported to the network layer. The
exchange of data link units (including flow control) is defined by this
layer.[82]
At the time,[when?] the IETF had to cope with this and the fact that the Internet
needed protocols that simply were not there.[citation needed] As a result, the IETF
developed its own standardization process based on "rough consensus and
running code".[88] The standardization process is described by RFC 2026.
Nowadays, the IETF has become a standards organization for the protocols in
use on the Internet. RM/OSI has extended its model to include connectionless
services and because of this, both TCP and IP could be developed into
international standards.[citation needed]
Wire image
[edit]
Ossification
[edit]
Taxonomies
[edit]
Classification schemes for protocols usually focus on the domain of use and
function. As an example of domain of use, connection-oriented
protocols and connectionless protocols are used on connection-oriented
networks and connectionless networks respectively. An example of function
is a tunneling protocol, which is used to encapsulate packets in a high-level
protocol so that the packets can be passed across a transport system using
the high-level protocol.
A layering scheme combines both function and domain of use. The dominant
layering schemes are the ones developed by the IETF and by ISO. Despite
the fact that the underlying assumptions of the layering schemes are
different enough to warrant distinguishing the two, it is a common practice to
compare the two by relating common protocols to the layers of the two
schemes.[114] The layering scheme from the IETF is called Internet
layering or TCP/IP layering. The layering scheme from ISO is called the OSI
model or ISO layering.