应用层(一)—— 应用程序体系结构与进程通信
“网络应用是计算机网络存在的理由,如果我们不能构想出任何有用的应用,也就没有任何必要去设计支持它们的网络协议了。“
什么是应用层(Application Layer)?
应用层位于因特网协议栈的最顶层,是网络应用程序以及它们的应用层协议存留的地方。应用层包含了许多协议,比如HTTP(超文本传输协议)、SMTP(简单邮件传输协议)、FTP(文件传输协议)、DNS(域名系统)等等。应用层协议分布在多个端系统上,一个端系统中的应用系统使用协议与另外一个端系统中的应用程序交换信息分组(packet)——这种位于应用层的信息分组,我们称之为报文(message)。
在应用层的学习中,我们需要对现代网络应用程序中所使用的主流体系结构,以及对运行在多个端系统上的程序是如何互相通信的有一个基本了解。
应用程序体系结构(Application Architecture)
我们熟悉的很多应用程序就是建立在应用层协议等多种协议的基础之上。研究网络应用程序的核心就是写出能够运行在不同的端系统上、并通过网络彼此通信的程序。应用程序体系结构由应用程序开发者设计、规定了如何在各种端系统上组织该应用程序。
主要的应用程序体系结构有以下两种:1.客户 — 服务器体系结构 2. P2P体系结构
客户 — 服务器体系结构(client - server architecture)
1.服务器——总是活跃的主机,具有固定、周知的地址(IP地址),服务于许多称为客户的主机的请求。
2.客户——客户通过向服务器IP地址发送分组来与其联系,客户相互之间不直接通信。
服务器接收到某客户对某对象的请求(request)时,它对该客户发送所请求的对象作为响应(response)。
这种体系结构中应用程序包括FTP、Telnet和电子邮件等。
在一个客户 — 服务器应用中,常常会出现一台单独的服务器主机无法满足所有客户请求的情况。为此,配备大量主机的数据中心(data center)常被用来创建强大的虚拟服务器(virtual server)。数据中心可能有很多台服务器,需要维护,以及足够的带宽来满足数据传输的需求 。
P2P体系结构(P2P architecture)
在一个P2P体系结构中,对位于数据中心中的专用服务器依赖很小或者没有依赖,应用程序进程在间断连接的主机对间直接通信,这些主机对被称为对等方(peers)。这种对等方通信不必通过专门的服务器。
许多流行的、流量密集型应用都是P2P体系结构的,包括文件共享(比如BitTorrent)、下载协助器(比如迅雷)、因特网电话和视频协议(比如Skype)等。
这种体系结构最主要的优点是自扩展性(self-scalability),而且不需要庞大的服务器基础设施和服务器带宽。