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