(with C being the destination) will pass it on to a higher protocol or application on 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 ODI and 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 Spanning layer An important feature of many communities of interoperability based on a common protocol stack is a spanning layer, a term coined by David Clark "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." 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. See also Cross-layer optimization DECnet Hierarchical internetworking model Protocol Wars Recursive Internetwork Architecture Service layer Signalling System No. 7 Systems Network Architecture Wireless Application Protocol X.25 References Network protocols Wikipedia articles with ASCII art