在受约束的环境中的客户和服务器
一般来讲,对于CS体系架构,计算机的连接在一个单一的同构网络里,传输软件提供必要的端对端连接。但这种直接的、统一的访问权限并非总能获得。
对于异构环境来讲,程序必须要满足各种不兼容系统的需求,并且不能依赖于某一种传输协议为任意一对机器提供通信,也不能提供一种能在任意机器上运行的客户或者服务器软件。
另外,很多机构都指定了安全措施,这造成了一些连通性问题。比如说防火墙外的一些服务可能不能访问内网内的一些服务
应用网关
需要在受限制的环境中设计客户-服务器交互的程序员,通常依靠一种强有力的技术来克服这种连通性约束。这种技术是在一些中间机器上附加一些应用程序,并允许这些应用程序在客户和它所期望的服务器之间传递信息。提供这种服务的一种中间程序叫做应用网关。如果中间机器专门用于允许某个应用程序网关,这个机器也被称为网关机(应用网关这一术语指的是运行着的程序,但这个概念这块延伸到机器上)。比如,如果一台计算机专门用于运行一个在两个电子邮件域间传递电子邮件的程序,则该机器可以称为邮件网关。
邮件网关
下图显示了应用网关的一种通用用法,即位于两个电子邮件系统间的一个中介:
实现
理论上来说,一个单控制线程足以实现一个邮件网关。但实际上,大多数实现是将邮件网关的功能分为两个线程,每个线程都在一个单独的进程中。一个线程处理传入邮件,另一个线程则管理外发邮件。
- 处理传入邮件的线程从不发送邮件。它计算出应答地址,为邮件选择到目的路由,然后将出报文存入队列等待发送。
- 处理外发邮件的线程不直接接受传入邮件,它只定期扫描输出队列。对在输出队列中找到的每个邮件,形成一个到目的地址的连接,然后发送邮件。如果输出线程不能参加到目的地的连接(如由于目的主机崩溃了),它就让该邮件留在队列中,并继续处理队列中的下一个邮件。然后,当输出线程重新扫描队列时,它将再次与目的主机联络并交付该邮件。如果一个邮件留在输出队列中的时间很长(比如3天),输出线程就向原来发送邮件的用户报告交付出错
这样,输入和输出操作就可以相互独立的运行了。
应用网关和隧道技术的比较
应用网关和隧道技术都可以用来解决异构条件下的互操作,它们各有其优缺点。
使用应用网关而不是隧道技术的主要优点:
- 创建应用网关时可以直接通过传统的编程工具构造,而不修改计算机的操作系统。网关不需要改动任何下层协议软件。此外,应用网关安装好之后,网关就可以使用标准的客户和服务器程序
- 它允许所有现存的网络系统继续运行而不受到影响。管理员不需要学习新的网络技术或者改变任何物理连接;用户也不需要学习这些服务的新接口
应用网关缺点:
- 需要编程人员为每个服务构造单独的应用网关。比如说邮件网关只提供邮件服务,不提供远程文件访问或者远程登录的功能。
- 可能需要额外的应用资源。比如可能需要购买一些新的计算机或者增加网络连接等
隧道技术的主要优点:
- 出现新的服务时不需要任何改变。传输级隧道一旦构成,它就成了下层网络结构的一部分。由于应用程序意识不到隧道的存在,隧道可以用于任何服务
- 隧道技术还提供了一致性,因为它意味着这个机构可以使用单一的传输协议
隧道技术的主要缺点:
- 为安装提供全部功能的传输级隧道,网点必须修改要连接两个操作系统网关上运行的操作系统,甚至可能需要修改使用隧道的主机软件
- 一旦机构建立了一条隧道,所有主机都必须使用单一的传输协议
为了避免改变用户的环境,很多机构使用应用网关
应用网关举例
通过给那些并非运行所有协议的客户机器提供访问,应用网关可以扩展服务。比如,考虑一个主机上的一位用户,他可以使用电子邮件,而不能使用FTP等文件传输协议。
假设在一个受限制的机器上的用户需要访问RFC文档,应用网关技术能够解决这个访问问题,只要使得该机构与电子邮件和FTP服务互联起来,并同时控制访问和保证授权。
为了从电子邮件提供RFC访问,应用网关必须与这两个服务相连接。为使用网关,用户必须向网关发送指明所要求的RFC的电子邮件。应用网关验证用户是否被授权访问RFC,然后完成FTP连接,获得RFC的一个副本,然后将RFC文档放在一个电子邮件中发回给该用户