新型和令人兴奋的互联网应用,如:电子邮件、网络社区、文件共享、在线游戏等是我们使用
互联网源动力。网络应用是计算机网络存在的理由,如果没有任何有用的应用,也就没有必要
设计支持它们的各种网络协议。下文主要介绍各类常见网络应用与相应的应用层协议。
研发网络应用程序的 核心 是写出能够运行在不同端系统和通过网络彼此通信的应用程序。从应
用程序开发者的角度看,网络体系结构 是固定的,并为应用程序提供了特定的服务集合。而 应
用程序体系结构 由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序。
现代网络应用程序中所使用的的两种主流 体系结构 :客户服务器体系结构、P2P体系结构
客户服务器体系结构:
有一个总是打开着的主机称为 服务器 ,它服务于来自其他称为 客户 的主机的请求
具有客户服务器结构的应用程序包括:Web、FTP、Telnet、电子邮件等
客户服务器结构常常会出现一台单独的服务器主机跟不上它所有客户请求的情况,因
此对 数据中心 的专用服务器有极大依赖。
P2P体系结构:
应用程序在间断连接的主机对之间使用直接通信,这些主机称为 对等方 。
具有P2P结构的应用程序包括:BitTorrent、迅雷、Skype等
P2P体系结构最具有吸引力的特性是 自扩展性 ,每个对等方既增加系统的工作量,也增
加系统的服务能力。
P2P应用面临的三个主要挑战:
ISP友好
安全性
激励
什么是应用层协议?
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文、交换的报文类
型、各种报文类型的语法、字段的语义、一个进程何时以及如何发送报文,对报文进行响
应的规则。
Web和HTTP:
Web是一个引起公众注意的因特网应用,它极大地改变了人们与工作环境内外交流的方式,
它将因特网从只是很多数据网之一的地位提升为仅有的一个数据网。
HTTP:超文本传输协议,是Web的核心,HTTP由两个程序实现:一个客户程序、一个服务器
程序。它们运行在不同的端系统中,通过交换HTTP 报文进行会话。HTTP定义了这些
报文的结构以及客户和服务器进行报文交换的方式。
HTTP服务器并不保存关于客户的任何信息,所以HTTP是一个无状态协议。
非持续连接和持续连接:
客户与服务器在一段时间内进行通信,其中客户发送一系列请求并且服务器对每个请求
进行响应。如果所有的请求与响应通过相同的连接发送,则称为持续连接,如果每对请
求与响应通过单独的一条连接发送,则称为非持续连接。
采用非持续连接的HTTP:
缺点:必须为每个请求的对象建立和维护一个全新的连接,对于每个这样的连接,在
客户和服务器中都要分配TCP缓冲区和保持TCP变量,这给Web服务器带来了严重的负担。
用户与服务器的交互:cookie
HTTP时无状态的,这简化了服务器的设计,并且允许开发出同时处理大量连接的高性能Web服务
器。然而,一个Web站点希望能够识别用户,为此,HTTP使用了cookie。
cookie的四个组件:
HTTP响应报文中的一个cookie首部行
HTTP请求报文中的一个cookie首部行
用户端系统中保留一个cookie文件,由用户浏览器管理
Web站点的一个后端数据库
Web缓存:
Web缓存器又叫代理服务器,它能够代表初始Web服务器来满足HTTP请求的网络实体。它有自己
的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。
使用Web缓存的好处:
1.大大减少对客户请求的响应时间
2.大大减少一个机构的接入链路到因特网的通信量
在看待Web缓存时,可将其当做一个中间层,将其与其他系统中存在的中间层相比较
确认Web缓存中的数据与初始服务器中的数据是否同步时使用Get方法
文件传输协议FTP:
在一个典型的FTP会话中,用户主机向远程主机传输或接受文件。为了能够访问其远程账户,用户必
须提供用户标识符与口令,来获取授权信息。用户通过一个FTP用户代理与FTP交互。
FTP使用两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。控制连接用于在两主
机之间传输控制信息,如用户标识符、口令等,数据连接用于实际发送一个文件。
对于FTP传输而言,控制连接贯穿整个用户会话期间,但是对会话中的每一次文件传输都需要建立一
个新的数据连接,即数据连接时非持续的。FTP无服务必须在整个会话期间保留用户状态,将特定用
户与控制连接联系起来,随着用户在目录树上徘徊,服务器必须追踪用户在目录树上的当前位置。对
每个运行中的用户会话的状态信息进行追踪大大限制了FTP同时维持会话的总数。
电子邮件:
自从有了因特网,电子邮件就开始在网上流行起来,随着时间的发展,电子邮件变得越来越精细,功
能越来越强大,它是当今互联网上最重要、最实用的应用程序之一。
电子邮件的主要组成部分:用户代理、邮件服务器、简单邮件传输协议
邮件服务器形成了电子邮件体系的核心,每个接收方在其中的某个邮件服务器上有一个邮箱。
典型的邮件发送过程:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮
件服务器,然后在这里被分发到接收方的邮箱中。
SMTP:
SMTP是电子邮件应用的核心,用于从发送方的邮件服务器发送报文到接收方的邮件服务器
SMTP虽然具有非常出色的性质,但它所具有的某些陈旧特征仍表名它是一种继承的技术,如:它
限制所有邮件报文的体部分只能采用简单的7比特ASCII表示。
POP3:
POP3是一个极为简单的邮件访问协议,但功能有限
POP3按照三个阶段进行工作:特许、事务处理、更新
IMAP:
IMAP是一个邮件访问协议,但比POP3更复杂也具有更多功能。IMAP服务器把每个报文与一个文件
夹联系起来,当报文第一次到达服务器时,它与收件人的INBOX文件夹相关联,收件人可以将邮件
移到一个新的、用户 创建的文件夹中阅读、删除邮件。
IMAP的另一个重要特性是具有允许用户代理获取报文组件的命令。
DNS:因特网的目录服务
因特网上的主机可以通过多种方式进行标识,其中一种是主机名,如:www.linlin.com,这些名字便
于记忆,但主机名几乎没有提供关于主机在因特网中的位置信息,因此,主机可以使用IP地址进行标
识。人们更倾向于使用主机名,而路由器更喜欢使用IP地址,因此,一种将主机名与IP地址转换的目
录服务DNS(域名系统)产生了。
DNS是一个有分层的DNS服务器实现的分布式数据库,是一个使得主机能够查询分布式数据库的应用层
协议。
DNS提供的一些重要服务:主机别名、邮件服务器别名、负载分配
在其他网络应用需要使用DNS服务时,就会给这些应用带来额外的时延。时延的大小与DNS的设计有关
1.DNS的一种简单设计是在因特网上只使用一个DNS服务器,但这种集中式设计的问题包括:
单点故障
通信容量
远距离的集中式数据库
维护
2.分布式、层次数据库
包括:根DNS服务器,顶级域DNS服务器、权威DNS服务器
当某一用户需要查询某主机名对应的IP地址时,客户首先与根服务器之一联系,它将返回对
应的顶级域DNS服务器的IP地址,该客户则与这些顶级域DNS服务器之一联系,顶级域DNS服
务器返回权威服务器的IP地址,然后客户与权威服务器之一联系,权威服务器将会为客户返
回该主机名对应的IP地址。
除了上述的层次结构,还有一类重要的DNS,称为本地DNS服务器,每个ISP都有一台本地DNS
服务器,当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台本
地DNS服务器的IP地址。
3.DNS缓存
为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用缓存技术
P2P应用:
上述的所有因特网应用都采用了客户-服务器体系结构,极大地依赖于总是打开的基础设施服务器。而
P2P体系结构对基础设施服务器有最小的依赖。下面我们讨论两种特别适用于P2P设计的应用:文件分
发、大型对等方社区中的数据库
P2P文件分发:
相对于客户-服务器体系结构,P2P结构具有良好的内在扩展性。这是因为,对等方除了是数据的接
受者也是数据的重新分发者。
在文件分发的过程中,开始只有服务器具有文件,而随着文件数据的传输,对等方之间也拥有了这
些文件,它们之间可以相互的传输这些数据。从而提高了整个系统的能力。
BitTorrent:
BitTorrent是一种用于文件分发的流行P2P协议,用BitTorrent来讲,参与一个文件分发的所有对等
方的集合被称为一个洪流,在一个洪流中对等方彼此下载等长度的文件块。每个洪流具有一个基础设
施节点,称为追踪器:当一个对等方加入某洪流时,它向追踪器注册自己,并周期性的通知追踪器它
仍在该洪流中。通过这种方式,追踪器跟踪正在参与洪流中的对等方。
在一个文件分发的过程中,每个对等方将具有该文件数据的子集,并且不同对等方具有不同的子集,
每个对等方周期性的询问临近对等方它们所具有的的子集块列表,从而向其当前没有的块发出请求。
在请求块的过程中,使用最稀缺优先技术,针对其没有的块并在其临近对等方中最稀缺的块,并首
先请求那些最稀缺的块,用以均衡每个快在洪流中的副本数量。