应用层笔记
1、应用层协议原理
1.1 网络应用程序体系架构
在选择应用程序体系结构时,应用程序研发者很可能利用现代网络应用程序中所使用的两种主流
体系结构之一:客户-服务器体系结构或对等(P2P)体系结构。
在 客户-服务器体系结构(client-server architecture)中,有一个总是打开的主机称为
服务器,它服务于来自许多其他称为客户的主机的请求。一个典型的例子是Web应用程
序,其中总是打开的Web服务器服务于来自浏览器(运行在客户主机上)的请求。当
Web服务器接收到来自某客户对某对象的请求时,它向该客户发送所请求的对象作为响
应。值得注意的是利用客户-服务器体系结构,客户相互之间不直接通信;例如,在Web
应用中两个浏览器并不直接通信。客户-服务器体系结构的另一个特征是该服务器具有固
定的、周知的地址,该地址称为IP地址(我们将很快讨论它)。因为该服务器具有固定
的、周知的地址,并且因为该服务器总是打开的,客户总是能够通过向该服务器的IP地
址发送分组来与其联系。具有客户-服务器体系结构的非常著名的应用程序包括Web、
FTP、Telnet和电子邮件。
在一个 P2P 体系结构(P2P architecture) 中,对位于数据中心的专用服务器有最小的
(或者没有)依赖。相反,应用程序在间断连接的主机对之间使用直接通信,这些主机对
被称为对等方c这些对等方并不为服务提供商所有,相反却为用户控制的桌面机和膝上机
所有,大多数对等方驻留在家庭、大学和办公室。因为这种对等方通信不必通过专门的服
务器,该体系结构被称为对等方到对等方的。许多目前流行的、流量密集型应用都是P2P
体系结构的。这些应用包括文件共享(例如BitTorrent) x对等方协助下载加速器(例如迅
雷)、因特网电话和视频会议(例如Skype)。
P2P体系结构的最引人入胜的特性之一是它们的自扩展性(self-scalability) o例如,
在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等
方通过向其他对等方分发文件也为系统增加服务能力。
1.2、进程通信
- 客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。例如,在Web
应用程序中,一个客户浏览器进程与一台Web服务器进程交换报文。在一个P2P文件共
享系统中,文件从一个对等方中的进程传输到另一个对等方中的进程。对每对通信进程,
我们通常将这两个进程之一标识为 客户(client),而另一个进程标识为 服务器(serve"。
对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程。对于P2P文件
共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。- 进程与计算机网络之间的接口
如上所述,多数应用程序是由通信进程对组成,每对中的两个进程互相发送报文。从
一个进程向另一个进程发送的报文必须通过下面的网络。进程通过一个称为 套接字(sock,
el)的软件接口向网络发送报文和从网络接收报文。我们考虑一个类比来帮助我们理解进
程和套接字。进程可类比于一座房子,而它的套接字可以类比于它的门。当一个进程想向
位于另外一台主机上的另一个进程发送报文时,它把报文推出该门(套接字)。该发送进
程假定该门到另外一侧之间有运输的基础设施,该设施将把报文传送到目的进程的门口。
一旦该报文抵达目的主机,它通过接收进程的门(套接字)传递,然后接收进程对该报文
进行处理。- 进程寻址
为了向特定目的地发送邮政邮件,目的地需要有一个地址。类似地,在一台主机上运
行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址。为了标
识该接收进程,需要定义两种信息:①主机的地址;②在目的主机中指定接收进程的标
识符。
在因特网中,主机由其 IP地址 (IP address)标识。我们将在第4章中非常详细地讨
论IP地址。此时,我们只要知道IP地址是一个32比特的量且它能够唯一地标识该主机就
够了。除了知道报文发送目的地的主机地址外,发送进程还必须指定运行在接收主机上的
接收进程(更具体地说,接收套接字)。因为一般而言一台主机能够运行许多网络应用,
这些信息是需要的。目的地 端口号 (port number)用于这个目的。已经给流行的应用分配
了特定的端口号。例如,Web服务器用端口号80来标识。邮件服务器进程(使用 SMTP
协议)用端口号25来标识。用于所有因特网标准协议的周知端口号的列表能够在http:〃
WWW. iana. org处找到。
1.3 可供应用程序使用的运输服务
一个运输层协议能够为调用它的应用程序提供什么样的服务呢?我们大体能够从四个
方面对应用程序服务要求进行分类:可靠数据传输、吞吐量、定时和安全性。
- 可靠数据传输
- 可靠数据传输
- 容忍丢失的应用
- 吞吐量
在第1章中我们引入了可用吞吐量的概念,在沿着一条网络路径上的两个进程之间的
通信会话场景中,可用吞吐量就是发送进程能够向接收进程交付比特的速率。
具有吞吐量要求的应用程序被称为 带宽敏感的应用(bandwidth-sensitive application)。
带宽敏感的应用具有特定的吞吐量要求,而 弹性应用(elastic application)能够根据
当时可用的带宽或多或少地利用可供使用的吞吐量。- 定时
运输层协议也能提供定时保证。如同具有吞吐量保证那样,定时保证能够以多种形式
实现。一个保证的例子如:发送方注入进套接字中的每个比特到达接收方的套接字不迟于
100ms。- 安全性
最后,运输协议能够为应用程序提供一种或多种安全性服务。例如,在发送主机
中,运输协议能够加密由发送进程传输的所有数据,在接收主机中,运输层协议能够在
将数据交付给接收进程之前解密这些数据。这种服务将在发送和接收进程之间提供机密
性,以防该数据以某种方式在这两个进程之间被观察到。
4、因特网提供的运输服务
- TCP服务
TCP服务模型包括面向连接服务和可靠数据传输服务。当某个应用程序调用TCP作为
其运输协议时,该应用程序就能获得来自TCP的这两种服务。
TCP协议还具有拥塞控制机制,这种服务不一定能为通信进程带来直接好处,但能为
因特网带来整体好处。当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会
抑制发送进程(客户或服务器)。- UDP服务
UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP是无连
接的,因此在两个进程通信前没有握手过程。UDP协议提供一种不可靠数据传送服务,也
就是说,当进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将到达接收
进程。不仅如此,到达接收进程的报文也可能是乱序到达的。
UDP没有包括拥塞控制机制,所以UDP的发送端可以用它选定的任何速率向其下层
(网络层)注入数据。
5、应用层协议
应用层协议 (application-layer protocol)定义了运行在不同
端系统上的应用程序进程如何相互传递报文。特别是应用层协议定义了 :
- 交换的报文类型,例如请求报文和响应报文。
- 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
- 字段的语义,即这些字段中的信息的含义。
- 确定一个进程何时以及如何发送报文,对报文进行响应的规则。


浙公网安备 33010602011771号