应用层协议原理
网络核心设备并不在应用层上起作用,而仅在较低层起作用,特别是位于网络层及下面层次。这种基本设计,也即将应用软件限制在端系统的方法,促进了大量的网络应用程序的迅速研发和部署。
一、网络应用程序的体系结构
- 客户 - 服务器体系架构 (client-server architecture)
有一个总是打开的主机称为服务器,服务来自其他许多称为客户的主机的请求;客户相互之间不直接通信。
常常会出现一台单独的服务器主机跟不上所有客户请求的情况。为此,配备大量主机的数据中心常被用于创建强大的虚拟服务器。 - P2P体系结构 (P2P architecture)
对位于数据中心的专用服务器有最小的(或着没有)依赖。应用的程序在间断连接的主机对之间使用直接通信,这些主机被称为对等方。
目前许多流行的、流量密集型的应用都是P2P体系结构的。包括文件共享、因特网电话、IPTV。
某些应用具有混合的体系结构。对于许多即时讯息应用而言,服务器被用于跟踪用户的IP地址,但用户到用户的报文在用户主机之间直接发送。
P2P应用具有自扩展性 (self-scalability),也是成本有效的。但未来P2P应用面临三个挑战:
- ISP友好。ISP受制于“非对称”带宽应用,下载要比上载多得多。
- 安全性。 P2P是高度开放和分布的。
- 激励。 需要说服用户自愿向应用提供带宽、存储和计算资源。
- ISP友好。ISP受制于“非对称”带宽应用,下载要比上载多得多。
二、进程通信
在操作系统术语中,进行通信实际上是进程 (process)。
- 客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络互相发送报文。 - 进程和计算机网络之间的接口
进程通过一个称为套接字 (socket) 的软件接口向网络发送报文和从网络接收报文。

套接字是同一台主机内应用层与运输层之间的接口。由于套接字是建立网络应用程序的可编程接口,因此套接字也被称为应用程序和网络之间的应用程序编程接口。
应用程序开发者可以控制套接字在网络层的一切,但对该套接字的运输层端几乎没有控制权。 - 进程寻址
为了标识进程的地址,需要两个信息:
- 主机的地址,即IP地址
- 主机中进程的标识符,即端口号
- 主机的地址,即IP地址
三、运输层服务
可以从四个方面来考察运输层协议对应用层程序提供的服务。
- 可靠数据传输
如果一个协议提供了确保数据交付服务,就认为提供了可靠数据传输 (reliable data transfer)。
当一个运输层协议不提供可靠数据传输时,由发送进程发送的某些数据可能不能够到达接收进程。这可能能被容忍丢失的应用 (loss-tolerant application) 所接受,最值得注意的是多媒体应用。 - 吞吐量
可用吞吐量就是发送进程能够向接收进程交付比特的速率,该可用吞吐量将随时间波动。这导致另一种自然的服务,即运输层协议能够以某种特定的速率提供确保的可用吞吐量,该协议能够确保可用吞吐量总是至少r比特/秒。
具有吞吐量要求的应用程序被称为带宽敏感的应用 (bandwidth-sensitive application),许多当前的多媒体应用是带宽敏感度。
弹性应用 (elastic application) 能够根据情况或多或少地利用可供使用的吞吐量。电子邮件、文件传输以及Web传送都属于弹性应用。 - 定时
一个保证的例子如:发送方注入进套接字中的每个比特到达接收方的套接字不迟于100ms。这些服务对交互式实时应用程序有吸引力。
因特网电话中,较长的时延会导致会话出现不自然的停顿;在游戏中,较长的时延使得它失去真实感。 安全性
运输协议可以提供一种或多种安全性服务。SSL不是与TCP和UDP在相同层次上的第三种因特网运输协议,它是对TCP的加强,这种强化是在**应用层**上实现的。

下起雨,也要勇敢前行