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


除了知道接收进程所在端系统的地址外,发送进程还得指定可让接收端系统把所传送消息定向到接收进程的信息 。因特网中用于此目的的是接收进程的端口号(port number) 。流行的应用层协议已被赋予特定的端口号 。例如,使用HTTP协议的web服务器进程是以端口号80标识的,使用SMTP协议的邮件服务器是以端门号25标识的 。RFC 1700列出了所有因特网标准协议众所周知的端口号 。在开发新的网络应用程序时,必须赋予它一个新的端口号 。
用户代理
再开始继续研究应用层协议之前,讨论一下用户代理(user agent)的概念也许有所裨益 。用户代理是一个位于用户和网络应用之间的接口 。例如,Web应用的用户代理是诸如Netscape Navigator和微软Internet EXPlore这样的浏览器 。浏览器使得用严可以观看web页面、进行web冲浪、提供表单输入、与Java小应用程序交互,等等 。浏览器还实现了HTTP协议的客户端 。因此启动后的浏览器除给用户提供一个接口外,其进程还同时在经由一个套接字发送接收消息 。另一个例子是关于电子邮件应用的 。电子邮件应用的用户代理是“邮件阅读器”,它使得用户可以编写和阅读邮件消息 。许多公司提供可运行在PC机、MAC机和工作站上的图形用户界面的邮件阅读器(例如Eudora,Netscape Messenger,Microsoft Outlook) 。运行在PC机上的邮件阅读器还实现了多个应用层协议的客户端,典型的有用于发送邮件的SMTP协议的客户端.以及用于检索邮件的某个邮件检索协议(例如POP3或IMAP)的客户端 。
应用所需的服务
我们知道套接字是应用进程和传输协议之间的接口 。发送端的应用进程通过这扇门送出消息 。在门的另一侧,传输协议负责把这些消息跨网络传送到接收进程的门口 。包括因特网在内的许多网络体系结构提供不止一个传输协议 。在开发应用程序时,必须选择一个可用的传输协议 。如何进行选择呢?最可能的情形是,先研究一下由可用的传输协议提供的服务,再选出其服务与应用程序的需求最为匹配的协议 。这种情形类似于在两个城市之间旅行时选择乘火车还是乘飞机 。你只能选择其中一种运输方式,而每种方式提供的服务是不同的(例如火车提供市区载客服务.飞机提供更短的运输时间) 。
网络应用可能要求传输协议提供什么样的服务呢?我们可以把网络应用的服务需求按以下3个尺度粗略地进行划分:可靠性、带宽、实时性 。
可靠性
有些应用要求完全可靠地传送数据,也就是说不能有数据丢失,例如电子邮件、文件传送、远程主机访问、Web文档传送、财务应用等 。丢失文件数据或财务交易数据的灾难性后果是可想而知的 。另有一些丢失容忍应用(lose-tolerant application)可以容忍一定数量的数据丢失,例如实时音频/视频或仓储音频/视频等多媒体应用 。在丢失容忍的多媒体应用中,数据的丢失可能会在播放出的音频/视频中引入短时脉冲干扰,不过不是至关紧要的损伤 。数据丢失对于应用质量的影响以及实际可容忍的分组丢失量强烈依靠于应用本身及所用的编码方案 。
带宽
有些应用必须以特定的持续速率传送数据才会有效 。例如,假如某个因特网电话应用32Kbps的速率编码语音,那么它必须能够以同样的速率把数据发送到网络,再由网络递送到接收应用 。假如得不到这个数量的带宽,应用就得以一个较低的速率编码,还得获取足以维持这个编码速率的带宽,否则只能放弃,因为对于这样的带宽敏感应用(bandwidth-sensitive application)来说,仅仅得到所需带宽的一半是没有用的 。许多当前的多媒体应用对带宽敏感,不过将来的多媒体应用可能用上自适应编码技术,能够以与当前的可用带宽相匹配的速率编码 。带宽敏感应用需要一个给定数量的带宽,而与之相对的是,弹性应用(elastic application)却可以根据临时可用量随多随少地使用带宽 。电子邮件、文件传送、远程访问、web传送等都是弹性应用 。当然带宽肯定越高越好 。