毕业设计(论文)-基于UDP组播会议室系统的设计与实现.doc_第1页
毕业设计(论文)-基于UDP组播会议室系统的设计与实现.doc_第2页
毕业设计(论文)-基于UDP组播会议室系统的设计与实现.doc_第3页
毕业设计(论文)-基于UDP组播会议室系统的设计与实现.doc_第4页
毕业设计(论文)-基于UDP组播会议室系统的设计与实现.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京理工大学珠海学院2012届本科生毕业设计基于UDP组播会议室系统的设计与实现北京理工大学珠海学院毕业设计诚信承诺书本人郑重承诺:我所呈交的毕业设计基于UDP组播会议室系统的设计与实现是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。承诺人签名: 日期: 年 月 日基于UDP组播会议室系统的设计与实现摘 要近两年来,网络视频会议厂商的大力推广以及运营商的高调介入,成功将网络视频会议由专门的行业应用推入了普通大众的视线,使得网络视频会议成为信息化的重要标志。随着国力的增强和通讯及时性的要求,网络视频会议紧跟国外的发展步伐,在国内开始稳步发展。视频会议系统市场也步入稳步快速发展阶段。本次设计的网络会议室系统使用C#编程语言开发,基于.net技术,网络通信使用UDP数据报传输协议实现了点对点的通信和组播。本系统包括成员列表模块、留言板模块、发言模块、语音模块、视频模块、登陆与退出的模块。可以实现多人同时在线,可进行文字会议聊天,语音会议聊天,视频会议聊天,也可以清楚地浏览会议室中的成员。这个基于UDP组播的网络会议室系统,不仅满足了网络视频会议的各项要求,而且最大限度的利用了现有带宽从而节省了时间、资源和费用问题。关键字:语音编解码 UDP用户数据包协议 组播FOR UDP GROUP ON THE DESIGNAND IMPLEMENTATION OF THE SYSTEMABSTRACTIn the past two years, the network videoconferencing manufacturers of promoting and operators of the high success in the network video conference from special industry application in the general publics view, video conference information network becomes an important landmark. The power to enhance the timeliness and communication, internet video conference with the pace of development in china began developing steadily. Video conferencing system market stable and rapid development stage and enter. The design of the network system uses the programming language c#.net the technology development based on internet communication, the use of UDP data reported to the transport protocol for point-to-point communication and team on. This system includes a list of modules and message boards, speaking module, voice, video landing and out of the modules. You can achieve more people online, but at a meeting with the words, the voice, video conference, is also clear to members of the room. UDP group on the network based on the system, Not only to the internet video conference, and the best use of existing bandwidth which saves time and resources and the question of costs.Key Words: Voice Codec UDP User Datagram Protocol Multicast目 录 摘 要IABSTRACTII1 前言12 系统详细设计22.1研究设计内容22.2设计方案论证22.3系统环境22.4需求分析33 系统功能设计43.1文字会议模式43.2语音会议模式43.3视频会议模式54 系统功能设计技术与原理94.1 UDP传输协议94.2组播的含义104.2.1硬件组播104.2.2 IP组播的基本概念114.3组播网络的体系结构144.3.1组播的工作原理144.3.2组播路由协议144.3.3组播的实现164.4 IP组播中存在的问题与发展184.5系统语音编解码原理194.5.1编码原理194.5.2译码原理204.6视音频传输实现的原理215 系统框架设计225.1系统整体界面225.2文字会议界面225.3语音会议界面235.4视频会议界面236 系统功能测试256.1组播协议的丢包处理256.2测试方案256.3测试结果256.3.1会议室登陆测试256.3.2文字会议测试276.3.3语音会议测试286.3.4视频会议测试316.3.5离开会议室测试347 结论37参考文献38附 录39谢 辞44V1 前言 近年来互联网飞速发展,各类型网站和互联网应用如雨后春笋般纷纷出现,为了吸引网民的访问,各公司都推出了有自己特色的服务,但都是基于传统文字和图形,而随着上网人数的增长和网民素质的提高,用户对服务提出了更高的要求,不但要求传统的文字和图形,还需要一些更人性化的内容如音频和视频等。现有网络应用上的音频和视频都是基于宽带网的,而现有的网络带宽条件决定了广大的拨号上网用户根本无法享受这些服务,这就造成了很大矛盾,制约了互联网应用的发展。然而,随着Internet的迅速普及和爆炸性发展,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网络视频会议、网络音频/视频广播、AOD/VOD、股市行情发布、多媒体远程教育12 详见黎洪松 :“多媒体数据标准”J,电信科学,1995,第19-25、CSCW协同计算、远程会诊。这就带来了带宽的急剧消耗和网络拥挤问题。为了缓解网络瓶颈,人们提出各种方案,归纳起来,主要包括以下四种:kXb/m0增加互连带宽;IXPUB技术博客AI:_9ZZC4bO服务器的分散与集群,以改变网络流量;应用QoS机制,把带宽分配给一部分应用;m9f!Kb5cf5d0采用IP Multicast(译为组播、多播或多路广播)技术。IXPUB技术博客:Y%F7N9;S3o3K比较而言,IP组播技术有其独特的优越性在组播网络中,即使用户数量成倍增长,主干带宽不需要随之增加。这个优点使它成为当前网络技术中的研究热点之一。2 系统详细设计2.1研究设计内容1实现局域网7 详见胡道元:计算机局域网M,清华大学出版社 1995年内部的连接,为网络会议提供服务。2满足信息化的要求,为各类应用系统提供方便、快捷的信息通路。3能够可靠地运行,实现高可用性,易于浏览和显示。4. 可以实时地在网络会议系统中输入与浏览文本信息。5. 可以清晰地听到网络会议系统里成员的声音。6. 为保证网络的安全,语音系统采用编解码。7. 可以清晰的看到你想见的在线成员。2.2设计方案论证业务描述:本系统采用UDP用户数据报传输协议实现了点对点的通信和组播。实现功能:在线成员可以随意发言,成员跟成员之间不仅可以文字聊天,也可以语音聊天,必要时可以实现一对多的视频聊天,并且会议参加者也可以清楚地浏览到会议室中其他现有的成员。设计方案:C/S架构。关键技术及难点:IP组播技术5 详见沈祖冀:“TCP/IP协议和IP组播的视频传输” J,广东通信技术2001/4,P12-14、语音模块的设计与实现、视频模块的设计与实现。解决方法:请教导师,查阅资料,上网搜索。功能实现:在线成员之间可以随意发言聊天(包括语音视频)采用的是IP组播技术。2.3系统环境服务器配置: CPU P4 2.4G 内存 2G 硬盘 160G 声卡 耳机 话筒摄像头 网卡操作系统:Microsoft Windows Server 2003开发平台:Microsoft Visual Studio 20082 详见周礼:C#和.NET 3.0第一步M,清华大学出版社 2008年 Microsoft .NET Framework SDK v2.0开发语言:C#2.4需求分析本系统可以使多人同时在线进行,可进行文字会议聊天,可以清楚地浏览会议室中的成员,并且可以进行语音、视频会议聊天6 详见张明敏:网络多媒体技术与应用M,清华大学出版社 1996年。对于完成本语音视频会议系统,必须完成数据模块、网络模块以及语音编解码模块、视频解压缩模块。数据模块:模块需要处理会员参加成员的信息,这些信息将被保存在数据模块中,能实时地显示,方便地查看。网络模块:模块需要提供底层网络传输的技术支持,主要是数据报的传送,点对点通信,广播,组播,网络会议室中各成员之间的消息传递。语音编解码模块:由于语音直接传输会占用大量的带宽资源,极易造成网络拥塞,因此,在语音信号传送到网络之前必须进行编码压缩,而接收方收到经过编码的信号之后将其解码,从而还原为语音信号。在编解码的过程中音质会有一定的失真,但是在一定范围内这是可以接受的。视频解压缩模块:为了方便起见 ,数据的压缩程序中使用了一个 JPEG库文件 ,在编译的时候会将所有的代码静态连接程序 ,解压缩时 ,需要根据命令包中的压缩格式选用不同的解压方案。3 系统功能设计3.1文字会议模式会议参加者可自由进行文字交流发言,在文本框中输入想发言的信息再按回车键即可,会议中的其他成员可以很快地看到发言者所发送的信息,显示在留言板模块。会议参加者也可以清楚地浏览到会议室中其他现有的成员。3.2语音会议模式会议参加者可以单击“开始语音”按钮,按钮文本转换为“退出语音”,然后发言自己想说的话,会议室中的其他成员可以很快地听到发言者的语音发言,当语音发言结束后,发言者可以单击“退出语音”按钮,发言结束。可以多人同时语音发言,并且语音会议模式可以与文字会议模式同时进行。l 语音聊天1.语音采集:采集的作用就是从你的麦克风中获取数据,我采用DirectSound类来实现这个技术。实现的方法与录音方法一致,与录音不同的是,录音我们需要建立一个WAVE文件来存储这些采集到的数据,而在语音聊天中,则不需要存储,当采集到一些数据后,就立刻发送出去,因此也不需要开辟很大的空间来存放PCM数据。基本步骤:(1)设置PCM格式,设置相关的参数,如:采样频率、量化位数等。(2)建立采集用的设备对象,建立采集用的缓冲区对象。(3)设置缓冲区通知,设置通知被触发后的事件。通知是用于当缓冲区的读指针达到某预设位置时触发通知事件,提醒我们可以对某部分的数据进行传送了。(4)开始采集声音。(5)当通知被触发后,建立一个新的线程来处理数据传送的事件(建立一个新的线程,就是为了防止采集过程被中断)。2.语音编码:利用语音编码算法对采集到的话音进行压缩编码,进行编码的目的是为了减少网络带宽的压力。3.语音传输:将采集到的声音传输到网络上的其它主机,我采用Socket UDP方式来实现。大致步骤:(1)建立socket对象,在实例化这个对象的时候有一个参数是设置使用的协议,在本软件中,我采用的是UDP。因为语音延时问题,采用TCP在建立连接和维护连接中对时间和系统资源的开销较大,因此会有明显的时延发生,严重影响了实时性。(2)绑定本机的IP和端口,因为一个主机可能会有不止一个IP地址,如回发地址: 和局域网地址:192.168.#.#。为了增加可用性,我这里选择绑定到任何本机可用的IP地址(IPAddress.Any),而端口我们约定默认为8000。(3)启动监听线程,来监听网络。我采用异步的方式,以便获得更好的系统响应度。(4)数据的发送4.语音解码:如果所传输的语音进行过压缩编码,则必须对语音进行解码,否则无法得到原始语音数据。5.语音播放:当对方通过网络传输到本机时(如果需要解码则先执行4),进行实时播放。思路如下:(1)利用MemoryStream来代表这个接收缓冲区。(2)设置两个表示指针位置的字段:private int intPosWrite = 0;/内存流中写指针位移private int intPosPlay = 0;/内存流中播放指针位移(3)当接收到数据后,则移动写指针,移动的长度为接收到的数据长度。(4)利用一个字段表示通知大小:private int intNotifySize = 5000;(5)当写指针的位置达到通知大小,则执行播放操作,然后移动播放指针到刚才的通知的位置。如果当前写指针的位移与将要写入到缓冲区的数据大小相加后超过缓冲容量的,则进行摩尔运算,实现循环的效果。3.3视频会议模式会议发言者可以单击 “开始视频”按钮,按钮文本转换为“结束视频”,当发言结束时,会议成员可单击“结束视频”按钮,视频会议结束。但每次会议只能有一个人发起视频,其他会议成员不能同时再次发起。视频会议模式可以与文字、语音会议模式同时进行。下面给出系统实现点对多的视频传输模拟示意图,如图3-1所示:504图3-1 系统视频传输模拟试验环境8 详见倪强 朱光喜 王晓辉:“基于TCP/IP视频会议系统的模型与实现” J,计算机软件与应用 2000/2l 视频聊天包括视频采集、视频发送10 详见胡栋 朱秀昌:图像通信技术与应用M,东南大学出版社 1996年、视频转发、视频接收、视频控制的实现。程序共存在 3个线程:主线程 ,界面处理;工作线程 发 送 线 程: 全 局 函 数 U I NT GetScreen(LPVO I D param)创建 ,用于截屏、压缩、发送数据;工作线程 接收线程:全局函数 U I NT ReceiveThread(LPVO I D param)创建 ,用于接收数据、显示图片。MUL. EXE中建立了类 NGetScreenToBMP用于捕获桌面 ,在工作线程中 U I NT GetScreen (LPVO I D param)中 ,循环截取桌面 ,并通过一个 JPEG开发包 ,使用了 huffman或者 j peg编码截获来的 BMP格式的图片 ,然后将图片发送到网络中去.在视频接收的部分 ,通过工作线程 U I NT Re2ceiveThread (LPVO I D param)接收网络上发送来的数据 ,然后在 CNFullScreenDlg对话框中解压缩、显示。(1)视频采集:主要是由USB接口的摄像头采集,然后经由网卡、局域网实现本机的图像显示,下面给出系统视频传输硬件示意图,如图3-2所示:终端显示设备终端显示设备网卡局域网网卡USB总线视频图像USB总线视频图像图3-2系统视频传输硬件示意图5 详见沈祖冀:“TCP/IP协议和IP组播的视频传输” J,广东通信技术2001/4,P12-14(2)组播数据发送与接收:类 NMULSock将 W I N2SOCK2提供用于实现组播的代码包装为几个函数:设置 sock,使的实现数据回送 ,使得本机可以绑定端口用于接收本机发送的组播数据;发送数据;退出可以调用 ,也可以不调用;离开组播组;设定 TTL的值 ,本网组播时可以不设置 ,默认为 1,若需要在多重网络中组播 ,每需要多经过一个路由器 ,需要将TT L加 1,因为路由器会自动把经过的包的 TTL减1,当 TTL为 0时 ,自动被丢弃;加入组播组函数等。(3)截屏、显示部分:由 NGetScreenToBMP类提供截屏的区域;取得截屏后的图片大小;取得截屏后的数据;截屏等方法实现 ,显示由类 CNFullScreenDlg实现在主界面中创建了一个实例 (一个非模式对话框 ) ,在工作线程 (接收线程中 ,通过调用其中的一些函数来实现图片显示 ) 。(4)视频解压缩模块:为了方便起见 ,数据的压缩程序中使用了一个 JPEG库文件 ,在编译的时候会将所有的代码静态连接程序 ,解压缩时 ,需要根据命令包中的压缩格式选用不同的解压方案。(5)数据包截获部分:为了更好的观察、测试、调试组播网络的建立过程 ,在 WI NPCAP开发包基础上实现了一个数据包捕获程序. 在类 Sniffer中 ,包装了与 winpcap交互的过程 ,如:取得网卡设备列表、 打开网卡、 暂停捕获、 关闭网卡等操作。要想在UDP组播协议下实现视频传输,前提是必须先加入一个组播组,经路由器传输到达视频接收用户终端,具体流程如图3-3所示:组播初始视频发送路由器第一级视频转发.视频接收用户终端图3-3 UDP组播实现视频传输示意图4 系统功能设计技术与原理组播是一种数据包传输方式,当有多台主机同时成为一个数据包的接受者时,出于对带宽和CPU负担的考虑,组播成为了一种最佳选择。组播应用D类IP地址(-55),但不是说从每个组播的组接收数据的计算机要具有D类IP地址。组播的组需要D类IP地址来标示。D类IP地址分成几断,某些具有特殊用途。组播也叫多播,多播采用推进技术(浏览网页属于拉拔技术,同样属于推进技术的有发送Email服务)。如果用户加入某个多播组,那么,它就能够收到发往这个组的数据。组播通过把-55的D类地址作为目的地址,有一台源主机发出目的地址是以上范围组播地址的报文,在网络中,如果有其他主机对于这个组的报文有兴趣的,可以申请加入这个组,并可以接受这个组,而其他不是这个组的成员是无法接受到这个组的报文的。组播有两种应用模式。一种是一个组中的任意一个用户发信息,其余用户都能够接收,各个用户的地位是等价的。另一种是只一个用户发信息,其余用户只负责接收信息。本次毕业设计应用的是第一种模式组播需要支持组播的硬件,支持组播的TCP/IP协议栈,支持组播的软件。加入离开一个组播组需要用到SGMP(Simple Group Management Protocol)协议。发送组播信息还有一个TTL(Time To Live)值,使组播信息不会穿过很多的子网边界,默认TTL值是1,即只对本地子网有效。组播编程需要UDP,有两个类支持组播网络编程Socket,和UDPClient.一台计算机要加入某一个组,接收发往某个组的信息。Socket类要调用SetSocketOption函数加入和离开某一个组。UDPClient类有直接的加入和离开某个组的成员函数可以调用。而向某个组发信息,则没有什么特殊的,只需把发送数据的目的地址设为组播地址就可以了。4.1UDP传输协议1.UDP:用户数据报协议U D P是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的I P数据报。这与面向流字符的协议不同,如T C P,应用程序产生的全体数据与真正发送的单个I P数据报可能没有什么联系。U D P数据报封装成一份I P数据报的格式RFC 768 Postel 1980 是U D P的正式规范。U D P不提供可靠性:它把应用程序传给I P层的数据发送出去,但是并不保证它们能到达目的地。应用程序必须关心I P数据报的长度。如果它超过网络的M T U,那么就要对I P数据报进行分片。如果需要,源端到目的端之间的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。2.UDP首部16位源端口号.16位目的端口号 .16位UDP长度.16位UDP检验和U D P长度字段指的是U D P首部和U DP数据的字节长度。该字段的最小值为8字节(发送一份0字节的U D P数据报是O K)。这个U D P长度是有冗余的。I P数据报长度指的是数据报全长,因此U D P数据报长度是全长减去I P首部的长度(该值在首部长度字段中指定)。3.UDP校验和U D P检验和覆盖U D P首部和U D P数据。回想I P首部的检验和,它只覆盖I P的首部并不覆盖I P数据报中的任何数据。U D P和T C P在首部中都有覆盖它们首部和数据的检验和。U D P的检验和是可选的,而T C P的检验和是必需的。首先, U D P数据报的长度可以为奇数字节,但是检验和算法是把若干个16 bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了检验和的计算(也就是说,可能增加的填充字节不被传送)。其次, U D P数据报和T C P段都包含一个1 2字节长的伪首部,它是为了计算检验和而设置的。伪首部包含I P首部一些字段。其目的是让U D P两次检查数据是否已经正确到达目的地(例如,I P没有接受地址不是本主机的数据报,以及I P没有把应传给另一高层的数据报传给U D P)。4.最大UDP数据报长度理论上,IP数据报的最大长度是65535字节,这是由IP首部16比特总长度字段所限制的。去除20字节的IP首部和8个字节的UDP首部,UDP数据报中用户数据的最长长度为65507字节。但是,大多数实现所提供的长度比这个最大值小。我们将遇到两个限制因素。第一,应用程序可能会受到其程序接口的限制。Socket API提供了一个可供应用程序调用的函数,以设置接收和发送缓存的长度。对于UDP socket,这个长度与应用程序可以读写的最大U D P数据报的长度直接相关。现在的大部分系统都默认提供了可读写大于8192字节的U D P数据报(使用这个默认值是因为8192是NFS读写用户数据数的默认值)。第二个限制来自于TCP / IP的内核实现。可能存在一些实现特性(或差错),使I P数据报长。5.客户IP地址及端口号来自客户的是UDP数据报。IP首部包含源端和目的端IP地址, UDP首部包含了源端和目的端的UDP端口号。当一个应用程序接收到UDP数据报时,操作系统必须告诉它是谁发送了这份消息,即源I P地址和端口号。4.2组播的含义4.2.1硬件组播1含义硬件组播(multicasting)是一种多点投递的形式,它使用硬件技术,通过使用大量组播地址来通信。当某一组机器需要通信时,选择一个组播地址,并配置好相应的网络接口硬件,识别组播地址,从而收到该组播地址上分组的拷贝。2组播与广播、单播广播(broadcasting)是多点投递的最普遍的形式,它向每一个目的站投递一个分组的拷贝。它可以通过多个单次分组的投递完成,也可以通过单独的连接传递分组的拷贝,直到每个接收方均收到一个拷贝为止。在多数网络中,用户是通过把分组分送给一个特殊保留的地址即广播地址(broadcastaddress)来进行广播投递,它的主要缺点是会耗费大量的主机资源和网络资源。单播(unicasting)是指只有一个目的地的数据报传递。从投递目的地的数量而言,单播和广播均可看作是组播的一个子集。单播可以看作仅包括一台机器群组的组播;广播可以看作包含了所有机器群组的组播。但从数据报的投递方式而言,单播、广播和组播还是有较大的区别。4.2.2IP组播的基本概念1.含义IP组播(IPmulticasting)是对硬件组播的抽象,是对标准IP网络层协议的扩展。它通过使用特定的IP组播地址,按照最大投递的原则,将IP数据报传输到一个组播群组(multicastgroup)的主机集合。它的基本方法是:当某一个人向一组人发送数据时,它不必将数据向每一个人都发送数据,只需将数据发送到一个特定的预约的组地址,所有加入该组的人均可以收到这份数据。这样对发送者而言,数据只需发送一次就可以发送到所有接收者,大大减轻了网络的负载和发送者的负担。2.IP组播成员IP组播中各个成员可以不受地域的限制,分布于各个独立的物理网络上,其关系也是动态的,一台主机可以在任何时候加入或者退出某个群组,也可以是任意群组的成员,其成员关系决定了该主机是否接收发送给该群组的组播数据报;同时,不是某个群组的成员也可以向某个群组发送组播数据报,使之具有更大的灵活性。参与组播的主机可以分为三个级别:级别0:主机不能收、不能发IP组播数据报级别1:主机只能发、不能收IP组播数据报级别2:主机既能收、也能发IP组播数据报级别0的主机不受组播收发数据报的影响,唯一的例外是在某些类型的局域网,级别1或级别2的主机可能将组播数据报误送给级别0的主机,级别0的主机需要仔细检查所有到达的数据报的目的IP地址(主机对任何数据报均需这样),丢弃误投的数据报。级别1的主机可以分享部分基于组播的服务,比如资源定位、状态报告、发送IP组播数据报,但不能加入到任何主机组。一个主机仅需极少数代码就可以从级别0升级到级别1,即IP软件允许某个应用程序指定一个组播地址作为其目的IP地址,并将组播地址映射为相应网络的硬件组播地址。级别2的主机可以可以使用IP组播所有功能,除可以使用级别1主机所能使用的功能外,可以自由加入和离开主机组、可以发送IP组播数据报等。要实现此功能,它要求实现internet群组管理协议(internetgroupmanagementprotocol,简称IGMP)、IP扩展和主机的本地网络服务接口。3.IP组播地址(1)定义根据internetNIC关于IP地址的规定,IP地址共分为A-E共5类,其中A-C类目前应用的普通IP地址,E类地址保留为将来使用,D 类地址即为组播地址,其网络号为固定的1110(第03位),第431位定义了某一特殊的组播地址,范围为 55,共有228个约27亿个地址。IP组播地址仅能作为目的地址。它们不能作为数据报的源字段或者出现在源路由和路由记录选项中。(2)分类IP组播地址由internetNIC负责管理,和协议端口一样,有一部分是保留的,仅供特殊群组成员使用,不管有无成员,该地址均要保留,这部分地址称为知名(well-known)地址;其余地址则不一样,仅供临时使用,被称为临时组播群组(transientmulticastgroup),可以按需创建,成员可以动态调整,但在成员数目为0时撤销。4.组播的“根”组播从概念上来讲分为两部分:控制部分和数据部分。控制部分决定着组播的对象的组织方式。而数据部分决定了数据的传输方式。控制层有“有根”,“无根”两种情况。对于有根的控制层,存在着一个root和若干个leaf.root负责管理这个组播组,只有他能邀请一个leaf加入一个组播组(ATM就是有根控制的一个典型的例子)。对于无根的控制层,没有root,只有若干的leaf. 每一个leaf都能自己加入一个组播组(IP就是无根控制的典型例子)数据层也有“有根”,“无根”两种情况。对于有根数据层,从root发出的数据能到达每一个leaf,而从leaf发出的数据只能到达root.对于无根数据层,每一个leaf发出的数据能到达组播组中的每一个leaf(甚至包括他自己)。每一个leaf也能接受组播组里的任何数据包。5.IGMP协议IGMP(internet网关管理协议)是IP组播的基础.在IP协议出现以后,为了加入对组播的支持,IGMP产生了。IGMP所做的实际上就是告诉路由器,在这个路由器所在的子网内有人对发送到某一个组播组的数据感兴趣,这样当这个组播组的数据到达后面,路由器就不会抛弃它,而是把他转送给所有感兴趣的客户。假如不同子网内的A,B要进行组播通信,那么,位与A,B之间的所有路由器必须都要支持IGMP协议,否则A,B之间不能进行通信。当一个应用加入一个组播组后,就会向这个子网的所有路由器发送一个IGMP加入命令,告诉他子网内有人对发送到某一个组播组的数据感兴趣.路由器也会定时向子网内的所有终端发送一条查询消息,用于询问是否还有人对某个组播组的数据感兴趣。如果有的话,终端就会回应一条IGMP消息,路由器则继续转发这个组播组的数据。如果没有人回应这条消息,那么路由器就认为已经没有终端对这个组播组的数据感兴趣,就不会在转发关于这个组播组的数据了。在IGMP第二版中,一个终端推出组播组以后,会向路由器发送一个推出消息,路由器也会通过这个消息来判断是否还要继续转发关于这个组播组的数据了(IGMP第一版中没有这个功能)这些事情都是底层的系统做的,你只要坐享其成就好了6.IP组播的应用9 详见Beau Williamson:IP组播网络技术与开发M,电子工业出版社 2000年由于IP组播能有效减少网络和主机开销,较单播和广播有其独特优越性,因此,IP组播已经得到了广泛的应用,主要有几个方面:1、基于因特网的视频组播。这方面的应用很广泛,如实时视频会议系统、远程教学系统、远程演示系统和视频点播系统(VOD)等等。2、特别互联网工作组(Specialinternetgroup,简称SIG)。它是由世界各地的具有共同兴趣的人组成,可以包括体育、音乐、计算机软件、硬件等一切可以引起共同兴趣的东西。比较有名的有E-MAIL讨论组和ACM的技术讨论组。(1)网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一般网络用户不知道而已。例如,你在收发电子邮件、浏览网页时,必须与邮件服务器、Web服务器建立连接,此时使用的就是单播数据传输方式。(2)多播也叫组播,是一种多地址的广播,发送和接受端是一对多的关系,服务器只向特定的一组用户发送一个数据包,组中的用户可以共享这个数据包,组外的用户是无法接收到的,多播需要全网内的路由器支持多播,否则许多用户是收不到多播数据的,在广域网实现比较困难 。(3)广播也是一对多的关系,不同的是,广播把数据包的copy发给网络中所有用户,而有的用户此时并不需要数据包,这实际上将造成带宽资源的一定浪费,广播无法通过路由器,组播没有这个限制,只要加入组就能收到数据包,可以说融合了单播和广播的优点 。(4)ICMP主要用于网络设备和结点之间的控制和差错报告报文的传输。 从因特网的角度看,因特网是由收发数据报的主机和中转数据报的路由器组成。鉴于IP网络本身的不可靠性,ICMP的目的仅仅是向源发主机告知网络环境中出现的问题。ICMP主要支持路由器将数据报传输的结果信息反馈回源发主机。ICMP协议系统默认就安装了的,可以做相应设置防止ICMP攻击。利用UDP组播能在intarnet,internet上也数据报的形式进行数据的组播(在internet上进行组播,要求路由器支持IGMP(internet网关管理协议,这个协议是在IP出现以后,为了支持组播而出现的).相对于极度消耗网络带宽的广播来说(广播只能在intranet内广播),UDP组播有了很大的优化,只有终端加入到了一个广播组,UDP组播的数据才能被他接受到。UDP组播是采用的无连接,数据报的连接方式,所以是不可靠的.也就是数据能不能到达接受端和数据到达的顺序都是不能保证的.但是由于UDP不用保证数据的可靠性,所有数据的传送速度是很快的.4.3组播网络的体系结构 组播网络体系结构包括:组播的基本工作原理、实现组播的条件、组播的地址分配方案及与MAC地址映射、Internet组管理协议。 4.3.1组播的工作原理 组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播源把数据包发送到特定组播组,而只有属于该组播组的地址才能接收到数据包。简单地说,主机通过使用组管理协议加入野火所个组中,并且可以动态离开组,即成员关系常有变化,路由器跟踪这种关系并试图形成一条到达组播成员的无回路路径。组播路有些已用于得到正在使用的组播组的路径上那些路由器,以及到达这些组播组的最佳路径信息。一旦报文到达目标,该报文就有可能泛洪或转发到主机。三种传输方式比较如下:单播(Unicast)传输:在发送者和每一接收者之间需要单独的数据信道。如果一台主机同时给很少量的接收者传输数据,一般没有什么问题。但如果有大量主机希望获得数据包的同一份拷贝时却很难实现。这将导致发送者负担沉重、延迟长、网络拥塞。为保证一定的服务质量需增加硬件和带宽。 组播(Multicast)传输:它提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络。 广播(Broadcast)传输:是指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。广播意味着网络向子网主机都投递一份数据包,不论这些主机是否乐于接收该数据包。广播的使用范围非常小,只在本地子网内有效,因为路由器会隔离广播通信。广播传输增加非接收者的开销。 4.3.2组播路由协议 要想在一个实际网络中实现组播数据包的转发,必须在各个互连设备上运行可互操作的组播路由协议。组播路由协议可分为三类:密集模式协议(如DVMRP,PIM-DM)、稀疏模式协议(如PIM-SM,CBT)和链路状态协议(MOSPF)。1、距离向量组播路由协议(Distance Vector Multicast Routing Protocol:DVMRP) DVMRP由单播路由协议RIP扩展而来,两者都使用距离向量算法得到网络的拓扑信息,不同之处在于RIP根据路由表前向转发数据,而DVMRP则是基于RPF。 2、开放式组播最短路径优先协议(Multicast Open Shortest Path First:MOSPF) MOSPF是一种基于链路状态的路由协议,是对单播OSPF协议的扩展。 同OSPF类似,MOSPF定义了三种级别的路由: MOSPF区域内组播路由:用于了解各网段中的组播成员,构造(源网络S,组G)对的SPT; MOSPF区域间组播路由:用于汇总区域内成员关系,并在自治系统(AS)主干网(区域0)上发布组成员关系记录通告,实现区域间组播包的转发。MOSPF AS 间组播路由:用于跨AS的组播包转发。 区域内MOFPF利用了链路状态数据库,对单播OSPF数据格式进行扩充,定义了新的链路状态通告(Link State Advertisement:LSA),使得MOSPF路由器了解哪些组播组在哪些网络上。路由器使用Dijkstra算法构造(源网络S,组G)对的SPT。MOSPF与DVMRP相比,路由开销较小,链路利用率高,然而Dijkstra算法计算量很大,为了减少路由器的计算量,MOSPF执行一种按需计算方案,即只有当路由器收到组播源的第一个组播数据包后,才对(S,G)SPT计算,否则利用转发缓存(cache)中的(S,G)SPT。 MOSPF继承了OSPF对网络拓扑的变化响应速度快的优点,但拓扑变动使所有路由器的缓存失效重新计算SPT,因而消耗大量路由器CPU资源。这就决定了MOSPF不适合高动态性网络(组成员关系变化大、链路不稳定),而适用于网络连接状态比较稳定的环境。3、协议无关组播(Protocol Independent Multicast:PIM) PIM由IDMR(域间组播路由)工作组设计,PIM不依赖于某一特定单播路由协议,它可利用各种单播路由协议建立的单播路由表完成RPF检查功能,而不是维护一个分离的组播路由表实现组播转发。由于PIM无需收发组播路由更新,所以与其它组播协议相比,PIM开销降低了许多。PIM的设计出发点是在Internet范围内同时支持SPT和共享树,并使两者之间灵活转换,因而集中了它们的优点提高了组播效率。PIM定义了两种模式:密集模式(Dense-Mode)和稀疏模式(Sparse-Mode) (1)PIM-DM PIM-DM与DVMRP很相似,都属于密集模式协议,都采用了“扩散/剪枝”机制。同时,假定带宽不受限制,每个路由器都想接收组播数据包。主要不同之处在于DVMRP使用内建的组播路由协议,而PIM-DM采用RPF动态建立SPT。该模式适合于下述几种情况:高速网络;组播源和接收者比较靠近,发送者少,接收者多;组播数据流比较大且比较稳定。 (2)PIM-SM PIM-SM与基于“扩散/剪枝”模型的根本差别在于PIM-SM是基于显式加入模型,即接收者向RP发送加入消息,而路由器只在已加入某个组播组输出接口上转发那个组播组的数据包。PIM-SM采用共享树进行组播数据包转发。每一个组有一个汇合点(Rendezvous Point: RP),组播源沿最短路径向RP发送数据,再由RP 沿最短路径将数据发送到各个接收端。这一点类似于CBT,但PIM-SM不使用核的概念。PIM-SM主要优势之一是它不局限于通过共享树接收组播信息,还提供从共享树向SPT转换的机制。尽管从共享树向SPT转换减少了网络延迟以及在RP上可能出现的阻塞,但这种转换耗费了相当的路由器资源,所以它适用于有多对组播数据源和网络组数目较少的环境。 4、有核树组播路由协议(Core-Based Trees: CBT) CBT的基本目标是减少网络中路由器组播状态,以提供组播的可扩展性。为此,CBT被设计成稀疏模式(与PIM-SM相似)。CBT使用双向共享树,双向共享树以某个核心路由器为根,允许组播信息在两个方向流动。这一点与PIM-SM不同(PIM-SM中共享树是单向的,在RP与组播源之间使用SPT将组播数据转发到RP),所以CBT不能使用RPF检查,而使用IP包头的目标组地址作检查转发缓存。这就要求对CBT共享树的维护就需非常小心,以确保不会产生组播路由循环。 从路由器创建的组播状态的数量来看, CBT比支持SPT的协议效率高,在具有大量组播源和组的网络中,CBT能把组播状态优化到组的数量级。 CBT为每个组播组建立一个生成树,所有组播源使用同一棵组播树。CBT工作过程大体如下: 首先选择一个核,即网络中组播组的固定中心,来构造一棵CBT; 主机向这个核发送join命令; 所有中间路由器都接收到该命令,并把接收该命令的接口标记为属于这个组的树; 如果接收到命令的路由器已是树中一个成员,那么只要再标记一次该接口属于该组;如果路由器第一次收到join命令,那么它就向核的方向进一步转发该命令,路由器就需要为每个组保留一份状态信息; 当组播数据到达一个在CBT树上的组播路由器时,路由器组播数据到树的核。以保证数据能够发送到组的所有成员。 CBT将组播扩张限制在接收者范围内,即使第一个数据包也无需在全网扩散,但CBT导致核周围的流量集中,网络性能下降。所以某些版本的CBT支持多个核心以平衡负载。 4.3.3组播的实现在IP组播技术中有四个方面的问题:首先是发送给谁的问题、其次是接收方如何接收组播信息、第三是用户主机如何通知路由器对某个组不再感兴趣、第四是路由器如何转发组播信息。 实现IP组播的前提条件:实现IP组播传输,组播源和接收者以及两者之间的下层网络都必须支持组播。即主机的TCP/IP实现支持发送和接收IP组播;主机的网络接口支持组播;有一套用于加入、离开、查询的组管理协议,即IGMP(v1,v2);有一套IP地址分配策略,并能将第三层IP组播地址映射到第二层MAC地址;支持IP组播的应用软件;所有介于组播源和接收者之间的路由器、交换机均需支持组播;Cisco的路由器不仅支持DVMRP、PIM路由协议、IGMP组管理协议,而且支持Cisco专有Cisco组管理协议CGMP,对于不支持IP组播传输的中间路由器采用IP隧道(Tunneling)技术作为过渡方案。1、组播地址分配与MAC地址 在组播通信中,我们需要两种地址:一个IP组播地址和一个Ethernet组播地址。其中,IP组播地址标识一个组播组。由于所有IP数据包都封装在Ethernet帧中,所以还需要一个组播Ethernet地址。为使组播正常工作,主机应能同时接收单播和组播数据,这意味着主机需要多个IP和Ethernet地址。IP地址方案专门为组播划出一个地址范围,在IPv4中为D类地址,范围是到55,并将D类地址划分为局部链接组播地址、预留组播地址、管理权限组播地址。 局部链接地址:55,用于局域网,路由器不转发属于此范围的IP包; 预留组播地址:55,用于全球范

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论