概述

应用层定义:负责为应用程序提供网络服务,支持各种协议,定义数据传输的语义,语法,语序等。

研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。

例如,在网络应用程序中,有两个互相通信的不同程序:一个是运行在用户主机上的浏览器程序;另一个是运行在 Web 服务器主机上的 Web 服务器程序。

网络应用程序体系结构

网络应用程序的体系结构(application architecture)主要有两种,一种是 客户-服务器体系结构(client-server architecture),另外一种是P2P体系结构 (P2P architecture)。(还可以将两者进行结合)

在客户-服务器体系结构中,有一个持续打开,等待连接的主机称为服务器,它服务于来自许多其他称为 客户 的主机请求。常见的应用程序如Web、FTP、电子邮件。下图显示了这种体系结构:

Untitled

客户-服务器体系结构的缺点是:如果客户过多,服务器的响应跟不上客户请求速度的情况。因此必须要配备大量主机的数据中心。

在P2P体系结构中,对于服务器的依赖是很小的。应用程序在间断连接的主机对之间使用直接通信,这些主机被称为对等方。常见的应用程序为:文件共享、迅雷、视频会议。对于许多即时讯息应用而言,服务器被用户跟踪用户的IP地址,但用户到用户的报文在用户之间(无需通过中间服务器)直接发送。

P2P体系结构的最引人入胜的特性之一是它们的自扩展性。在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力。然而,未来P2P应用由于高度非集中式结构,面临安全性、性能和可靠性等挑战。

Untitled

即时通信软件: 在线检测:客户服务结构 当用户上线时,向中心服务器注册其IP地址 用户与中心服务器联系,以找到其在线好友的位置 两个用户之间聊天:P2P

Napster:

文件搜索:集中 主机在中心服务器上注册其资源 主机向中心服务器查询资源位置 文件传输:P2P

进程通信

我们都知道一个计算机允许同时运行多个应用程序,在我们看起来这些应用程序好像是同时运行的,那么它们之间是如何通信的呢?