Protocol stack: Difference between revisions

Content deleted Content added
m disambig ODI
Reverting edit(s) by 2A00:102A:405A:6573:B8F5:F3FF:FEF6:42DF (talk) to rev. 1299188538 by Nubzor: non-constructive (RW 16.1)
 
(283 intermediate revisions by more than 100 users not shown)
Line 1:
{{Short description|Comprehensive computer networking implementation}}
A '''protocol stack''' is a particular software implementation of a [[computer network]]ing [[protocol suite]].
 
[[File:OSI Model v1.svg|thumb|Protocol stack of the [[OSI model]]]]
Individual [[network protocol|protocols]] within a suite are often designed with a single purpose in mind. This [[modularisation]] makes design and evaluation easier. Because each protocol module usually communicates with two others, they are commonly imagined as ''layers'' in a stack of protocols. The lowest protocol always deals with "low-level", physical interaction of the hardware. Every higher layer adds more features. User applications habitually deal only with the topmost layers. See also [[OSI model]].
 
The '''protocol stack''' or '''network stack''' is an [[implementation]] of a [[computer network]]ing '''protocol suite''' or '''protocol family'''. Some of these terms are used interchangeably but strictly speaking, the ''suite'' is the definition of the [[communication protocol]]s, and the ''stack'' is the [[software]] implementation of them.<ref>{{cite web
In practical implementation, protocol stacks are often divided into three major sections for media, transport, and applications. A particular [[operating system]] or platform will often have two well-defined software interfaces, one between the media and transport layers, and one between the transport layers and applications.
| title = What is a protocol stack?
| date = 24 September 1997
| access-date = 2010-02-21
| url = http://www.webopedia.com/TERM/P/protocol_stack.html
| publisher = WEBOPEDIA
| quote = A [protocol stack is a] set of network protocol layers that work together. The [[OSI Reference Model]] that defines seven protocol layers is often called a stack, as is the set of TCP/IP protocols that define communication over the Internet.
}}</ref>
 
Individual [[network protocol|protocols]] within a suite are often designed with a single purpose in mind. This [[modularisationModularity (programming)|modularization]] makessimplifies design and evaluation easier. Because each protocol module usually communicates with two others, they are commonly imagined as ''[[Abstraction layer|layers'']] in a stack of protocols. The lowest protocol always deals with "low-level", physical interaction ofwith the communications hardware. EveryEach higher layer adds moreadditional featurescapabilities. User applications habituallyusually deal only with the topmost layers.<ref>{{cite See also [[OSI model]].web
The media-to-transport interface defines how transport protocol software makes use of particular media and hardware types ("card drivers"). For example, this interface level would define how [[TCP/IP]] transport software would talk to [[Ethernet]] hardware. Examples of these interfaces include [[Open Data-Link Interface|ODI]] and [[NDIS]] in the [[Microsoft Windows]] and DOS world.
| title = The OSI Model, Part 10. The Application Layer
 
| access-date = 2010-02-21
The application-to-transport interface defines how application programs make use of the transport layers. For example, this interface level would define how a [[web browser]] program would talk to [[TCP/IP]] transport software. Examples of these interfaces include [[Berkeley sockets]] and [[SysV Streams]] in the [[Unix]] world, and [[Winsock]] in the Microsoft world.
| publisher = Ika-Reutte
 
| author = Georg N. Strauß
''General protocol suite description:''
| date = 2010-01-09
| url = http://www.ika-reutte.at/elearning/OSI_Model.doc
| quote = The Application layer is the topmost layer of the OSI model, and it provides services that directly support user applications, such as database access, e-mail, and file transfers.
| archive-url = https://web.archive.org/web/20120320162240/http://www.ika-reutte.at/elearning/OSI_Model.doc
| archive-date = 2012-03-20
| url-status = dead
}}</ref>
 
''==General protocol suite description:''==
T ~ ~ ~ T
[A] [B]_____[C]
 
