网络应用是计算机网络存在的理由,如果我们不能构想岀任何有用的应用,也就没有任何必要去设计支持它们的网络协议了。自因特网全面发展以来,的确已开发出众多有用的、有趣的网络应用。这些应用程序已经成为因特网成功的驱动力,激励人们在家庭、学校、政府和商业中利用网络,使因特网成为他们日常活动的密不可分的一部分。
目录
网络体系结构:
客户-服务器体系结构(client-server architecture):
对等(P2P)体系结构 :
进程通信 :
客户和服务器进程 :
进程与计算机网络之间的接口:
网络体系结构:
两种主流体系结构:客户-服务器体系结构(client-server architecture)或者对等(P2P)体系结构。
客户-服务器体系结构(client-server architecture):
在客户-服务器体系结构(client-server architecture)中,有一个总是打开的主机称为
服务器,它服务于来自许多其他称为客户的主机的请求。
在一个客户-服务器应用中,常常会出现一台单独的服务器主机跟不上它所有客户请求的情况。例如,一个流行的社交网络站点如果仅有一台服务器来处理所有请求,将很快变得不堪重负。
对等(P2P)体系结构 :
在一个P2P(P2P architecture)体系结构中,对位于数据中心的专用服务器有最小的(或者没有)依赖。相反,应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。
许多目前流行的、流量密集型应用都是P2P体系结构的。这些应用包括文件共享(例如BitTorrent)、对等方协助下载加速器(例如迅雷)、因特网电话和视频会议(例如Skype)。
P2P体系结构的最引人入胜的特性之一是它们的自扩展性(self-scalability)。例如,在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力
未来P2P应用由于高度非集中式结构,面临安全性、性能和可靠性的挑战。
在客户-服务器体系结构(client-server architecture)中,有一个总是打开的主机称为
服务器,它服务于来自许多其他称为客户的主机的请求。
在一个客户-服务器应用中,常常会出现一台单独的服务器主机跟不上它所有客户请求的情况。例如,一个流行的社交网络站点如果仅有一台服务器来处理所有请求,将很快变得不堪重负。
在一个P2P(P2P architecture)体系结构中,对位于数据中心的专用服务器有最小的(或者没有)依赖。相反,应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。
许多目前流行的、流量密集型应用都是P2P体系结构的。这些应用包括文件共享(例如BitTorrent)、对等方协助下载加速器(例如迅雷)、因特网电话和视频会议(例如Skype)。
P2P体系结构的最引人入胜的特性之一是它们的自扩展性(self-scalability)。例如,在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力
未来P2P应用由于高度非集中式结构,面临安全性、性能和可靠性的挑战。
进程通信 :
用操作系统的术语来说,进行通信的实际上是进程(process)而不是程序。
在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信。
发送进程生成并向网络中发送报文;接收进程接收这些报文并通过会送报文进行相应。
客户和服务器进程 :
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。例如,在Web应用程序中,一个客户浏览器进程与一台Web服务器进程交换报文。
对每对通信进程,我们通常将这两个进程之一标识为客户(client),而另一个进程标识为服务器(server)。对Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程。对于P2P文件共享,下载文件的对等方表示为客户,上载文件的对等方表示为服务器。
P2P共享文件系统中,一个进程能够既是客户又是服务器。但是无论如何,我们仍能将一个进程标识为客户,另一个进程标识为服务器。我们定义客户和服务器进程如下:
在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
进程与计算机网络之间的接口:
多数应用程序是由通信进程对组成,每对中的两个进程互相发送报文。从一个进程向另一个进程发送的报文必须通过下面的网络。进程将一个成为套接字(socket)的软件接口向网络发送报文和从网络接收报文。
我们考虑一个类比来帮助我们理解进程和套接字。进程可类比于一座房子,而它的套接字可以类比于它的门。当一个进程想向位于另外一台主机上的另一个进程发送报文时,它把报文推出该门(套接字)。该发送进程假定该门到另外一侧之间有运输的基础设施,该设施将把报文传送到目的进程的门口。一旦该报文抵达目的主机,它通过接收进程的门(套接字)传递,然后接收进程对该报文进行处理。
用操作系统的术语来说,进行通信的实际上是进程(process)而不是程序。
在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信。
发送进程生成并向网络中发送报文;接收进程接收这些报文并通过会送报文进行相应。
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。例如,在Web应用程序中,一个客户浏览器进程与一台Web服务器进程交换报文。
对每对通信进程,我们通常将这两个进程之一标识为客户(client),而另一个进程标识为服务器(server)。对Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程。对于P2P文件共享,下载文件的对等方表示为客户,上载文件的对等方表示为服务器。
P2P共享文件系统中,一个进程能够既是客户又是服务器。但是无论如何,我们仍能将一个进程标识为客户,另一个进程标识为服务器。我们定义客户和服务器进程如下:
在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
进程与计算机网络之间的接口:
多数应用程序是由通信进程对组成,每对中的两个进程互相发送报文。从一个进程向另一个进程发送的报文必须通过下面的网络。进程将一个成为套接字(socket)的软件接口向网络发送报文和从网络接收报文。
我们考虑一个类比来帮助我们理解进程和套接字。进程可类比于一座房子,而它的套接字可以类比于它的门。当一个进程想向位于另外一台主机上的另一个进程发送报文时,它把报文推出该门(套接字)。该发送进程假定该门到另外一侧之间有运输的基础设施,该设施将把报文传送到目的进程的门口。一旦该报文抵达目的主机,它通过接收进程的门(套接字)传递,然后接收进程对该报文进行处理。
多数应用程序是由通信进程对组成,每对中的两个进程互相发送报文。从一个进程向另一个进程发送的报文必须通过下面的网络。进程将一个成为套接字(socket)的软件接口向网络发送报文和从网络接收报文。
我们考虑一个类比来帮助我们理解进程和套接字。进程可类比于一座房子,而它的套接字可以类比于它的门。当一个进程想向位于另外一台主机上的另一个进程发送报文时,它把报文推出该门(套接字)。该发送进程假定该门到另外一侧之间有运输的基础设施,该设施将把报文传送到目的进程的门口。一旦该报文抵达目的主机,它通过接收进程的门(套接字)传递,然后接收进程对该报文进行处理。
图2-3显示了两个经过因特网通信的进程之间的套接字通信
进程寻址:可供应用程序使用的运输服务:在一台主机上运行的进程为了向另一台主机上运行的进程发送分组,接收进程需要一个地址。为了标识该接收进程,需要定义两种信息:①主机的地址;②在目的主机中指定接收进程的标识符。
前面讲过套接字是应用程序进程和运输层协议之间的接口。在发送端的应用程序将报文推进该套接字。在该套接字的另一侧,运输层协议负责从接收进程的套接字得到该报文。
可靠的数据传输:包括因特网在内的很多网络提供了不止一种运输层协议。当开发一个应用时,必须选
择一种可用的运输层协议。一个运输层协议能够为调用它的应用程序提供什么样的服务呢?我们大体能够从四个
方面对应用程序服务要求进行分类:可靠数据传输、吞吐量、定时和安全性。



