图 新手入门:了解网络应用与网络协议


网络应用(network application)是计算机网络之所以存在的理由 。要是我们设想不出任何有用的网络应用,那就没有必要设计支持它们的网络协议了 。不过,过去30年内已有不少人设计出大量精妙的网络应用 。这些应用既包括从20世纪80年代流行起来的基于文本的经典应用,例如远程计算机访问、电子邮件、文件传送、新闻组、聊天等;也包括近些年来所谓的多媒体应用,例如Web、因特网电话、视频会议、音频/视频点播等 。
尽管网络应用品种繁多是有许多彼此交错的部件,其软件却几乎总处于核心地位 。网络应用的软件分布于两个或以上的端系统(即主机) 。例如,Web应用包括彼此通信的两部分软件:运行在用户的主机(PC机、MAC机、工作站等)中的浏览器软件,以及运行在Web服务器上的Web服务器软件 。Telnet应用同样由分别运行于本地主机和远程主机中的两部分软件构成 。至于多方视频会议,参与会议的每台主机上都运行着一部分软件 。
用操作系统的行话来说,彼此通信的实际上不是软件部件(即程序)本身,而是进程 。我们可以把进程看成是在端系统中运行着的程序 。运行在同一个端系统上的进程彼此间通过使用进程间通信手段通信 。进程间通信的具体规则由端系统的操作系统决定 。本文不关心同一台主机内的进程间通信,而关心运行在不同主机(操作系统也可能不一样)的进程间的通信 。运行在不同端系统上的进程通过网络交换消息彼此通信 。发送进程创建消息并将之传入网络;接收进程收取这些消息,并可能发送消息作为响应,如下图所示 。每个网络应用都有各自的应用层协议,它定义在进程间交流的消息的格式和顺序,以及在送出或收到消息时采取的行动 。
 
图1:彼此通信的应用
应用层是我们着手研究协议的好地方 。我们已经熟悉依靠于协议的许多应用 。这将给我们一种似曾相识的感觉,知道协议的目的所在,有助于我们了解以后学习传输层协议、网络层协议和数据链路层协议时会碰到的许多同样的问题 。
应用层协议
把网络应用和应用层协议区分开来相当重要 。应用层协议仅仅是网络应用的一部分,让我们看几个例子 。Web是一个答应用户从Web服务器按要求取得“文档”的网络应用,web应用由许多部件构成,包括—个文档格式的标准(即超文本标记语言Html)、Web浏览器软件、Web服务器软件(例如Apache、IIS服务器)、一个应用层协议 。Web的应用层协议是超文本传送协议(HTTP),它定义如何在浏览器和web服务器之间传递消息 。因此HTTP仅仅是Web应用的一部分 。另一个例于是电子邮件应用 。电子邮件应用同样由许多部件构成,包括安置用户信箱的邮件服务器、让用户阅读和创建电子邮件消息的邮件阅读器、一个定义电子邮件消息结构的标推、一组定义如何在服务器之间以及服务器和阅读器之间传递电子邮件消息并解释其特定部分(例如信头)的应用层协议 。电于邮件应用的首要应用层协议是简单邮件传输协议(SMTP) 。因此SMTP也仅仅是电子邮件应用的一部分 。
我们已经指出,应用层协议定义运行在不同端系统上的应用程序进程如何彼此传递消息 。具体地说,一个应用层协议定义:
●所传递消息的类型,例如请求消息和响应消息 。
●各种消息类型的语法,也就是消息中的各个字段以及它们如何定界 。
●各个字段的语义,也就是各个字段中的信息的含义 。
●确定一个进程何时以及如何发出消息或响应所收到消息的规则 。
有些应用层协议是在RFC文档中具体说明的,也就是说它们处于可免费获取的公众域 。例如,HTTP就可以作为RFC获取 。浏览器软件开发者只要遵循该RFC中定义的规则,其浏览器就可以从同样遵循这些规则的任何web服务器取得Web页面 。然而,其他许多应用层协议却是专属的,有意不放在公众域中 。例如,许多现有的因特网电话产品使用专属的应用层协议 。

推荐阅读