CN102761457B - 网络信令监测方法及设备 - Google Patents
网络信令监测方法及设备 Download PDFInfo
- Publication number
- CN102761457B CN102761457B CN201110111444.9A CN201110111444A CN102761457B CN 102761457 B CN102761457 B CN 102761457B CN 201110111444 A CN201110111444 A CN 201110111444A CN 102761457 B CN102761457 B CN 102761457B
- Authority
- CN
- China
- Prior art keywords
- pdu
- tcp
- data content
- segment data
- buffer memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Communication Control (AREA)
Abstract
本发明提供了网络信令监测方法及设备,其中,该方法包括:缓存传输控制协议TCP段数据内容;用包数据单元PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU;对确定出的PDU进行解码分析。本发明方案能够提高网络信令监测的准确性。
Description
技术领域
本发明涉及网络通信技术,尤其涉及网络信令监测方法及设备。
背景技术
IP多媒体子系统(IMS,IPMultimediaSubsystem)是下一代网络的核心技术,IMS域中所涉及到的应用层协议大部分都由传输控制协议(TCP,TransmissionControlProtocol)承载。
TCP是一个面向连接的传输层协议,虽然TCP不属于国际标准化组织(ISO,InternationalOrganizationforStandardization)制定的协议集,但由于其在商业界和工业界的成功应用,已成为事实上的网络标准,广泛应用于各种网络主机间的通信中。
通过网络信令监测方式对IMS各个接口的TCP流进行分析,以对IMS网络进行维护,是一种重要的手段。进行网络信令监测时:从IMS各个接口获取TCP流,从TCP流种界定出一个个完整的包数据单元(PDU,PacketDataUnit),对界定出的PDU进行解码分析。
对TCP流进行网络信令分析,须基于PDU进行解码分析,因此,需先从TCP流中界定出PDU。但是,由于TCP是一种面向字节流的协议,数据是以字节流进行传输的,没有消息边界,这给网络信令监测带来了不少困难。
为了从TCP流中确定出PDU,目前通常采用下述三种方法:
(1)进行网络信令监测时,获取的TCP流为一个一个的TCP包,也称为TCP段;TCP段包括TCP头和TCP段数据内容,每个TCP段承载的上层协议消息即TCP段数据内容部分,该方法假定每个TCP段数据内容上承载的上层协议消息都是完整的,也就是将每个TCP段数据内容视为一个PDU。这种做法虽然简单快捷,但常出现PDU界定错误的情况。
该方法中没有涉及到定界技术,很难准确地界定出PDU,从而导致网络信令监测的准确性较低。
(2)本方法将PDU的定界过程和解码分析过程放在一个分析模块中实现。TCP上的承载的协议数据都送往该模块,该模块进行TCP流分析,跟踪TCP流的建立过程,跟踪到连接建立成功消息,便可将该连接建立成功消息后数据内容中的第一个字节界定为PDU的起始点,然后将数据流缓存起来,根据ProtoA协议的规范,找出一个ProtoA的PDU的结束位置,ProtoA为TCP上承载的需要进行信令监测的上层协议,建立成功消息位于TCP头中;然后,再以当前PDU的结束位置作为下一个PDU的开始点,并根据规范找出下一个PDU的结束点,若缓存的数据不够长,则继续接收下一个TCP段,获取其数据内容,如此下去便可逐个界定出各PDU。
该方法引入了PDU界定技术,但只适合TCP连接是短连接或者能监测到TCP连接建立初始阶段的情况。对于TCP短连接的情况,如果没有监测到某个短连接的初始阶段,至多丢弃这个短连接中所传递的PDU(通常一个短连接中的PDU数量不多),待到下一个短连接的开始便可界定出PDU;虽然如此,该方法还是丢弃了一些本可定界出来的PDU。而对于TCP长连接或不能监测到TCP连接建立初始阶段的情况,一旦错过了连接建立初始阶段的TCP段,就无法定界开始点,从而无法准确确定出PDU。可见,方法二具有局限性,其准确性不高,也导致了网络信令监测的准确性较低。
(3)本方法把PDU的定界过程和解码分析过程放在一个分析模块中实现。该方法以接收到的TCP段作为判定单位,分析每个收到的TCP段,根据ProtoA的协议规范,判断当前TCP段数据内容开始部分的特征是否恰好符合ProtoA的PDU的特征,如果是,则以当前TCP段数据内容作为界定的开始,从而将当前TCP段数据内容及后续的各TCP段数据内容分别界定成一个PDU;如果不是,则忽略当前TCP段,接收下一个TCP段,继续上述分析,直到找到符合ProtoAPDU特征的TCP段为止。
为了适应更广泛的范围,该方法以TCP段作为判定粒度进行PDU界定,但该方法过于粗糙;因为获取的TCP段数据内容的开始部分很少有刚好是PDU开始部分的情况,并且,即使找到某个TCP段数据内容的开始部分正好是PDU的开始部分,也会丢掉不少TCP段,丢失的TCP段将影响网络信令监测的准确性。
发明内容
本发明提供了一种网络信令监测方法,该方法能够提高网络信令监测的准确性。
本发明提供了一种网络信令监测设备,该设备能够
一种网络信令监测方法,该方法包括:
缓存传输控制协议TCP段数据内容;
用包数据单元PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU;
对确定出的PDU进行解码分析。
一种网络信令监测设备,该设备包括界定模块和主分析模块;
所述界定模块,用于缓存TCP段数据内容,用PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU,传送给所述主分析模块;
所述主分析模块,用于对确定出的PDU进行解码分析。
从上述方案可以看出,本发明用PDU特征逐字节去匹配缓存的TCP段数据内容,细化了判定粒度,如果与TCP段数据内容中的部分字节匹配上,便可界定出PDU的起始点,进而确定出PDU,使PDU界定更加准确,从而提高了网络信令监测的准确性;并且,采用本发明方案,因未匹配上而丢失的数据较少,进一步提高了网络信令监测准确性。
附图说明
图1为本发明网络信令监测方法的示意性流程图;
图2为本发明网络信令监测设备的结构示意图;
图3为本发明网络信令监测方法的流程图实例。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
为了描述方面,同样地,将基于TCP承载的当前被分析的上层协议用ProtoA表示。本发明基于ProtoAPDU结构特点,用ProtoAPDU特征对TCP段数据内容逐字节进行匹配,细化了判定粒度。参见图1,为本发明网络信令监测方法的示意性流程图,该方法包括以下步骤:
步骤101,缓存TCP段数据内容。
接收待分析的TCP段后,可直接缓存TCP段数据内容;也可以跟踪TCP流的建立过程,先监测该TCP段中是否包含连接建立成功消息,具体地:判断接收的TCP段中是否包含连接建立成功消息,如果是,如果有,则将该连接建立完成消息后数据内容中的第一个字节界定为PDU起始点;如果没有,则执行所述缓存TCP段数据内容的步骤。
步骤102,用PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU。
基于ProtoAPDU结构特点,将PDU中比较特殊的部分,尤其是开头部分或结尾部分等作为PDU特征;PDU特征例如为:位于PDU起始点的头部特殊标识、位于PDU中指定位置的版本信息字段、长度字段等。
一般地,ProtoAPDU的结构中都有一些显著的头部特殊标识,该头部特殊标识在PDU的其它部分不会出现,将头部特殊标识作为PDU特征,则可大大提高PDU判定的准确性。以ProtoA是会话初始化协议(SIP,SessionInitiationProtocol)为例,其PDU以Invite、200OK等字符作为开始,只要监测到这些字符,便可将这些字符作为PDU的起始点,而PDU的长度是已知的,进而便可确定出PDU的结束点,进而确定出一个完整的PDU。
版本信息字段、长度字段也是ProtoAPDU结构中一些显著的特殊标识,位于PDU中的指定位置,若以版本信息字段或长度字段作为PDU特征,监测到缓存的TCP段数据内容中包含版本信息字段或长度字段,根据其在PDU中所处的位置便可确定出PDU的起始点,确定出起始点之后,再根据PDU的长度确定出PDU的结束点,进而确定出一个完整的PDU。
用于匹配判定的PDU特征可以是一个,为了提高准确性,PDU特征也可以是两个以上。
同样以ProtoA是SIP为例进行说明,对SIPPDU进行结构分析后获知:其PDU的开始部分为:INVITE、ACK、OPTIONS、BYE、CANCEL或REGISTER等字符,跟一个空格符,再跟版本信息;或者,其PDU的开始部分为:版本信息接一个空格,再跟3个数字表示的状态码。因此,可以将上述的两个开始部分作为SIPPDU的特征,对TCP段数据内容进行判定时,只要与其中一个特征匹配,便可将相应的字节界定为PDU的起始点,进而确定出PDU。
用ProtoAPDU特征去匹配缓存的TCP段数据内容中的第一个字节,如果匹配成功,则可以界定出PDU的起始点,确定出第一个PDU,后续PDU便可相应定界出来,这样,被监测的TCP流就被定位成功;如果没有匹配成功,则用ProtoAPDU特征去匹配第二个字节,若仍匹配未成功,则用ProtoAPDU特征去匹配下一字节,以此类推,直到匹配成功为止。
本步骤中,也可以待缓存的TCP段数据内容的数据长度达到设定长度时,才触发匹配判定,具体地:判断缓存的TCP段数据内容的数据长度是否达到设定长度,如果是,则执行所述用PDU特征逐字节去匹配缓存的TCP段数据内容的步骤。所述设定长度可根据需要设置,一般地,可将设定长度设置为ProtoAPDU的2倍,因为ProtoAPDU2倍长度的TCP流中通常包含至少一个完整的PDU。
从缓存的TCP段数据内容中的第一个字节开始去匹配,可能碰巧成功,但接下来的剩余数据又可能匹配不上,这时通常出现了误判;为了防止误判,也可以将设定长度设置为更大的值,以足够容纳两个以上完整的PDU,比如将其设置为ProtoAPDU的5倍;这样,匹配成功一次后,在此基础上继续匹配后续的数据,看是否也能匹配成功,一般地,如果接连两次匹配成功后再界定PDU的起始点,将大大减小误判的可能性。
步骤103,对确定出的PDU进行解码分析。
参见图2,为本发明网络信令监测设备的结构示意图,其包括界定模块和主分析模块;
所述界定模块,用于缓存TCP段数据内容,用PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU,传送给所述主分析模块;
所述主分析模块,用于对确定出的PDU进行解码分析。
可选地,所述界定模块包括缓存区和界定子单元;
所述缓存区,用于缓存TCP段数据内容;
所述界定子单元,用PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU,传送给所述主分析模块。
可选地,所述界定模块还包括连接建立判定子单元,用于判断接收的TCP段中是否包含连接建立成功消息,如果是,则将该连接建立完成消息后数据内容中的第一个字节界定为PDU起始点,确定出PDU,传送给所述主分析模块;否则,将接收的TCP传送到缓存区。
可选地,所述缓存区中还包括长度判定子单元,用于判断缓存的TCP段数据内容的数据长度是否达到设定长度,如果是,则向所述界定子单元发送启动指令;所述界定子单元接收所述启动指令后,用PDU特征逐字节去匹配缓存的TCP段数据内容。
这里将网络信令监测设备分成界定模块和主分析模块两部分,而不是像现有技术都在主分析模块完成网络信令监测。首先是因为进行PDU定界的工作逻辑本身就比较复杂,涉及到TCP流跟踪、缓冲区管理、PDU定界、PDU确定提交等,PDU确定提交也就是,将缓冲区里的若干连续字节合在一起形成PDU提交给主分析模块;而基于完整PDU的解码分析工作也有可能很复杂,其复杂度依业务分析功能需求而定;这两类工作分开在不同的模块中逻辑会更清晰。其次,是因为ProtoA协议通常也可以由其他承载协议承载,如UDP等;在基于PDU的前提下,无论哪种承载,其主体分析逻辑,即PDU界定的工作逻辑几乎是一样的,将PDU界定与解码分析区分开来,可提高主分析模块的复用度。
不同的TCP流具有不同的方向性,根据接收的待分析的TCP段中的方向性信息,便可获知TCP流方向,所述方向性信息包括:源IP地址、源端口、目的IP地址和目的端口。所述网络信令监测设备中可以包括多个界定模块,所述界定模块为多个,每个对应不同方向的TCP流,该设备还包括方向获取单元,用于从接收的TCP段中的方向性信息获取TCP流方向,将接收的TCP传送给对应的界定模块。
具体运用软件程序实现时,每个界定模块可基于一个TCP流对象完成,方向获取单元可基于一个ProtoAFix对象实现,每个TCP流对象都有一个状态:是否定位,即是否界定出PDU;ProtoAFix对象的主要功能是管理各个TCP流对象,应用这些TCP流对象进行PDU定界。
图3是ProtoAFix对象的主控函数的处理流程,其包括以下步骤:
步骤301,从接收的TCP段中的方向性信息获取TCP流方向。
步骤302,根据获取的TCP流方向,判断是否存在相应的TCP流处理对象,如果是,则执行步骤304;否则执行步骤303。
步骤303,依据获取的方向性信息创建一个TCP流处理对象,并将其初始化为未定位状态,并加入到ProtoAFix的TCP流对象组中,执行步骤304。
步骤304,将接收的TCP段传给相应的TCP流对象进行界定处理。
相应的TCP流对象用PDU特征逐字节去匹配缓存的TCP段数据内容,以界定出完整的PDU。具体地,TCP流对象主函数的处理包括:
判断本TCP流是否处于定位状态,如果是,则直接将当前接收的TCP段的数据内容置入缓存区,进行PDU合成,若数据长度不够,则继续接收下一个TCP段,直至能够合成一个完整的PDU,然后等待下一个TCP段的到来,继续下一个PDU的合成;
如果本TCP流不是处于定位状态,则先判断当前接收的TCP段中是否包含连接建立成功消息,如果是,则将该连接建立完成消息后数据内容中的第一个字节界定为PDU起始点,确定出PDU;否则将当前接收的TCP段数据内容置入缓存区,判断缓存的TCP段数据内容的数据长度是否达到设定长度,如果是,则用PDU特征逐字节去匹配缓存的TCP段数据内容,如果缓存的TCP段数据内容的数据长度小于设定长度,则继续接收下一个TCP段。
步骤305,如果TCP流对象处理失败,则结束流程;如果TCP流对象处理成功,则循环弹出PDU,提交给主分析模块。
本发明不仅适用于IMS信令监测,也适用于其它进行IP网络监测的情形。
采用本发明方案,判定粒度更细,使PDU界定更加准确,从而提高了网络信令监测的准确性;也使丢失的数据仅限于字节级,也减少了丢失的数据量,进一步提高了网络信令监测准确性。
并且,本发明方案的适用范围广,既适用于TCP连接是短连接以及能监测到TCP连接建立初始阶段的情况,也适用于TCP连接是长连接以及没有检测到TCP连接建立初始阶段的情况。因为即使没有监测到TCP连接建立初始阶段的数据,也可以用PDU特征逐字匹配的方法进行流定位,以从残缺流中界定出一个个完整的PDU。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (6)
1.一种网络信令监测方法,其特征在于,该方法包括:
从接收的传输控制协议TCP段中的方向性信息获取TCP流方向;
对应不同的TCP流方向分别缓存TCP段数据内容;
判断缓存的TCP段数据内容的数据长度是否达到设置的设定长度,如果是,则用包数据单元PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU;
对确定出的PDU进行解码分析。
2.如权利要求1所述的方法,其特征在于,所述缓存TCP段数据内容之前,该方法还包括:
判断接收的TCP段中是否包含连接建立成功消息,如果是,则将该连接建立成功消息后数据内容中的第一个字节界定为PDU起始点,确定出PDU,并执行所述对确定出的PDU进行解码分析的步骤;如果没有,则执行所述缓存TCP段数据内容的步骤。
3.如权利要求1所述的方法,其特征在于,所述PDU特征包含位于PDU开始部分的头部特殊标识;或者,所述PDU特征包含位于PDU中指定位置的版本信息字段或长度字段。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述PDU特征为至少一个。
5.一种网络信令监测设备,其特征在于,该设备包括界定模块和主分析模块;
所述界定模块,用于缓存TCP段数据内容,用PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU,传送给所述主分析模块;所述界定模块包括缓存区和界定子单元;所述缓存区,用于缓存TCP段数据内容;所述界定子单元,用PDU特征逐字节去匹配缓存的TCP段数据内容,匹配成功则界定出PDU的起始点,确定出PDU,传送给所述主分析模块;
所述主分析模块,用于对确定出的PDU进行解码分析;
所述缓存区中还包括长度判定子单元,用于判断缓存的TCP段数据内容的数据长度是否达到设置的设定长度,如果是,则向所述界定子单元发送启动指令;所述界定子单元接收所述启动指令后,用PDU特征逐字节去匹配缓存的TCP段数据内容;
所述界定模块为多个,每个对应不同方向的TCP流,该设备还包括方向获取单元,用于从接收的TCP段中的方向性信息获取TCP流方向,将接收的TCP段传送给对应的界定模块。
6.如权利要求5所述的设备,其特征在于,所述界定模块还包括连接建立判定子单元,用于判断接收的TCP段中是否包含连接建立成功消息,如果是,则将该连接建立成功消息后数据内容中的第一个字节界定为PDU起始点,确定出PDU,传送给所述主分析模块;否则,将接收的TCP段数据内容传送到缓存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110111444.9A CN102761457B (zh) | 2011-04-29 | 2011-04-29 | 网络信令监测方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110111444.9A CN102761457B (zh) | 2011-04-29 | 2011-04-29 | 网络信令监测方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102761457A CN102761457A (zh) | 2012-10-31 |
CN102761457B true CN102761457B (zh) | 2016-03-30 |
Family
ID=47055783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110111444.9A Active CN102761457B (zh) | 2011-04-29 | 2011-04-29 | 网络信令监测方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102761457B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506402B (zh) * | 2016-10-21 | 2019-08-23 | 中国科学院声学研究所 | 一种协议无关转发流缓存方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1180869A2 (en) * | 2000-08-18 | 2002-02-20 | Tsinghua University | A TCP aware local retransmission scheme for unreliable transmission network |
CN1885856A (zh) * | 2005-06-20 | 2006-12-27 | 华为技术有限公司 | 在网络中识别rtp媒体流的实现方法 |
CN102006304A (zh) * | 2010-12-06 | 2011-04-06 | 北京中创信测科技股份有限公司 | Tcp承载的上层协议数据单元的自动定界方法和系统 |
-
2011
- 2011-04-29 CN CN201110111444.9A patent/CN102761457B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1180869A2 (en) * | 2000-08-18 | 2002-02-20 | Tsinghua University | A TCP aware local retransmission scheme for unreliable transmission network |
CN1885856A (zh) * | 2005-06-20 | 2006-12-27 | 华为技术有限公司 | 在网络中识别rtp媒体流的实现方法 |
CN102006304A (zh) * | 2010-12-06 | 2011-04-06 | 北京中创信测科技股份有限公司 | Tcp承载的上层协议数据单元的自动定界方法和系统 |
Non-Patent Citations (1)
Title |
---|
TCP ULP Framing Protocol (TUF);Transport Area Working Group;《draft-ietf-tsvwg-tcp-ulp-frame-01》;20011115;第1-5、11-13页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102761457A (zh) | 2012-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107147657B (zh) | 适用于多机可靠通信的编解码方法及通讯设备 | |
CN107147620B (zh) | 一种消息交互处理方法、客户端和服务端 | |
CN104144106B (zh) | 一种消息转发方法、装置及系统 | |
CN112583878B (zh) | 车辆信息校验方法、装置、设备和介质 | |
CN110830442A (zh) | 报文处理方法、装置及网关 | |
CN105897652A (zh) | 一种基于标准协议的异构终端动态接入方法 | |
CN112235302B (zh) | 一种适用于多种总线的协议解析方法 | |
EP3720075A1 (en) | Data transmission method and virtual switch | |
US10033842B2 (en) | GRE message encapsulation method, decapsulation method, and corresponding devices | |
CN110704356A (zh) | 一种通用的解析串口数据方法 | |
CN109669787B (zh) | 数据传输方法及装置、存储介质、电子设备 | |
CN112737935A (zh) | 基于网关的数据处理方法、数据处理方法、边缘网关及控制系统 | |
US10430364B2 (en) | Packet forwarding | |
CN102497297A (zh) | 基于多核多线程的深度报文检测技术的实现系统和方法 | |
US9992311B2 (en) | Correct port identification in a network host connection | |
CN102761457B (zh) | 网络信令监测方法及设备 | |
US10574392B2 (en) | System. methods and devices for transmitting and/or receiving data using an inter communication link | |
CN106911530B (zh) | 一种基于串口冗余策略的关键测试指令传输系统及方法 | |
CN111726260B (zh) | 一种网络请求回复信息格式转换的测试方法、装置和系统 | |
CN104796426B (zh) | 网页后门的检测方法 | |
CN116132550A (zh) | 一种数据传输方法、装置、电子设备及存储介质 | |
CN115348320B (zh) | 一种通信数据的转换方法、装置、及电子设备 | |
CN115967575A (zh) | Http请求夹带检测方法、装置、电子设备及存储介质 | |
CN102447597B (zh) | 一种实现ip有效性检测的方法及装置 | |
CN113177011B (zh) | 航天器数据解析应用方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |