协议栈

协议栈（），又稱協議堆疊，是计算机网络协议套件的一个具体的软件实现。

协议套件中的一个协议通常是只为一个目的而设计的，这样可以使得设计更容易。因为每个协议模块通常都要和上下两个其他协议模块通信，它们通常可以想象成是协议栈中的层。最低级的协议总是描述与硬件的物理交互。每个高级的层次增加更多的特性。用户应用程序只是处理最上层的协议。（参见OSI模型）

在实际中，协议栈通常分为三个主要部分：媒体，传输和应用。一个特定的操作系统或平台往往有两个定义良好的软件接口：一个在媒体层与传输层之间，另一个在传输层和应用程序之间。

媒体到传输接口定义了传输协议的软件怎样使用特定的媒体和硬件（“驱动程序”）。例如，此接口定义的TCP/IP传输软件怎么与以太网硬件对话。这些接口的例子包括Windows和DOS环境下的和NDIS。

应用到传输接口定义了应用程序如何利用传输层。例如，此接口定义一个网页浏览器程序怎样和TCP/IP传输软件对话。这些接口的例子包括Unix世界中的伯克利套接字和微软的Winsock。

通用协议栈描述

 T ~ ~ ~ T
 [A]     [B]_[C]
想象一下，3台电脑： A,B,C。A和B 都有无线电设备，并可以通过合适的网络协议（如 IEEE 802.11）通信。C和B通过电缆连接来交换数据（例如以太网。但是，不能用这两项协议直接在A和C之间传输信息，因为这些电脑在概念上是连接在不同的网络上的。因此，需要一个跨网络协议来连接它们。

你可以结合这两个网络来建立一个更强大的第三个网络协议，能够控制无线和有线传输。但是一个更简单的办法是不改变这两个协议并在这两个协议之上建立一个协议（例如IP）。这样就形成了两个协议栈。网间协议和基础协议通信，两个不同类型的基础协议不会直接通信。

参见

TCP/IP协议
网络传输协议
OSI模型
无线应用协议
X.25

网络协议