专利名称:丢包检测方法、系统和媒体客户端的制作方法
技术领域:
本发明涉及流媒体技术,尤其涉及一种丢包检测方法、系统和媒体客户端。
背景技术:
随着宽带接入的普及,流媒体技术的应用越来越广泛,而媒体码流在IP网络上传输,不可避免地会遭遇到丢包,从而导致画面花屏停顿和声音断续变调,严重影响媒体播放质量。在工程实践中,经常采用丢包重传技术来应对网络丢包问题,按具体实现的层次划分,现有的丢包重传技术可大致划分为两种类型传输层实现和应用层实现。其中,传输层实现丢包重传采用传输控制协议(TCP)等有连接协议传输媒体数据,由传输层协议本身对丢包进行检测,在丢包时自动发起重传。这种方式利用的是传输层自带的丢包重传功能,实现成本较低,但此类协议资源开销较大,而且丢包重传功能不受控制,在网络拥塞时容易陷入“拥塞-丢包-重传-更拥塞”的恶性循环。应用层实现丢包重传采用用户数据报协议(UDP)等无连接协议传输媒体数据,由应用层对丢包进行检测并发起重传请求。这种方式需要应用层序参与,实现比较复杂,但传输层协议的资源开销比较低,而且重传请求的发送和响应都由应用层实现,可以根据网络情况灵活调整相关策略,比较适合流媒体业务。目前业界的趋势是采用UDP协议承载媒体数据,与此对应的则是应用层丢包重传技术日趋成熟,这些技术大同小异,基本思想都是发送方为每个媒体(数据)包加上连续递增的包序号,接收方检测收到的媒体包序号是否连续,如果发现断续就认为发生了丢包,并将丢失包的序号通过独立的通道反馈给发送方,发送方收到反馈信息后,就将相应的媒体包重新发送给接收方。对上述方案稍加分析就可以发现丢包被检测到的前提条件是其前面的包没有完全丢失,也就是说比丢失媒体包序号小的所有媒体包中至少要有一个已经被接收方成功接收。这就意味着如果流媒体服务器最初发送的第一个媒体包丢失或从第一个媒体包开始的连续若干个包全部丢失的话,接收方是检测不到的;即丢包重传无法覆盖会话的全过程。申请号CNlOl 123584名为《一种测量IP链路丢包情况的方法及设备》的专利公开了一种测量IP层丢包的方法单独发送定界包,定界包中包含一段时间内发送的IP包的数量信息,接收端根据这个信息,再结合期间接收到的包数量,即可正确计算出链路上的丢包情况。IP包的传输存在乱序现象,而该发明中的定界包仅包含发送端发送的包总数信息,缺乏与特定的某个包进行关联的信息,所以接收端虽然能够知道一段时间内丢失了多少包, 但无法精确获知这些丢包具体发生在哪两个IP包之间,也无法精确获知从第一个包到某个特定IP包为止发送端发送的包总数一这意味着其无法检测初始丢包。申请号为CN101616316,名为《一种视频数据的发送、接收装置及发送、接收方法》 的专利申请没有采用接收端进行丢包检测的常规方法,而是由接收端接收到的包的信息汇总反馈给发送端,发送端将其与自身发送的包的情况进行对比就能检测丢包,并进而执行丢包重传。理论上,发送端能够通过这种方式对初始丢包进行检测,但在IP网络中丢包毕竟是极少数事件,而该发明需要持续向发送端反馈信息,对网络带宽消耗较大;另外,将原本分布在各客户端的丢包检测工作集中在发送端,也必然会消耗发送端的处理能力。总之, 这种做法的部署成本相对较高,所以在实践中应用较少。另外,在请求评议(RFC)23^5定义的实时流传输协议(RTSP)中,服务器可以在 PLAY操作的响应消息中携带RTP-hfo头域,通过其中的seq子域将第一个RTP包的序号通知给客户端,客户端将收到的RTP包序号与该值比较,即可检测初始丢包。在工程实践中, 大部分时候都是采用两个单独的底层通道分别承载RTSP和RTP数据(典型配置是采用TCP 承载RTSP,采用UDP承载RTP),不能保证客户端及时获取到RTP-hfo头域的相关信息,可见,采用RTSP给出的这种方式检测初始丢包,无法保证及时性,效果欠佳。
发明内容
为了克服现有技术无法检测初始丢包或虽能检测但效果不好或成本较高不易推广的缺点,本发明提出一种丢包检测方法、系统和媒体客户端,以能够以低成本检测出初始丢包并进而实现丢包重传,并可在切换流媒体服务器时进行丢包重传。本发明提供了一种实现丢包检测方法,该方法包括接收端获取自身收到的数据包的包序号;接收端获取发送端发送的发包总数信息;以及接收端根据上述包序号和发包总数信息检测出丢失的数据包。优选地,上述丢包检测方法可具有如下特点上述接收端获取发送端发送的发包总数信息包括在会话过程中,当接收端判断出接收到的当前数据包为第一次收到的数据包时, 从携带上述当前数据包的IP包中提取出发包总数信息。优选地,上述丢包检测方法还可具有如下特点上述接收端根据上述包序号和发包总数信息检测出丢失的数据包包括上述接收端根据上述发包总数信息生成参考序号;将当前数据包的包序号作为当前序号;以及若当前序号等于参考序号加一,则确定未发生丢包,并将当前序号作为参考序号; 若当前序号不等于参考序号加一,则确定参考序号和当前序号之间的所有数据包丢失,并将当前序号作为参考序号。优选地,上述丢包检测方法还可具有如下特点在从携带上述当前数据包的IP包中提取出发包总数信息之前,上述方法还包括发送端生成发包总数信息,并将上述发包总数信息携带在包含数据包的IP包中发送给接收端。优选地,上述丢包检测方法还可具有如下特点在上述发送端生成发包总数信息,并将上述发包总数信息携带在包含数据包的IP 包中发送给接收端的处理中,发送端对发出的数据包进行计数,并将上述计数携带在上述IP包中发送给接收端;或发送端将首包序号携带在上述IP包中发送给接收端。
优选地,上述丢包检测方法还可具有如下特点在上述检测出参考序号和当前序号之间的所有数据包丢失之后,当存在多个发送端轮流发送IP包时,上述方法还包括若判断出数据包丢失发生在首次会话期间,则提取出当前IP包的源IP地址,并向对应的发送端发出重传请求;若判断出数据包丢失不是发生在首次会话期间,则提取当前IP包和前一 IP包的源IP地址;通过比较上述当前IP包和上述前一 IP包的源IP地址来判断二者是否来自同一发送端,若是,则向对应的发送端发出重传请求,若不是,则提取出当前数据包的首包序号,并以上述首包序号为界分别向前后两个会话的发送端发出重传请求。本发明提供了一种媒体客户端,上述媒体客户端包括序号获取模块,用于获取自身收到的数据包的包序号;信息获取模块,用于获取发送端发送的发包总数信息;以及检测模块,用于根据上述包序号和发包总数信息检测出丢失的数据包。优选地,上述媒体客户端可具有如下特点上述信息获取模块,进一步用于在会话过程中,当判断出接收到的当前数据包为第一次收到的数据包时,从携带上述当前数据包的IP包中提取出发包总数信息;上述检测模块,进一步用于根据所述发包总数信息生成参考序号;将当前数据包的包序号作为当前序号;以及若当前序号等于参考序号加一,则确定未发生丢包,并将当前序号作为参考序号;若当前序号不等于参考序号加一,则确定参考序号和当前序号之间的所有数据包丢失;并将当前序号作为参考序号。优选地,上述媒体客户端还可具有如下特点上述媒体客户端还包括重传请求模块,用于当存在多个媒体服务器轮流发送IP包时,若判断出数据包丢失发生在首次会话期间,则提取出当前IP包的源IP地址,并向对应的发送端发出重传请求;若判断出数据包丢失不是发生在首次会话期间,则提取当前IP包和前一 IP包的源IP 地址,通过比较上述当前IP包和上述前一 IP包的源IP地址来判断二者是否来自同一发送端,若是,则向对应的发送端发出重传请求,若不是,则提取出当前数据包的首包序号,并以上述首包序号为界分别向前后两个会话的发送端发出重传请求。本发明还提供了一种丢包检测系统,上述系统包括上述媒体客户端和媒体服务器,其中上述媒体服务器,用于生成发包总数信息,并将上述发包总数信息携带在包含数据包的IP包中发送给上述媒体客户端。本发明提供的丢包检测方法、系统和媒体客户端,能够以低成本且及时地检测出初始丢包并进而实现丢包重传。
图1为本发明实现丢包重传的流程图;图2为本发明丢包检测方法的流程图;图3为本发明的部署模型一的结构示意图4为本发明实施例一的RTP包头格式;图5为本发明RTP包头扩展字段通用格式示意图;图6为本发明实施例一的RTP包头扩展字段格式示意图;图7为本发明的部署模型二的结构示意图;图8为本发明实施例二的RTP包头扩展字段格式;图9为本发明实施例二的媒体包序号和首包序号字段取值;图10为本发明实施例二中接收端确定丢包所属传输层会话并发送重传请求的流程图;图11为本发明实施例二中接收端收包情况示意图;图12为本发明媒体服务器的结构示意图;图13为本发明丢包检测系统的结构示意图。
具体实施例方式下面结合附图对技术方案的实施作进一步地详细描述为便于后文表述,在此定义如下术语媒体服务器即流媒体服务器,相当于RFC 23 中的“媒体服务器(Media Server),,。应用层数据为应用层通过底层IP链路传送的数据,应用层数据是该次数据通讯的最终目的,为实现该目的而增加的其它辅助信息不属于应用层数据;例如,在流媒体应用中,媒体数据是应用层数据,而用于丢包检测和重传的信息则不属于应用层数据。发送端为生成应用层数据并对外发送的IP通信实体,在本文中大多数情况下,发送端都是一个流媒体服务器。发送端还要配合实现丢包重传功能。接收端为接收应用层数据的IP通讯实体,与发送端配合实现丢包重传功能。本文的发送端和接收端是根据应用层数据的流向来区分的,而不是某个具体IP包的流向。传输层会话为发生在特定发送端和接收端之间的一次在时间上连续发送和接收数据包的过程,发送端或接收端的变更都会产生一个新的传输层会话,故在单次应用层通讯过程中可能发生多次传输层会话。本文随后部分在不致引起混淆的场合,均将传输层会话简称为“会话”。初始阶段丢包指的是发送端在某次会话中发送的第一个包丢失或从第一个包开始的连续若干个包全部丢失的事件,可简称为“初始丢包”。本发明提供了一种丢包检测方法,上述方法包括步骤一、接收端获取自身收到的数据包的包序号;步骤二、接收端获取发送端发送的发包总数信息;以及步骤三、接收端根据上述包序号和发包总数信息检测出丢失的数据包。在步骤三之后,该方法还可以包括接收端向发送端发送重传请求,以便接收端重传丢失的数据包。如图1所示,为本发明实现丢包重传的流程图,该方法包括步骤101、发送端生成发包总数信息;“发包总数信息”并不对应特定的具体形式,其宗旨是能让接收端精确获知任何一
7个数据包被发送时发送端已经发送的包总数,包括但不限于如下形式1)发包计数发送端对发出的包进行计数,会话启动时对该计数进行初始化,此后单调递增。根据具体实现的不同,发包计数可以包含当前将要发送的数据包,也可以不包含当前将要发送的数据包。将发包计数作为发包总数信息,接收端可直接获得该信息。2)首包序号特指发送端发送的第一个包的序号,接收端将任一包的序号减去首包序号,也可获得对应的发包总数信息;步骤102、发送端发送发包总数信息;本实施例中采用带内方式发送发包总数信息,发送端直接将发包总数信息添加到携带有应用层数据的IP包中,一并发送给接收端,对此,也有很多种不同的方式,例如1)以发出的包计数作为包序号,那么接收端收到的包序号就是发包总数;2)在应用层数据包中增加一个专门的字段用来传输发包总数信息,此时要求应用层数据包另外设置序号字段;步骤103、接收端根据接收的发包总数信息进行丢包检测;接收端知晓自身收到的包总数,根据发送端提供的发包总数信息,就可计算出每个IP包被接收时的丢包总数,再结合收到的包序号,还能得到每个丢失包的准确序号;尽管发包总数信息的生成和发送方式不同,上述过程的具体实现方式也不同,但结果不会变化;如果发生初始阶段丢包,当接收端成功接收第一个IP包时,收包总数为1,而对应的发包总数则大于1,两者的差值即为初始丢包的总数量,将收到的这个包的序号递减即为各个丢失包的序号;由此可见,本发明支持对初始丢包的检测;步骤104、接收端发出重传请求;接收端根据上述丢包检测结果生成重传请求包,该重传请求包中携带有丢失包的序号信息,被接收端发送到发送端;步骤105、发送端响应该重传请求。发送端接收到重传请求后,根据序号信息将对应的丢失包重新发送给接收端。本发明的发送端将发包总数信息提供给接收端,接收端据此可精确获知任何一个数据包被发送时发送端发送的包总数,从而可对初始阶段丢包进行检测;由于采用带内方式携带发包总数信息,发包总数信息与应用层数据一同到达接收端,只要收到了包就能检测初始丢包,因而保证了及时性。如图2所示,为本发明丢包检测方法的流程图,该实施例是从接收端侧进行描述, 其中每个数据包都携带有包序号字段,为突出重点,该实施例没有考虑乱序包和重传包的处理,该丢包检测过程包括步骤201、等待直到接收到一个数据包;步骤202、判断是否是第一次收到数据包,如果是,则执行步骤203,否则,转向步骤 204 ;步骤203、提取发包总数信息,并据此生成参考序号;根据发包总数信息的具体形式不同,这一步骤的具体处理也有所不同若以发包计数作为发包总数信息,则将当前包(即接收到的第一个包)的序号减去对应的发包计数(如果发送端生成发包计数时未包含当前包,则需要在此基础上再减去1),即为参考序号;若以首包序号作为发包总数信息,将首包序号减去1即可获得参考序号;步骤204、提取当前包的序号作为当前序号;步骤205、判断当前序号是否等于参考序号+1,若是,则转向步骤207,否则,执行步骤206 ;步骤206、当前收到的包和前一个收到包的序号不连续,将中间空缺序号对应的包视为已经丢失,发出重传请求;步骤207、将当前序号作为参考序号加以保存;步骤208、判断媒体会话是否结束,若未结束,则转向步骤201,否则,结束。在上述步骤101中,接收端主要使用发包总数信息来进行丢包检测,而图2中使用由发包总数信息导出的参考序号来进行丢包检测,应视为本发明技术方案的一种等价形式。可见,该实施例可通过发包总数信息来确定参考序号并用于对该包本身的丢包检测,即实现了对初始阶段丢包的检测。如图3所示,为本发明的部署模型一的结构示意图,在该实施例中,媒体服务器31 为媒体客户端32提供单播流媒体服务,两者之间建立一个信令通道33,媒体服务器31通过RTP媒体通道34向媒体客户端32发送媒体包,媒体客户端32检测到丢包后,通过重传请求通道35发送重传请求。在实践中,信令通道33和重传请求通道35可采用RTSP或实时传输控制协议 (RTCP),也可以采用任何基于TCP或UDP的类似协议,信令通道33也可同时充当重传请求通道35,此时两个信道在物理上合并为一个信道。该实施例采用RTP协议承载应用层数据,需要对RTP通道34上的RTP包格式进行扩展。如图4所示,为本发明实施例一的RTP包头格式,该RTP包头格式由RFC 3550规定, 字段X为扩展字段标志,X = 0表示该RTP包头没有扩展字段,X = 1表示该RTP包头存在扩展字段,在本实施例中,X字段取值为1 ;RTP包头其余字段的含义可参考RFC 3550。如图5所示,是RFC 3550为RTP包头扩展字段给出的通用格式,当RTP包头中的扩展字段标志为1时,在标准RTP包头的尾部紧跟的是扩展字段,各字段含义如下由应用决定(defined by profile)的取值由具体的应用决定,RFC 3550不做规定;扩展字段的长度(length)以32比特为单位,不包括length字段本身所在的32 比特;由于length字段以32比特为单位,具体的扩展头部(header extension)长度必须为32比特的整数倍。根据图4和图5的定义确定了用于传输发包总数信息的RTP包头扩展字段格式, 该RTP包头扩展字段格式可参见图6,其中幻数(magic number)是符合图5规定的扩展字段格式,取值为16进制数 0x12345678 ;length取值为1,表示该字段后有32比特的扩展内容;发包计数(packet number),表示发送端从会话开始以来包括该RTP包在内发送的数据包总数。流媒体服务器31作为发送端,按照图4至图6的格式输出携带发包计数的RTP包, 流媒体客户端32作为接收端执行图2所示的流程当收到第一个RTP包后,将序号减去发包计数即可对参考序号赋初值,从而实现对包括初始丢包在内的全部丢包事件的检测,并在检测到丢包时发起重传请求。流媒体服务器31则响应重传请求,与流媒体客户端32配合实现丢包重传。如图7所示,为本发明的部署模型二的结构示意图,其中,控制模块71控制多个流媒体服务器72,控制模块71和各流媒体服务器72之间建立控制信道73用于控制信息的通讯。控制模块71在逻辑上独立,但可与某个流媒体服务器72合并部署。控制模块71、流媒体服务器72和控制信道73 —起构成了一个虚拟的媒体服务器74。媒体客户端75与控制模块71之间建立信令通道76,控制模块71则通过控制信道 73控制各个流媒体服务器72,轮流通过媒体通道77向媒体客户端75发送RTP格式的媒体码流。同一时间仅有一个流媒体服务器72在发送码流,在发送时间上相邻的两个流媒体服务器72发出的码流RTP包序号保持连续。媒体客户端75检测到丢包后,通过重传请求通道78向媒体服务器72发出重传请求。该实施例采用RTP协议承载应用层数据,需要对媒体通道77上的RTP包进行扩展,在此依然遵循RFC 3550的规定来扩展RTP包。如图8所示,为本发明实施例二的RTP 包头扩展字段格式,其中首包序号(first sequence number)表示第一个媒体包的序号,Length表示长度, 首包序号的长度为零;具体地,每切换一次,负责发送码流的媒体服务器72和新开始发包的媒体服务器都要将本次发送的所有RTP包中的该字段设置为本次发送的第一个媒体包的序号。如图9所示,为本发明实施例二的媒体包序号和首包序号字段取值,其中91、92、93和94代表流媒体服务器_A、流媒体服务器-B、流媒体服务器-C直到流媒体服务器-X的一系列参与轮流发包的媒体服务器,对应于图7中的流媒体服务器72。下方一系列小方块95代表各流媒体服务器发出的RTP包,每个RTP包内有两个数字,上面的数字为RTP序号,而下面的数字则为首包序号。以包96为例,其包序号为152,而首包序号为151。根据图9中给出的各RTP包序号分析可知各RTP包在时间上的先后顺序是先从上到下再从左到右。在图9中,同一个流媒体服务器发出的媒体包在垂直方向是对齐的(为便于观察, 图中用了双点划线区分)。可见,每次当用于发包的媒体服务器即发送端发生切换,RTP包的首包序号字段取值也随之发生变化——被设置为该媒体服务器此次发送的第一个RTP包的序号。由于采用多个媒体服务器轮流发包,故实施例二中的一次媒体服务将由多个传输层会话组成,对于图9来说,以RTP序号范围来区分,序号分别属于[1,100]、[101,150]、 [151,280], [501,650], [651,701], [702,800]这些闭区间范围内的包各自构成一次会话。 该实施例不但可检测初始丢包,还能准确确定丢包所属的传输层会话,从而可向相应的媒体服务器发出重传请求。如图10所示,为本发明实施例二中接收端确定丢包所属传输层会话并发送重传请求的流程图,这里给出的是接收端发现丢包之后的处理机制,为突出重点,图中没有考虑乱序包和重传包的处理,该过程包括步骤1001、判断当前丢包是否处于整个媒体服务过程中的第一次会话,若是,则执行步骤1002,否则,转向步骤1003 ;由于第一次会话期间的丢包不会牵涉到多个发送端,故增加这个判断步骤;步骤1002、丢包发生在第一次会话期间,取出当前包的源IP地址,向对应的发送端发出重传请求,结束;步骤1003、从前后两个包之间取出源IP地址,从而识别出对应的发送端;这里的“前一个包”指的是接收端上一次收到的包,“后一个包”则为当前收到的包,当丢包发生时,这两个包的RTP序号不连续;步骤1004、通过比较前后两个包的源IP地址来判断它们是否来自同一个发送端, 若是,则执行步骤1005,否则转向步骤1006 ;步骤1005、向发送端发出重传请求;结束;当前后两个包属于同一个会话,且都来自当前的发送端时,则向该发送端发出重传请求;步骤1006、取出当前包的首包序号字段,以此为界分别向前后两个会话的发送端发出重传请求;结束。当前后两个包来自不同的发送端时,则属于两个不同会话,则需取出当前包的首包序号字段,以此为界分别向前后两个会话的发送端发出重传请求。如图11所示,为本发明实施例二中接收端收包情况示意图,在描述接收端收包过程中对图10中的步骤1006给出了进一步说明前一媒体服务器111和当前媒体服务器112分别表示前后两个发送端,产生了两
个传输层会话,对应的RTP包集合分别为113和114,113各RTP包的序号分别为SNpA.....
SNpB,. . .、SNpC,首包序号均为 FSNP,114 各 RTP 包的序号分别为 SNeA、. . .、SNcB,. . .、SNcC, 首包序号均为FSNcA,显然,FSNc = SNcA = SNpC+10发送端111和112发送的RTP包集合113和114经过网络传输,发送端接收时可能会发生三种不同的丢包现象,对应图11中的115、116和117(实线边框表示该包被成功接收,虚线边框表示该包在传输过程中丢失)。其中,115为接收端收到序号在SNpC之前(含)和SNcB(含)之后的所有包,序号在SNpC和SNcB之间包括SNcA在内的包全部丢失;116为接收端收到序号在SNpB之前(含)和SNcA(含)之后的所有包,序号在SNpB 和SNcA之间包括SNpC在内的包全部丢失;117为接收端收到序号在SNpB之前(含)和SNcB(含)之后的所有包,序号在SNpB 和SNcB之间包括SNpC和SNcA在内的包全部丢失。表1给出了图10中步骤1006对应115、116和117三种丢包情况的关键变量取值表1不同丢包情况下的关键变量取值表
权利要求
1.一种丢包检测方法,其特征在于,所述方法包括 接收端获取自身收到的数据包的包序号;接收端获取发送端发送的发包总数信息;以及接收端根据所述包序号和发包总数信息检测出丢失的数据包。
2.根据权利要求1所述的丢包检测方法,其特征在于,所述接收端获取发送端发送的发包总数信息包括在会话过程中,当接收端判断出接收到的当前数据包为第一次收到的数据包时,从携带所述当前数据包的IP包中提取出发包总数信息。
3.根据权利要求1所述的丢包检测方法,其特征在于,所述接收端根据所述包序号和发包总数信息检测出丢失的数据包包括所述接收端根据所述发包总数信息生成参考序号; 将当前数据包的包序号作为当前序号;以及若当前序号等于参考序号加一,则确定未发生丢包,并将当前序号作为参考序号;若当前序号不等于参考序号加一,则确定参考序号和当前序号之间的所有数据包丢失,并将当前序号作为新的参考序号。
4.根据权利要求2所述的丢包检测方法,其特征在于,在所述接收端从携带所述当前数据包的IP包中提取出发包总数信息之前,所述方法还包括发送端生成发包总数信息,并将所述发包总数信息携带在包含数据包的IP包中发送给接收端。
5.根据权利要求4所述的丢包检测方法,其特征在于,在所述发送端生成发包总数信息,并将所述发包总数信息携带在包含数据包的IP包中发送给接收端的处理中,发送端对发出的数据包进行计数,并将所述计数携带在所述IP包中发送给接收端;或发送端将首包序号携带在所述IP包中发送给接收端。
6.根据权利要求3-5任一权利要求所述的丢包检测方法,其特征在于,在所述检测出参考序号和当前序号之间的所有数据包丢失之后,如果存在多个发送端发送IP包,则所述方法还包括若判断出数据包丢失发生在首次会话期间,则提取出当前IP包的源IP地址,并向对应的发送端发出重传请求;若判断出数据包丢失不是发生在首次会话期间,则提取当前IP包和前一 IP包的源IP 地址;通过比较所述当前IP包和所述前一 IP包的源IP地址来判断二者是否来自同一发送端,若是,则向对应的发送端发出重传请求,若不是,则提取出当前数据包的首包序号,并以所述首包序号为界分别向前后两个会话的发送端发出重传请求。
7.一种媒体客户端,其特征在于,所述媒体客户端包括 序号获取模块,用于获取自身收到的数据包的包序号; 信息获取模块,用于获取发送端发送的发包总数信息;以及检测模块,用于根据所述包序号和发包总数信息检测出丢失的数据包。
8.根据权利要求7所述的媒体客户端,其特征在于所述信息获取模块,进一步用于在会话过程中,当判断出接收到的当前数据包为第一次收到的数据包时,从携带所述当前数据包的IP包中提取出发包总数信息;所述检测模块,进一步用于根据所述发包总数信息生成参考序号;将当前数据包的包序号作为当前序号;以及若当前序号等于参考序号加一,则确定未发生丢包,并将当前序号作为参考序号;若当前序号不等于参考序号加一,则确定参考序号和当前序号之间的所有数据包丢失,并将当前序号作为参考序号。
9.根据权利要求8所述的媒体客户端,其特征在于,所述媒体客户端还包括重传请求模块,用于当存在多个媒体服务器轮流发送IP包时,若判断出数据包丢失发生在首次会话期间,则提取出当前IP包的源IP地址,并向对应的发送端发出重传请求;若判断出数据包丢失不是发生在首次会话期间,则提取当前IP包和前一 IP包的源IP地址, 通过比较所述当前IP包和所述前一 IP包的源IP地址来判断二者是否来自同一发送端,若是,则向对应的发送端发出重传请求,若不是,则提取出当前数据包的首包序号,并以所述首包序号为界分别向前后两个会话的发送端发出重传请求。
10.一种包括权利要求7-9任一权利要求所述的媒体客户端的丢包检测系统,其特征在于,所述系统还包括媒体服务器,其中所述媒体服务器,用于生成发包总数信息,并将所述发包总数信息携带在包含数据包的IP包中发送给所述媒体客户端。
全文摘要
本发明提供了一种丢包检测方法、系统和媒体客户端,其中,该丢包检测方法包括接收端获取自身收到的数据包的包序号;接收端获取发送端发送的发包总数信息;以及接收端根据上述包序号和发包总数信息检测出丢失的数据包。本发明提供的丢包检测方法、系统和媒体客户端,能够以低成本且及时地检测出初始丢包并进而实现丢包重传,并可在切换流媒体服务器时进行丢包重传。
文档编号H04L1/18GK102546081SQ201010599130
公开日2012年7月4日 申请日期2010年12月21日 优先权日2010年12月21日
发明者朱晓斌 申请人:中兴通讯股份有限公司