论文部分内容阅读
摘要:多播介于单播和广播通信之间,是可以使一台主机(多播源)发送报文到IP网络中任意位置的一组主机中的通信技术。本文主要对IP多播技术在远程监控系统中的应用进行了简要的分析。
关键词:IP多播;远程监控;应用
中图分类号: U672.7文献标识码: A
一、IP多播技术
1、原理和特点
多播是一种允许一个或者多个发送者发送单一数据包到多个接收者的网络技术。不论组成员数量的多少,数据源只发送一次数据包,并且组播只向那些需要数据包的主机和网络发送包(以多播地址寻址)。在IP多播中,组成员的关系是动态的,多播接收主机可以在任何时候加入或退出多播组。此外,多播接收主机可以是任意多个多播组的成员。在共的链路上,相同的信息只需要一个多播流,从而能够很好地控制流量,减少了主机和网络的负担,提高了网络应用服务的效率和能力。
2、IP多播地址和多播组
多播地址用于标识一个IP多播,在IPv4中,IP多播使用了一个D类IP地址,地址的前4比特是1110,指出这是一个多播地址,其余的28比特标识了特殊的多播地址。IP多播地址被划分了三类:本地链路多播地址、预留多播地址和管理范围多播地址,并且都有不同的作用。本地链路多播地址主要以供本地网络段上的网络协议使用,不会被IP路由器转发出去,只能在本地网络传递;预留多播地址相当于即时多播地址,需要临时创建,组成员为临时丢弃,多播路由器会转发这些多播地址;管理范围多播地址则供在私有多播领域内使用,相当于RFC1918中定义的私有IP单播地址,不会分配给任何组或协议。
每一个多播组对应于一个多播地址,使用同一个多播地址接收数据的主机属于一个多播组。IP多播地址是动态分配的,当一个多播组建立时,为其分配一个多播地址,当多播组结束多播时,相应的多播地址也被回收,用于以后的多播。此外,IP多播地址仅能用作目的地址,它们决不能出现在某个数据报的源地址字段中,也不能出现在源路由和路由记录选项中。
3、多播协议
多播协议主要有主机与路由器之间的组成员关系管理协议和路由器与路由器之间的动态多播路由协议两种。因特网组管理协议IGMP(Internet Group Man-agement Protocol)是最重要的组成员关系管理协议。而动态多播路由协议主要有域内和域间两种,域内主要包括PIM-DM(Protocol Independent Multicast-Dense Mode)、PIM-SM(Protocol Independent Multicast-Sparse Mode)等,域间则包括MSDP(Multicast Source Discovery Protocol)和MBGP等。
当多播主机希望加入到一个特定的多播组时,它们将使用IGMP消息来向其本地多播路由器发出信号,并开始接收组流量。主机也可以通知本地多播路由器,它们希望离开IP多播组,并且对接收多播组流量不再感兴趣。而当多播流量跨多个物理网络时,就离不开多播路由协议的支持,它运用多播路由算法构造的多播分发树来进行多播数据报的转发。
同时,多播技术在链路层还引入了IGMPSnooping和CGMP(Cisco私有协议)等二层多播协议技术,是为了有效地抑制多播数据在其中的扩散。与CGMP不同,IGMPSnooping协议的一个突出优点是它对路由器和主机是透明的。
二、IP多播在远程监控系统中的应用
1、基于IP多播的远程监控系统
该系统主要由监控前端的视频采集装置、存储监控视频的服务器、IP多播网络、支持多播协议的交换机路由器以及应用终端等组成。
视频服务器主要用于对实时采集的监控视频进行存储、压缩和传输。监控中心和远程监控端则为应用客户端,都是普通的显示设备和PC机,用于接收、解压和回放视频的功能,并且负责多播组的管理,如加入或退出等。
本系统是通过IP多播技术实现监控视频的多点传输,使处于不同IP地点的多个监控者可以通过网络同时查看多个被监控对象的实时视频信息。监控中心主要负责整个系统监控视频的调配和管理。当远程监控端有访问请求时,首先应向监控中心发送访问请求信息,监控中心收到该请求后,查找该视频服务器的视频是否在目前已接入网上的视频中,如果在,则给请求者传送该视频服务器的多播组地址,只要请求者加入该多播组就可以实现对视频的访问;假如目前该视频服务器没有接入到网络中,则监控中心将向该视频服务器主机发送接入命令和多播组的地址,并将该组地址通知给访问请求者。然后请求者加入该多播组就可实现对指定视频的访问。根据整个网络系统带宽资源的利用情况,监控中心可以动态调整监控视频的接入速率和接入数量。
2、多播在WinSock中的实现
WinSock是Windows下网络编程的规范,也是在Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。该远程监控系统设计开发的工具是MicrosoftVisualC++6.0,它提供了MFC中CAsync-Socket类,该类封装了Windows Socket API,为程序员提供了一个面向对象的Windows Socket抽象,大大方便了程序员在C++这种面向对象的开发环境里使用WinSock规范开发基于TCP/IP的通信软件。本系统实现中的所有通信进程对象都是从CAsync Socket类派生的。
多播的具体实现步骤有:
(1)调用WSAStartup()函数初始化WinSock资源,这个函数初始化WinSockDLL,允许应用程序指定所要求的WinSock的版本,并得到一些WinSock实现的细节信息。
(2)创建套接字。多播通信要调用Socket创建一个使用UDP协议的套接字,它可以加入任意的多播组,之后数据的发送或接收都用这个套接口。
(3)设置选项。选项影响多播程序的行为,常用的有:SO_REUSEADDR,IP_MULTICAST_TTL,IP_MULTI-CAST_LOOP。SO_REUSEADDR允许重用同样的地址和端口,一台主机上同一个多播程序同一时刻要多次运行时,要设置这个选项,否则同时只能有一个程序运行。IP_MULTICAST_TTL设置发送数据报的生存时间。IP_MULTICAST_LOOP设置是否允许多播数据报环回,允许时套接口会收到它自己发送的数据。
(4)绑定套接口。套接口上调用bind,把套接口与本地地址和端口联系起来,绑定的地址是多播地址,端口是多播发送的端口。
(5)加入多播组。应用程序会调用setsockopt(IP_ADDR_MEMBERSHIP)加入多播组。应用程序可以加入任意的多播组,并且可以多次调用setsockopt(IP_ADDR_MEMBERSHIP)加入不同的多播组。
(6)发送接收多播数据。向多播组发送数据用sendto,第五个参数to是多播组的地址。应用程序如果只是给多播组发送数据,它不需要加入该多播组。函数sendto不仅可以向已加入的组发送数据,也可向未加入的组发送数据。接收数据用recvfrom,接收多播数据的程序必须加入该多播组。如果已经调用了bind,程序只会收到目的地址和端口与绑定的地址和端口相匹配的數据报。
结束语
IP多播是一种比单播和广播更有效的多点传输方式,它发出的数据报可以被属于同一个多播组的多个主机接收到,减轻了不参与多播通信主机的负担。可以说用多播通信可以很好地解决远程监控系统中多监控现场和多监控终端的问题,这也将对未来的“平安城市”、“平安校园”的部署实施具有现实的指导意义。
参考文献
[1]包怀忠.IP组播关键技术研究[J].计算机技术与发展,2009,(4).
[2]张明杰.基于IP组播技术在远程视频监控系统中的研究与实现[J].科技信息,2008,(18).
关键词:IP多播;远程监控;应用
中图分类号: U672.7文献标识码: A
一、IP多播技术
1、原理和特点
多播是一种允许一个或者多个发送者发送单一数据包到多个接收者的网络技术。不论组成员数量的多少,数据源只发送一次数据包,并且组播只向那些需要数据包的主机和网络发送包(以多播地址寻址)。在IP多播中,组成员的关系是动态的,多播接收主机可以在任何时候加入或退出多播组。此外,多播接收主机可以是任意多个多播组的成员。在共的链路上,相同的信息只需要一个多播流,从而能够很好地控制流量,减少了主机和网络的负担,提高了网络应用服务的效率和能力。
2、IP多播地址和多播组
多播地址用于标识一个IP多播,在IPv4中,IP多播使用了一个D类IP地址,地址的前4比特是1110,指出这是一个多播地址,其余的28比特标识了特殊的多播地址。IP多播地址被划分了三类:本地链路多播地址、预留多播地址和管理范围多播地址,并且都有不同的作用。本地链路多播地址主要以供本地网络段上的网络协议使用,不会被IP路由器转发出去,只能在本地网络传递;预留多播地址相当于即时多播地址,需要临时创建,组成员为临时丢弃,多播路由器会转发这些多播地址;管理范围多播地址则供在私有多播领域内使用,相当于RFC1918中定义的私有IP单播地址,不会分配给任何组或协议。
每一个多播组对应于一个多播地址,使用同一个多播地址接收数据的主机属于一个多播组。IP多播地址是动态分配的,当一个多播组建立时,为其分配一个多播地址,当多播组结束多播时,相应的多播地址也被回收,用于以后的多播。此外,IP多播地址仅能用作目的地址,它们决不能出现在某个数据报的源地址字段中,也不能出现在源路由和路由记录选项中。
3、多播协议
多播协议主要有主机与路由器之间的组成员关系管理协议和路由器与路由器之间的动态多播路由协议两种。因特网组管理协议IGMP(Internet Group Man-agement Protocol)是最重要的组成员关系管理协议。而动态多播路由协议主要有域内和域间两种,域内主要包括PIM-DM(Protocol Independent Multicast-Dense Mode)、PIM-SM(Protocol Independent Multicast-Sparse Mode)等,域间则包括MSDP(Multicast Source Discovery Protocol)和MBGP等。
当多播主机希望加入到一个特定的多播组时,它们将使用IGMP消息来向其本地多播路由器发出信号,并开始接收组流量。主机也可以通知本地多播路由器,它们希望离开IP多播组,并且对接收多播组流量不再感兴趣。而当多播流量跨多个物理网络时,就离不开多播路由协议的支持,它运用多播路由算法构造的多播分发树来进行多播数据报的转发。
同时,多播技术在链路层还引入了IGMPSnooping和CGMP(Cisco私有协议)等二层多播协议技术,是为了有效地抑制多播数据在其中的扩散。与CGMP不同,IGMPSnooping协议的一个突出优点是它对路由器和主机是透明的。
二、IP多播在远程监控系统中的应用
1、基于IP多播的远程监控系统
该系统主要由监控前端的视频采集装置、存储监控视频的服务器、IP多播网络、支持多播协议的交换机路由器以及应用终端等组成。
视频服务器主要用于对实时采集的监控视频进行存储、压缩和传输。监控中心和远程监控端则为应用客户端,都是普通的显示设备和PC机,用于接收、解压和回放视频的功能,并且负责多播组的管理,如加入或退出等。
本系统是通过IP多播技术实现监控视频的多点传输,使处于不同IP地点的多个监控者可以通过网络同时查看多个被监控对象的实时视频信息。监控中心主要负责整个系统监控视频的调配和管理。当远程监控端有访问请求时,首先应向监控中心发送访问请求信息,监控中心收到该请求后,查找该视频服务器的视频是否在目前已接入网上的视频中,如果在,则给请求者传送该视频服务器的多播组地址,只要请求者加入该多播组就可以实现对视频的访问;假如目前该视频服务器没有接入到网络中,则监控中心将向该视频服务器主机发送接入命令和多播组的地址,并将该组地址通知给访问请求者。然后请求者加入该多播组就可实现对指定视频的访问。根据整个网络系统带宽资源的利用情况,监控中心可以动态调整监控视频的接入速率和接入数量。
2、多播在WinSock中的实现
WinSock是Windows下网络编程的规范,也是在Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。该远程监控系统设计开发的工具是MicrosoftVisualC++6.0,它提供了MFC中CAsync-Socket类,该类封装了Windows Socket API,为程序员提供了一个面向对象的Windows Socket抽象,大大方便了程序员在C++这种面向对象的开发环境里使用WinSock规范开发基于TCP/IP的通信软件。本系统实现中的所有通信进程对象都是从CAsync Socket类派生的。
多播的具体实现步骤有:
(1)调用WSAStartup()函数初始化WinSock资源,这个函数初始化WinSockDLL,允许应用程序指定所要求的WinSock的版本,并得到一些WinSock实现的细节信息。
(2)创建套接字。多播通信要调用Socket创建一个使用UDP协议的套接字,它可以加入任意的多播组,之后数据的发送或接收都用这个套接口。
(3)设置选项。选项影响多播程序的行为,常用的有:SO_REUSEADDR,IP_MULTICAST_TTL,IP_MULTI-CAST_LOOP。SO_REUSEADDR允许重用同样的地址和端口,一台主机上同一个多播程序同一时刻要多次运行时,要设置这个选项,否则同时只能有一个程序运行。IP_MULTICAST_TTL设置发送数据报的生存时间。IP_MULTICAST_LOOP设置是否允许多播数据报环回,允许时套接口会收到它自己发送的数据。
(4)绑定套接口。套接口上调用bind,把套接口与本地地址和端口联系起来,绑定的地址是多播地址,端口是多播发送的端口。
(5)加入多播组。应用程序会调用setsockopt(IP_ADDR_MEMBERSHIP)加入多播组。应用程序可以加入任意的多播组,并且可以多次调用setsockopt(IP_ADDR_MEMBERSHIP)加入不同的多播组。
(6)发送接收多播数据。向多播组发送数据用sendto,第五个参数to是多播组的地址。应用程序如果只是给多播组发送数据,它不需要加入该多播组。函数sendto不仅可以向已加入的组发送数据,也可向未加入的组发送数据。接收数据用recvfrom,接收多播数据的程序必须加入该多播组。如果已经调用了bind,程序只会收到目的地址和端口与绑定的地址和端口相匹配的數据报。
结束语
IP多播是一种比单播和广播更有效的多点传输方式,它发出的数据报可以被属于同一个多播组的多个主机接收到,减轻了不参与多播通信主机的负担。可以说用多播通信可以很好地解决远程监控系统中多监控现场和多监控终端的问题,这也将对未来的“平安城市”、“平安校园”的部署实施具有现实的指导意义。
参考文献
[1]包怀忠.IP组播关键技术研究[J].计算机技术与发展,2009,(4).
[2]张明杰.基于IP组播技术在远程视频监控系统中的研究与实现[J].科技信息,2008,(18).