Imagine three computers: ''A'', ''B'', and ''C''. ''A'' and ''B'' both have radio equipment, and can communicate via the airwaves using a suitable network protocol like(such as [[IEEE 802.11]]). ''B'' and ''C'' are connected via a cable, exchangingusing datait overto thatexchange -data (again, with the help of a protocol, (for example [[EthernetPoint-to-Point Protocol]]). However, neither of these two protocols will be able to transport information from ''A'' to ''C'', because these computers are conceptually on different networks. One therefore needs anAn [[Internetworking|inter-network]] protocol is required to "connect" them.
 
One could combine ourthe two protocols to form a powerful third, mastering both cable and wireless transmission, but we would need a different super-protocol would be needed for each possible combination of protocols. It is easier to leave the base protocols alone, and design a protocol that can work on top of any of them (the [[Internet protocolProtocol]] is an example). This will make two stacks of two protocols each. The inter-network protocol will communicate with each of the base protocolprotocols in their simpler language.; Thethe base protocols will not talk directly to each other.
 
A request on computer ''A'' to send a chunk of data to ''C'' is taken by the upper protocol, which (through whatever means) knows that ''C'' is reachable through ''B''. It, therefore, instructs the wireless protocol to transmit the data packet to ''B''. On this computer, the lower layer handlers will pass the packet up to the inter-network protocol, which, on recognizing that ''B'' is not the final destination, will again invoke lower-level functions. This time, the cable protocol is used to send the data to ''C''. There, the received packet is again passed to the upper protocol, which (with ''C'' being the destination) will pass it on. Oftento an evena higher-level protocol willor sitapplication on top, and incur further processing''C''.
 
In practical implementation, protocol stacks are often divided into three major sections: media, transport, and applications. A particular [[operating system]] or platform will often have two well-defined software interfaces: one between the media and transport layers, and one between the transport layers and applications. The media-to-transport interface defines how transport protocol software makes use of particular media and hardware types and is associated with a [[device driver]]. For example, this interface level would define how [[TCP/IP]] transport software would talk to the [[network interface controller]]. Examples of these interfaces include [[Open Data-Link Interface|ODI]] and [[Network Driver Interface Specification|NDIS]] in the [[Microsoft Windows]] and [[DOS]] environment. The application-to-transport interface defines how application programs make use of the transport layers. For example, this interface level would define how a [[web browser]] program would talk to TCP/IP transport software. Examples of these interfaces include [[Berkeley sockets]] and System V [[STREAMS]] in [[Unix-like]] environments, and [[Winsock]] for Microsoft Windows.
 
==Examples==
[[File:amitcp.svg|thumb|The network protocol stack used by [[Amiga software]]]]
 
{|class="wikitable" border="1"
One could combine our two protocols to form a powerful third mastering both cable and wireless transmission, but we would need a different super-protocol for each possible combination of protocols. It is easier to leave the base protocols alone, and design a protocol that can work on top of any of them (the [[Internet protocol]] is an example). This will make two stacks of two protocols each. The inter-network protocol will communicate with each of the base protocol in their simpler language. The base protocols will not talk directly to each other.
|+Example protocol stack and corresponding layers
! Protocol
! Layer
|-
| [[HTTP]] |
| [[Application layer|Application]]
|-
| [[Transmission Control Protocol|TCP]] |
| [[Transport layer|Transport]]
|-
| [[Internet protocolProtocol|IP]] |
| [[Internet layer|Internet]] or [[Network layer|network]]
|-
| [[Ethernet]] |
| [[Link layer|Link]] or [[Data link layer|data link]]
|-
| [[IEEE 802.3ab]]
| [[Physical layer|Physical]]
|}
 
==Spanning layer==
A request on computer ''A'' to send a chunk of data to ''C'' is taken by the upper protocol, which (through whatever means) knows that ''C'' is reachable through ''B''. It therefore instructs the wireless protocol to transmit the data packet to ''B''. On this computer, the lower layer handlers will pass the packet up to the inter-network protocol, which, on recognizing that ''B'' is not the final destination, will again invoke lower-level functions. This time, the cable protocol is used to send the data to ''C''. There the received packet is again passed to the upper protocol, which (with ''C'' being the destination) will pass it on. Often an even higher-level protocol will sit on top, and incur further processing.
An important feature of many communities of interoperability based on a common protocol stack is a '''spanning layer''', a term coined by [[David D. Clark|David Clark]]<ref>{{cite book |title=Interoperation, Open Interfaces, and Protocol Architecture |author=David Clark |publisher=National Research Council |isbn=9780309060363 |date=1997 |work=The Unpredictable Certainty: White Papers}}</ref>
<blockquote>Certain protocols are designed with the specific purpose of bridging differences at the lower layers, so that common agreements are not required there. Instead, the layer provides the definitions that permit translation to occur between a range of services or technologies used below. Thus, in somewhat abstract terms, at and above such a layer common standards contribute to interoperation, while below the layer translation is used. Such a layer is called a ''spanning layer'' in this paper. As a practical matter, real interoperation is achieved by the definition and use of effective spanning layers. But there are many different ways that a spanning layer can be crafted.</blockquote>
 
In the Internet protocol stack, the [[Internet Protocol Suite]] constitutes a spanning layer that defines a [[best-effort service]] for global routing of [[datagrams]] at [[Layer 3]]. The [[Internet]] is the community of [[interoperation]] based on this spanning layer.
A commonly used protocol stack looks like this:
 
==See also==
+- - - - - -+
*[[Cross-layer optimization]]
| [[HTTP]] |
*[[DECnet]]
+- - - - - -+
*[[Hierarchical internetworking model]]
| [[Transmission Control Protocol|TCP]] |
*[[Protocol Wars]]
+- - - - - -+
*[[Recursive Internetwork Architecture]]
| [[Internet protocol|IP]] |
*[[Service layer]]
+- - - - - -+
*[[Signalling System No. 7]]
| [[Ethernet]] |
*[[Systems Network Architecture]]
+- - - - - -+
*[[Wireless Application Protocol]]
*[[X.25]]
 
==References==
<references/>
 
{{DEFAULTSORT:Protocol Stack}}
See also: [[Network protocol design principles]]
[[Category:Network protocols]]
[[Category:Wikipedia articles with ASCII art]]