基于IP组播的Web服务推送技术的研究与实现
扫描二维码
随时随地手机看文章
引言
随着网络技术和通信技术的快速发展与广泛应用,以及物联网、云计算、智慧地球等新技术、新概念的提出,网络化已经逐步成为近年来人们研究的热点。同时,随着Web技术的不断发展,B/S架构以其便于维护和升级等优点而广泛应用于车辆监控系统、数字化地图等方面。然而,Web服务器作为网络实体,就必须要有独立的IP地址。目前,可以通过手工静态分配或者通过DHCP(DynamicHostConfigurationProtocol)服务器动态分配IP地址;然而,由于IP地址是由一组数字构成,不便于记忆,且使用起来很不方便,而域名系统的出现为其提供了一种切实可行的解决方案,但这又需要设计DNS(DomainNameSystem)服务器来实现。
基于上述原因可知,当Web服务器接入网络之后,通常需要通过人工或服务器实现网络配置。同时,传统模式的Web系统中的服务器端一般都是被动地响应客户端请求。鉴于此,本文通过对IP多播技术进行深入分析,给出了实现Web服务的主动推送方法,并对其进行了验证。
1应用背景
Web应用模型
图1所示是一种传统的Web应用模型。在这种应用模型结构下,用户工作界面是通过WWW浏览器来实现的,极少部分事务逻辑在前段(Browser)实现,主要业务逻辑在服务器端(Server)实现,因而形成所谓三层结构[1]。客户端向服务器端发送HTTP请求,WebServer接收这个请求,然后根据不同情况访问相应的数据库、WebServer或者其它业务系统,再经过业务逻辑计算,向客户端浏览器发送HTML响应。这样就大大简化了客户端主机负荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。
但是,根据这个模型,服务器端仅在客户端发出请求后才把数据发送回去。而客户端要想获取服务器端所提供的服务时,就需要知道服务器端IP地址或该服务器的域名,而这在该模型中是无法实现的。
IP多播
随着网络规模的不断扩大和网络信息资源的迅速增加,网络传输负担也将逐渐提高,尤其是将网络资源传送给网络中所有对此信息感兴趣的主机时。注意:这不是某个主机,也不是所有主机。采用传统的单播技术已经无法解决此类网络传输问题,若采用广播技术又会增加网络负担,严重影响网络效率。而多播可以将网络数据报文按照多播组地址进行传送,只是属于该组的所有主机才能接收此数据报文,这样就极大地提高了网络传输效率。
图1Web应用模型
IP多播(也称为多址广播或组播)技术是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。多播作为一点对多点的通信,是节省网络带宽的有效方法之一。同时,多播数据报由特定的接口接收。如果要对一组特定的主机进行通信,多播能使一个或多个多播源只把数据包发送给特定的多播组,而只有加入该多播组的主机才能接收到数据包,从而提高了信息的安全性。图2所示是这种多址广播或组播技术的特点示意图。
图2可明显减少网络资源消耗的多播技术
由图2可以看出,主机A、C和D构成一个多播组G,主机X可向多播组G的三个主机进行多播(主机X可以不属于该多播组,也不一定要知道这个多播组中都包括哪些成员)。主机X在进行多播时只发送一次数据报,只是到了路由器R2才进行复制,然后到R6再复制一次。这就是说,多播的数据报仅在传送路径分岔时才将数据报复制后继续转发。若不是多播,则源站在一开始就要发送3个数据报,分别发送给主机A、C和D。构成多播组的主机数可以是很大的,如成千上万个。因此,采用多播协议可明显减轻网络中各种资源的消耗。显然,在因特网中多播要靠路由器来实现,因此,这些路由器必须增加一些能够识别多播的软件。能够运行多播协议的路由器称为多播路由器。
2Web服务推送系统的设计与实现
Web服务器也称为WWW(WorldWideWeb)服务器,其主要功能是提供网上信息的浏览服务。首先,Web服务器作为网络节点,其必须拥有独立的标识一IP地址。目前,IP地址的配置主要有两种方式:手动配置和自动配置。其中,手动配置需要人工参与,并且在目前IPv4地址紧缺的情况下,如何避免地址冲突是一个亟待解决的问题;自动配置常用的方式是在服务器端配置DHCP,但这需要DHCP服务器支持。其次,Web服务器作为服务提供者,客户只有知道其IP地址才能够使用其所提供的服务,而如果直接使用IP地址,则不安全,且不便于记忆。域名系统可解决网络节点的命名问题,然而,域名系统需要DNS的支持。最后,在传统模式中,服务器只是被动地接收和响应客户端请求,而不能发挥服务器的主动性。
2.1IP自动分配
对于任意一个网络节点而言,配置正确的IP地址是其实现网络互联的基础,本文采用IPv4LL(IPv4Link-Local)来实现在没有人工和DHCP服务器参与的情况下,Web服务器IP地址的自动分配、子网掩码设置等。其具体实现过程如下:
由网络节点首先发送DHCP服务请求数据包,若在一定的等待时间内没有收到响应数据包,则说明在本地链路中没有DHCP服务器,此时转步骤⑵;
在169.254.0.0/16网段中随机产生一个IP地址,并将这个IP地址以ARP请求数据包的形式广播到网络中,并向其它网络节点询问当前请求地址是否可用;
如果没有收到其它主机的ARP应答消息,则该IP地址可用,随之将其设置为本地IP地址,否则重复步骤(2),直到找到为本地网络节点分配到合适的IP地址为止。
为了防止节点重启而造成IP地址丢失,其在完成配置后,可将配置参数保存到非掉电易失性存储介质中。这样,当节点重新启动时,首先读取上次网络配置信息,并探测该配置信息的有效性,从而提高IP地址分配效率。
2.2域名自动获取
当访问网络中的一台主机或是该主机提供的服务时,由于域名便于记忆且IP地址动态变化多有不便,因此,通常情况下是以域名作为主机的标识。而要实现域名与IP地址的映射关系,需要DNS服务器的支持。本文采用多播DNS(MulticastDNS)机制来在没有DNS服务器参与的情况下实现IP地址和域名之间的自动转换功能。其域名自动获取过程如下:
创建本地多播地址记录,从而获取一个新的域名。
检测该域名的唯一性。在本地链路中向224.0.0.251发送多播请求数据包,并且每隔250ms发送一次,共发送三次。如果收到任何一次mDNS请求的响应数据包,则该域名已经被其它主机占用,此时将返回(1)重新获取新域名;否则转到(3)。
更新网络中其它主机cache中的数据,将cache_flush位置1,该域名获取成功。
综上所述,mDNS协议可以在无DNS服务器的网络环境中实现IP地址与域名的自动转换,以发现网络中可用的服务。其主要思想是利用局域网的组播机制来实现DNS服务器的功能。该协议中采用UDP的5353端口代替DNS的53端口,并以组播地址224.0.0.251代替DNS服务器的单播地址[3]。另外,在其域名后面都有一个.local后缀,以告诉浏览器采用mDNS协议来解释该域名。
因此,当客户应用层想解析某个域名所对应的IP地址时,它只需要向本地链路发送一个目的地址为224.0.0.251的多播请求数据包,本地所有主机一旦收到与其域名相匹配的请求时,便向请求主机发送带有自身IP地址的应答数据包,从而完成一次域名解析过程。反之,当客户应用层要解析某个已知IP地址对应的主机时,其解析过程与此类似,在此不再赘述。
另外,mDNS还给出了避免域名冲突的解决方案。通过在请求数据包的权威部分增加一个新的记录,然后比较该资源记录的类别,级别高的获得此域名;如果资源记录类别相同,则比较其类型,同样,级别高的获得此域名;如果资源记录类型也相同,则依次比较原始数据(IP地址)的每一个字节,此时由于不可能完全相同,则其值大的获得此域名。
同时,mDNS在请求、响应、消息结构等方面也有明显的优势,其主要表现在以下几个方面:
⑴mDNS协议要求服务请求端将请求的已知答案包含在DNS消息内部,如果数据包生存时间值小于原先值的一半,则DNS消息的答案部分就不再对其生存时间进行标记,从而减小了请求数据包的大小,提高了网络带宽利用率;
mDNS提供了域名冲突解决机制,因而不需要额外的检错机制,从而减轻了网络负担;
在覆盖了所有子网的情况下,其接收者也会很明确地知道mDNS响应来自本地链路;
mDNS使用的UDP端口号为5353,从而避免了端口冲突问题;
mDNS采用UTF-8对资源记录名进行编码,很好地解决了编码兼容性问题。
总之,采用mDNS协议为无DNS服务器参与情况下的IP地址与域名之间的转换提供了一套切实可行的解决方案。
Web服务推送
为了解决传统Web服务器端被动接收客户端服务请求的工作模式,本文采用DNS-SD(DNS-ServiceDiscovery)协议来使得客户可以在对服务器一无所知的情况下,使用服务器所提供的服务。同时,将当前局域网内所有可用的Web服务列举出来,供用户选择,从而使得整个Web服务系统更加透明和智能。
DNS-SD通过对DNS中的SRV、PTR、TXT等资源记录信息进行扩充来实现服务的主动推送。其中,SRV记录将服务/协议解析成IP地址,其内容包括服务名称、协议、DNS域名、优先权、权重、端口、目标;PTR记录则指向每一个信息指针,实现从IP地址到主机域名的反向映射。由于每一个网络服务接口都有一条PTR记录,其名称类似于反向字节序的IP地址,从而实现Web服务浏览功能。
3嵌入式Web服务推送
嵌入式Web一般采用B/S(Browser/Service)结构,即浏览器/服务器结构。B/S是随着Internet技术的兴起,对C/S结构的一种变化或改进的结构。在该结构下,客户端仅仅操作WWW标准浏览器便可通过Internet访问Web服务器,其主要事务逻辑在服务器端实现。在此,为了识别基于组播Web服务推送模块,本文在客户端采用BonjourforWindows浏览器插件来实现服务发现功能。
3.1Bonjour简介
Bonjour[4](法语中的你好)是一种能够自动查询接入网络中的设备或应用程序的插件。Bonjour能够显示局域网内支持组播或域名协议的设备和应用程序,并采用多播DNS来解决局域网内设备的命名冲突。装有Bonjour插件的电脑和设备可以在网络中自动传播它们自己的服务信息,并聆听其他设备的服务信息。BonjourforWindows包括—个InternetExplorer插件,可以在不知道其IP地址的情况下设置、安装支持Bonjour的设备。在已经安装了Bonjour插件的计算机上打开IE浏览器,可以在工具栏中看到如图3所示的Bonjour图标,。
嵌入式Web服务器硬件系统采用S3C6410(相关资料参见S3C6410数据手册)来实现,客户端主机与嵌入式Web服务器之间采用RJ45连接。启动服务器端服务推送模块,打开客户端浏览器,则可出现如图4所示的界面。
图4嵌入式Web服务推送系统测试画面
4结语
总而言之,本文以IP多播技术为基础,设计并实现了Web服务推送模块并对其有效性进行了验证。在该系统中,利用IPv4LL技术实现了Web服务器端IP地址的自动配置,而利用mDNS机制实现了在没有DNS服务器参与下IP地址和域名之间的自动转换功能。由此可见,采用组播技术实现Web服务推送,虽然简便易行,但其仍然存在诸如增加网络负载、占用网络带宽等问题,这些问题仍然亟待解决。
20210915_614179bc0ba65__基于IP组播的Web服务推送技术的研究与实现