CN101668020A - 一种流控制传输协议的校验方法、系统、服务端与客户端 - Google Patents
一种流控制传输协议的校验方法、系统、服务端与客户端 Download PDFInfo
- Publication number
- CN101668020A CN101668020A CN 200910190275 CN200910190275A CN101668020A CN 101668020 A CN101668020 A CN 101668020A CN 200910190275 CN200910190275 CN 200910190275 CN 200910190275 A CN200910190275 A CN 200910190275A CN 101668020 A CN101668020 A CN 101668020A
- Authority
- CN
- China
- Prior art keywords
- verification
- mode
- classification
- message
- sctp
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种流控制传输协议的校验方法及系统以及服务端和客户端,服务端包括校验方式分级设置过程和流控制传输协议服务端的校验处理过程,所述校验方式分级设置过程包括:设置至少两种校验方式,并对所述校验方式进行级别划分;所述服务端的校验处理过程包括:在建链协商中,对建链报文进行分级校验,校验通过时,将添加在流控制传输协议控制块中的校验和标识设置为校验通过时的对应校验方式;连接建立后,按所述校验和标识设置的校验方式对收发报文进行校验。本发明可以适应于不同校验方式的需要,提高流控制传输协议的系统兼容性;既可保证尽力按优选校验方式进行校验,又可进行全面校验,以减少对接风险,降低连接失败的可能性。
Description
技术领域
本发明涉及数据通讯技术,具体的说,涉及一种流控制传输协议(Stream Control Transmission Protocol,简称为SCTP)的校验方法、系统以及服务端与客户端。
背景技术
早期的SCTP协议采用Adler32算法(RFC2960、RFC1950;RFC,RequestFor Comments,请求评议,是一系列以编号排定的文件,文件收集了有关因特网相关资讯,以及UNIX和因特网社群的软件文件。基本上因特网通讯协定都有在RFC文件内详细说明)进行校验,但随着Adler32算法缺陷(例如对于小数据包,Adler-32算法不能够提供比较好的纠错能力)的被发现,SCTP协议的校验已过渡到使用CRC32算法(RFC3309)。然而,尽管新的协议(RFC4460、RFC4960)强烈要求SCTP支持并使用CRC32算法,但在工程上仍然需要考虑与那些老设备对接的兼容性,尤其当涉及到不同设备商和运营商对接时,沟通成本会变得很高,而一旦未协商或者沟通不畅,很可能导致SCTP建链失败。
发明内容
有鉴于此,本发明提供了一种流控制传输协议的校验方法及系统以及服务端和客户端,以便使流控制传输协议的校验具有更好的兼容性,减少SCTP对接失败的可能性。
为了解决上述技术问题,本发明采用了如下技术方案:
一种流控制传输协议的校验方法,包括校验方式分级设置过程和流控制传输协议服务端的校验处理过程,所述校验方式分级设置过程包括:设置至少两种校验方式,并对所述校验方式进行级别划分;所述服务端的校验处理过程包括:
A1、在建链协商中,对建链报文进行分级校验;
A2、分级校验通过,建立连接并对收发报文按分级校验结果进行校验。
在上述方法的一种实施例中,所述分级校验为:按从高到低顺序依级采用设置的校验方式进行校验,某一级校验方式的校验通过,则退出校验;某一级校验方式的校验未通过,则继续采用下一级校验方式进行校验;最低级校验方式的校验未通过,则丢弃报文;分级校验通过后,建立连接,按所述校验和标识设置的校验方式对收发报文进行校验。
在上述方法的一种实施例中,所述校验和标识添加在流控制传输协议控制块中。
在上述方法的一种实施例中,设置第一校验方式和第二校验方式两种校验方式,第一校验方式的级别高于第二校验方式的级别。
在上述方法的一种实施例中,所述步骤A1具体为:在INIT报文和COOKIE_ECHO报文的cookie中添加校验和协商标识,对INIT报文进行分级校验,将所述校验和协商标识设置为校验通过时的对应校验方式;对COOKIE_ECHO报文进行分级校验,如果第一校验方式校验通过,则将所述校验和标识设置为第一校验方式,否则如果第二校验方式校验通过,且所述校验和协商标识为第二校验方式,则将所述校验和标识设置为第二校验方式,否则丢弃报文。
在上述方法的一种实施例中,所述第一校验方式为CRC32校验方式,所述第二校验方式为Adler32校验方式。
在上述方法的一种实施例中,还设置报文校验和标识,用于记录报文校验通过时的校验方式。
本发明还公开了一种流控制传输协议服务端,包括:
分级校验模块,用于在建链协商中,对建链报文进行分级校验;
收发报文校验模块,用于在连接建立后,按分级校验结果对收发报文进行校验。
本发明还公开了一种流控制传输协议的校验方法,包括校验方式分级设置过程和流控制传输协议客户端的校验处理过程,所述校验方式分级设置过程包括:设置至少两种校验方式,并对所述校验方式进行级别划分;所述客户端的校验处理过程包括:
B1、在建链协商中,对建链报文进行分级校验协商;
B2、连接建立后,按分级校验协商结果对收发报文进行校验。
在上述方法的一种实施例中,所述分级校验协商为:按从高到低顺序依级采用设置的校验方式对建链报文进行校验协商,某一级校验方式的校验协商通过,则退出校验协商;某一级校验方式的校验协商未通过,则继续采用下一级校验方式进行校验协商;最低级校验方式的校验协商未通过,则建链失败;校验协商通过时,将所述校验和标识设置为校验协商通过时的对应校验方式;连接建立后,按所述校验和标识设置的校验方式对收发报文进行校验。
在上述方法的一种实施例中,所述校验和标识添加在流控制传输协议控制块中。
在上述方法的一种实施例中,设置第一校验方式和第二校验方式两种校验方式,第一校验方式的级别高于第二校验方式的级别。
在上述方法的一种实施例中,所述步骤B1具体为:
对INIT和INIT_ACK报文对进行分级校验协商:发送采用某一级校验方式进行校验计算的INIT报文,对返回的INIT_ACK报文采用INIT报文校验计算使用的对应校验方式进行校验,校验未通过,则INIT和INIT_ACK报文对的该级分级校验协商未通过,继续进行下一级分级校验协商,校验通过,则INIT和INIT_ACK报文对的分级校验协商通过,继续COOKIE_ECHO和COOKIE_ACK报文对的分级校验协商;
所述COOKIE_ECHO和COOKIE_ACK报文对的分级校验协商为:发送采用某一级校验方式进行校验计算的COOKIE_ECHO报文,对返回的COOKIE_ACK报文采用COOKIE_ECHO报文校验计算使用的对应校验方式进行校验,校验未通过,则COOKIE_ECHO和COOKIE_ACK报文对的该级分级校验协商未通过,继续进行下一级分级校验协商,最后一级校验协商未通过,建链失败;校验通过,分级校验协商通过,将添加在流控制传输协议控制块中的校验和标识设置为分级校验协商通过时的对应校验方式。
在上述方法的一种实施例中,所述第一校验方式为CRC32校验方式,所述第二校验方式为Adler32校验方式。
在上述方法的一种实施例中,还设置报文校验和标识,用于记录报文校验通过时的校验方式。
在上述方法的一种实施例中,还包括设置最大建链次数和/或多建链通路,一条建链通路的一次建链失败,则继续尝试下一次建链直至达到该条建链通路的建链次数上限;一条建链通路建链失败,则继续尝试下一条建链通路直至所有建链通路尝试完毕,所有建链通路的建链次数上限和等于所述最大建链次数。
在上述方法的一种实施例中,还包括:在流控制传输协议控制块中设置校验和用户配置标识,在校验和用户配置标识配置为用户指定,则采用用户指定的校验方式进行校验,在校验和用户配置标识配置为用户未指定,则采用分级校验方式。
本发明还公开了一种流控制传输协议客户端,包括:
分级校验协商模块,用于在建链协商中,对建链报文进行分级校验协商;
收发报文校验模块,用于在连接建立后,按所述校验和标识设置的校验方式对收发报文进行校验。。
本发明还公开了一种流控制传输协议的校验系统,包括流控制传输协议服务端和流控制传输协议客户端;
所述流控制传输协议服务端和流控制传输协议客户端均设置有校验方式分级设置模块和收发报文校验模块,所述校验方式分级设置模块用于设置至少两种校验方式,并对所述校验方式进行级别划分;所述流控制传输协议服务端的收发报文校验模块用于在连接建立后,按分级校验结果对收发报文进行校验;所述流控制传输协议客户端的收发报文校验模块用于在连接建立后,按分级校验协商结果对收发报文进行校验;
所述流控制传输协议服务端还包括分级校验模块,用于在建链协商中,对建链报文进行分级校验;
所述流控制传输协议客户端还包括分级校验协商模块,用于在建链协商中,对建链报文进行分级校验协商。
在上述系统的一种实施例中,所述校验和标识添加在流控制传输协议控制块中。
本发明通过对流控制传输协议进行多种校验方式的设置,使之可以适应于不同校验方式的需要,提高流控制传输协议的系统兼容性;多种校验方式采用分级设置,既可保证尽力按优选校验方式进行校验,又可进行全面校验,以减少对接风险,降低连接失败的可能性。
附图说明
图1是本发明实施例的服务端建链流程图;
图2是本发明实施例的客户端建链流程图;
图3是本发明实施例的收发校验流程示意图;
图4是本发明实施例的服务端校验和算法自适应选取实现流程图;
图5是本发明实施例的客户端校验和算法自适应选取实现流程图;
图6是本发明实施例的SCTP的报文收发交互状态图;
图7是本发明实施例的SCTP的校验系统框图。
具体实施方式
下面对照附图并结合具体实施方式对本发明做详细说明。
为了使SCTP校验具有更好的兼容性,减少对接失败的可能,本发明采用设置优先级的全面校验方式,即将SCTP的全部校验方式(至少两种)都进行设置,全部校验方式按级别进行区分,从而在校验时进行分级校验:按从高到低顺序,依级采用设置的校验方式进行校验,某一级校验方式的校验通过,则退出校验;某一级校验方式的校验未通过,则继续采用下一级校验方式进行校验;最低级校验方式的校验未通过,则校验失败;校验通过时,可以按设置进行相应处理,例如记录校验通过的校验方式,在校验失败时,也可以按设置执行相应处理,例如将报文丢弃。下文将以CRC32和Adler32两种校验方式进行说明,依分级校验原则,主要设置包括:
1、本端SCTP模块需要同时支持CRC32(第一校验方式)和Adler32(第二校验方式)两种校验和算法;其中,以CRC32为高级别的校验方式,Adler32为低级别的校验方式。
2、本端SCTP作为服务端时,收到CRC32和Adler32任何一种校验和算法的报文,都认为是合法的;并尽力按CRC32算法进行对接;
3、本端SCTP作为客户端时,首先应尽力采用CRC32算法建链,在CRC32算法建链失败的情况下,采用Adler32算法建链;在多归属的情况下依次在每条通路上对两种校验和算法进行尝试;并且可以在客户端提供用户配置,由用户来指定建链采用何种校验和算法;
4、在SCTP控制块TCB(Transmission Control Block,见RFC4960)中加入校验和标识,用来标示当前连接的校验和算法模式,该标识在建链过程中学习,在建链之后固定。
如图6所示,SCTP的建链(建立连接)的过程包括:
1、发送方发送INIT报文,状态设置为cookie_wait(cookie等待);
2、接收方接收INIT报文,发送INIT_ACK报文,其中附带cookie,状态设置为closed(关闭);
3、发送方接收到INIT_ACK报文,发送COOKIE_ECHO报文,状态设置为cookie_echoed(cookie回应);
4、接收方接收到COOKIE_ECHO报文,发送COOKIE_ACK报文,状态设置为established(连接);
5、发送方接收到COOKIE_ACK报文,状态设置为established(连接)。
下文将分别从SCTP协议服务端和SCTP协议客户端对本发明实施例的校验方法进行说明,在建链过程中,服务端为接收方,客户端为发送方。
本发明的实施例中,在SCTP控制块TCB中加入校验和标识A,用来标示SCTP的当前连接所使用的校验和算法,例如用0表示采用CRC32算法校验,用1表示采用Adler32算法校验。在SCTP的建链Cookie(INIT_ACK报文和COOKIE_ECHO报文中的参数类型为State Cookie的参数,详见RFC4960)中加入校验和协商标识B,用来记录SCTP协商时采用的校验和算法,同样也用0和1分别表示CRC32和Adler32两种校验和算法。
如图1所示,SCTP协议服务端对校验和处理方式如下:
步骤S101.收到来自客户端的建链报文INIT;
步骤S102.优先采用CRC32算法进行校验,如果校验通过,则处理该INIT报文,并将校验和协商标识B置为CRC32,执行步骤S104;如果校验不通过,执行步骤S103;
步骤S103.采用Adler32算法进行校验,如果校验通过,则处理该INIT报文,并将校验和协商标识B置为Adler32,执行步骤S104;如果校验不通过,则将报文丢弃,流程结束;
步骤S104.收到COOKIE_ECHO报文,从Cookie中取出校验和协商标识B;
步骤S105.对报文按CRC32进行校验,如果校验通过,将校验和标识A置为CRC32,执行步骤S108;否则执行步骤S106;
步骤S106.对报文按Adler32进行校验,如果校验通过,执行步骤S107;否则丢弃报文,流程结束;
步骤S107.如果校验和协商标识B为CRC32,则丢弃该COOKIE_ECHO报文,等待新的COOKIE_ECHO报文而进入步骤S104的执行;如果校验和协商标识B为Adler32,则将校验和标识A置为Adler32,执行步骤S108;
步骤S108.连接进入established状态(RFC4460),收发包时按照校验和标识A中记录的校验和算法对报文进行校验。
如图2所示,SCTP协议客户端对校验和处理方式如下:
可以配置用户指定校验和算法,如果用户指定了校验和算法,则将校验和标识A设置为用户配置的校验和算法。如果建链成功,则按照校验和标识A中设置的校验和算法进行收发报文的校验;如果建链失败,通知上层建链失败,流程结束。
如果用户未指定校验和算法,则将校验和标识A设置为CRC32,进行建链处理。
步骤S201.设置最大建链次数(Max.Init.Retransmits times,RFC4960)为不小于两倍的通路数的偶数;
步骤S202.在指定通路上依次按CRC32和Adler32尝试建链,多通路时,首先指定在首选通路上尝试建链;
步骤S203.按CRC32方式计算待发送的INIT报文,发送CRC32校验的INIT报文;
步骤S204.如果收到INIT_ACK报文,按CRC32进行校验,如果校验通过,执行步骤S207;否则将报文丢弃;在T1定时器(RFC4960)超时,未收到有效的INIT_ACK报文,执行步骤S205;
步骤S205.使用Adler32方式重新计算INIT报文,发送Adler32校验的INIT报文;
步骤S206.如果收到INIT_ACK报文,按Adler32进行校验,如果校验通过,执行步骤S207;否则将报文丢弃;在T1定时器(RFC4960)超时,未收到有效的INIT_ACK报文,执行步骤S211;
步骤S207.使用CRC32方式计算待发送的COOKIE_ECHO报文,发送CRC32校验的COOKIE_ECHO报文;
步骤S208.如果收到COOKIE_ACK报文,按CRC32进行校验,如果校验通过,将校验和标识A设置为CRC32,执行步骤213;否则将报文丢弃;在T1定时器超时,未收到有效的COOKIE_ACK报文,执行步骤S209;
步骤S209.使用Adler32方式重新计算COOKIE_ECHO报文,发送Adler32校验的COOKIE_ECHO报文;
步骤S210.如果收到COOKIE_ACK报文,按Adler32进行校验,如果校验通过,将校验和标识A设置为Adler32,执行步骤213;否则将报文丢弃;在T1定时器超时,未收到有效的COOKIE_ACK报文,执行步骤S211;
步骤S211.如果已达到最大建链次数,通知上层建链失败,流程结束;否则执行步骤S212;
步骤S212.如果配置了多归属(multi-home,RFC4960),也即设置了多条建链通路,则指定下一条通路,并执行步骤S202尝试建链,如果未配置,则在本通路继续尝试建链,达到最大建链次数时,通知上层建链失败,流程结束;一般的,对于每条建链通路,都设置有建链次数上限,在该条建链通路的一次建链尝试失败,则进行下一次尝试直到达到建链次数上限;每条建链通路的建链次数上限应当保证所有的校验方式都进行至少一次尝试建链,也即,在本例中,每条建链通路的建链次数上限至少为两次,当然也可以是两次以上,例如可以设置三次,其中,CRC32校验尝试两次,Adler32校验尝试一次。如果该条建链通路建链失败,则尝试下一条建链通路,所有建链通路的建链次数上限和等于最大建链次数。
步骤S213.连接进入established状态,收发包时按照校验和标识A中记录的校验和算法对报文进行校验。
上述步骤中,可以看到,依次对INIT和INIT_ACK报文对以及COOKIE_ECHO和COOKIE_ACK报文对进行了分级校验协商,
总结INIT和INIT_ACK报文对的分级校验协商是:发送采用某一级校验方式进行校验计算的INIT报文,对返回的INIT_ACK报文采用INIT报文校验计算使用的对应校验方式进行校验,校验未通过,则INIT和INIT_ACK报文对的该级分级校验协商未通过,继续进行下一级分级校验协商,校验通过,则INIT和INIT_ACK报文对的分级校验协商通过,继续COOKIE_ECHO和COOKIE_ACK报文对的分级校验协商;
总结COOKIE_ECHO和COOKIE_ACK报文对的分级校验协商是:发送采用某一级校验方式进行校验计算的COOKIE_ECHO报文,对返回的COOKIE_ACK报文采用COOKIE_ECHO报文校验计算使用的对应校验方式进行校验,校验未通过,则COOKIE_ECHO和COOKIE_ACK报文对的该级分级校验协商未通过,继续进行下一级分级校验协商,最后一级校验协商未通过,建链失败;校验通过,分级校验协商通过,将添加在流控制传输协议控制块中的校验和标识设置为分级校验协商通过时的对应校验方式。
上述方式主要是体现尽可能采用高优先级校验和方式(INIT和INIT_ACK报文对用低优先级校验和的校验结果不完全可信,可能是对端只支持低优先级算法,也可能是高优先级校验的INIT报文丢失了,所以在COOKIE_ECHO和COOKIE_ACK报文对的分析校验协商中进行二次确认,以尽可能保证采用高优先级校验和方式。
如图3所示,为了更清楚的说明校验和标识A的使用过程,可以将SCTP的处理分为两部分:校验部分8和处理部分9,前者主要完成对收发报文的校验,后者主要完成对具体Chunk(SCTP的数据结构)的处理7。图3中,以实线标识出接收流程,虚线标识出发送流程。
在校验部分8的接收流程中,
(1)接收到报文后,首先通过SCTP的连接信息,如本端IP地址、远端IP地址、本端端口号和远端端口号等信息查找控制块TCB,并根据TCB存在与否进行如下相应处理:
(2)如果TCB不存在,依次按CRC32和Adler32尝试接收报文符合哪种校验和算法,并以报文校验和标识C进行标识;
(3)如果TCB存在,则从TCB中取出校验和标识A,用校验和标识A所标示的校验和算法对报文进行校验。
校验完成后进入处理部分9,进行SCTP的Chunk处理7。
在校验部分8的发送流程中,
(5)如果有报文发送,同样判断TCB是否存在,并根据TCB存在与否进行如下相应处理:(3)如果TCB存在,则从TCB中取出校验和标识A,用校验和标识A所标示的校验和算法对报文进行校验;(4)如果TCB不存在,例如收到INIT回应INIT_ACK,收到OOTB报文(RFC4960)回应ABORT等,此时按照接收报文的校验和方式,即报文校验和标识C对回应报文进行校验并发送。
当本端作为服务端时,具体的校验流程如图4所示:
步骤S401:当收到SCTP报文后,先按照关键字,如本地IP地址、远端IP地址、本地端口号和远端端口查找SCTP的控制块TCB;
步骤S402:如果控制块TCB存在,则执行步骤S410,否则执行下一步;
步骤S403:控制块TCB不存在,则报文先按CRC32方式进行校验,如果校验通过,则执行步骤S405,否则执行步骤S404;
步骤S404:按Adler32方式进行校验,如果校验通过,则执行步骤S405,否则将报文丢弃;
步骤S405:记录该报文的校验和方式,即为报文校验和标识C,继续进行SCTP的Chunk处理;
步骤S406:如果是INIT报文,将报文校验和标识C放入回应报文INIT_ACK的Cookie中,即将Cookie中的校验和协商标识B的校验模式设置为报文校验和标识C标记的校验模式;进行随后的Chunk处理;
步骤S407:如果是COOKIE_ECHO报文,则从Cookie中取出校验和协商标识B;对报文用CRC32进行校验
步骤S408:如果报文符合CRC32校验,则分配TCB,并将校验和标识A设置为CRC32,校验和算法分配成功,SCTP进入established状态,进行步骤S410;否则继续下一步;
步骤S409:如果报文校验和标识C和Cookie中的校验和协商标识B同时为Adler32,则将校验和标识A设置为Adler32,校验和算法分配成功,SCTP进入established状态,进行步骤S410;否则将报文丢弃;
步骤S410:进入连接,按校验和标识A对收发报文进行校验。
当本端作为客户端时,可以支持用户配置校验和算法,即始终按用户指定的校验和算法进行校验,此时则关闭校验和算法的自适应选取。为了标示用户是否进行了配置,在控制块TCB中加入校验和用户配置标识D,用1表示按用户配置的校验和方式进行校验,用0表示自适应校验。不管用户是否配置,连接所采用的校验和方式都记录在校验和标识A中。
客户端的校验和算法自适应选取的详细流程如图5所示:
步骤S501:如果用户指定了校验和算法,将校验和用户配置标识D设置为1,将校验和标识A设置为用户配置的校验和算法,执行步骤S504;
步骤2:如果用户未指定检验和算法,则将标识D设置为0,将校验和标识A设置为0,即默认采用CRC32建链;
步骤503:设置最大建链次数(Max.Init.Retransmits times,RFC4960)为不小于两倍的通路数的偶数;
步骤S504:选择首选通路为当前建链通路;
步骤S505:按照校验和标识A计算待发送报文;
步骤S506:如果收到报文,查找控制块TCB,按照校验和标识A校验接收报文,如果校验不通过,则将报文丢弃;等待执行步骤509;否则根据Chunk类型执行步骤S507或步骤S508;
步骤507:如果收到INIT_ACK报文,将建链次数清零,并执行步骤S505发送COOKIE_ECHO报文;此过程中若用户校验和配置标识D为0,须先将校验和标识A设置为0;
步骤S508:如果收到COOKIE_ACK报文,则SCTP建链成功,后续收发报文都按校验和标识A进行校验,流程结束;此过程中若用户校验和配置D为0,须先将校验和标识A设置为报文校验和标识C;
步骤S509:如果T1定时器超时前未收到有效的建链回应报文INIT_ACK或COOKIE_ACK,将建链次数加一;
步骤S510:如果建链次数达到最大建链次数,建链失败,流程终止;否则继续;
步骤S511:如果标识D为0,则将标识A取反,A=!A,即如果为0则变为1,如果为1则变为0;
步骤S512:如果尚未达到最大建链次数,如果配置了多归属,则调整到下一条通路进行建链(1200),执行步骤S505。
如图7所示,本发明还公开了一种流控制传输协议的校验系统,包括流控制传输协议服务端和流控制传输协议客户端,其中,
流控制传输协议服务端和流控制传输协议客户端均设置有校验方式分级设置模块和收发报文校验模块,校验方式分级设置模块用于设置至少两种校验方式,并对校验方式进行级别划分;流控制传输协议服务端的收发报文校验模块用于在连接建立后,按分级校验结果对收发报文进行校验,也即根据分级校验通过的校验和标识设置的校验方式进行收发报文的校验;流控制传输协议客户端的收发报文校验模块用于在连接建立后,按分级校验协商结果对收发报文进行校验,也即根据分级校验协商通过的校验和标识设置的校验方式对收发报文进行协商。
流控制传输协议服务端还包括分级校验模块,用于在建链协商中,对建链报文进行分级校验。
分级校验为:按从高到低顺序依级采用设置的校验方式进行校验,某一级校验方式的校验通过,则退出校验;某一级校验方式的校验未通过,则继续采用下一级校验方式进行校验;最低级校验方式的校验未通过,则丢弃报文;校验通过时,将所述校验和标识设置为校验通过时的对应校验方式。
流控制传输协议客户端还包括分级校验协商模块,用于在建链协商中,对建链报文进行分级校验协商。
分级校验协商为:按从高到低顺序依级采用设置的校验方式对建链报文进行校验协商,某一级校验方式的校验协商通过,则退出校验协商;某一级校验方式的校验协商未通过,则继续采用下一级校验方式进行校验协商;最低级校验方式的校验协商未通过,则建链失败;校验协商通过时,将所述校验和标识设置为校验协商通过时的对应校验方式。
校验和标识可以添加在流控制传输协议控制块中。
上述系统是在服务端与客户端都进行了分级校验处理,需要了解的是,只在单边,例如服务端或客户端进行分级校验处理同样是可行的。
本发明是对SCTP校验和机制的一种改良,为SCTP协议提供了一种校验和算法的智能选取方法,可使不同设备,尤其是不同厂家的设备在进行SCTP对接时,具有更好的兼容性。这种自适应的SCTP校验和算法选取机制,可以减少SCTP的用户配置,从而也减少了因校验和算法不一致而导致的对接失败的可能。
与现有技术相比较,本发明的SCTP协议校验和算法的智能选取方法,具有相当强的适应力:不论对接端支持或配置何种校验和算法,都可以自适应调整本端的校验和算法,以保证对接的成功;在对接两端对两种校验和算法都支持的情况下,可以优先采用CRC32算法进行对接,符合最新的协议精神。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,但这只是为便于理解而举的实例,不应认为本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,可以做出各种可能的等同改变或替换,这些改变或替换都应属于本发明的保护范围。
Claims (20)
1.一种流控制传输协议的校验方法,其特征在于,包括校验方式分级设置过程和流控制传输协议服务端的校验处理过程,所述校验方式分级设置过程包括:设置至少两种校验方式,并对所述校验方式进行级别划分;
所述服务端的校验处理过程包括:
A1、在建链协商中,对建链报文进行分级校验;
A2、分级校验通过后,建立连接并对收发报文按分级校验结果进行校验。
2.如权利要求1所述的方法,其特征在于,所述分级校验为:按从高到低顺序依级采用设置的校验方式进行校验,某一级校验方式的校验通过,则退出校验;某一级校验方式的校验未通过,则继续采用下一级校验方式进行校验;最低级校验方式的校验未通过,则丢弃报文;校验通过时,将校验和标识设置为校验通过时的对应校验方式;分级校验通过后,建立连接,按所述校验和标识设置的校验方式对收发报文进行校验。
3.如权利要求2所述的方法,其特征在于,所述校验和标识添加在流控制传输协议控制块中。
4.如权利要求3所述的方法,其特征在于,设置第一校验方式和第二校验方式两种校验方式,第一校验方式的级别高于第二校验方式的级别。
5.如权利要求4所述的方法,其特征在于,所述步骤A1具体为:在INIT报文和COOKIE_ECHO报文的cookie中添加校验和协商标识,对INIT报文进行分级校验,将所述校验和协商标识设置为校验通过时的对应校验方式;对COOKIE_ECHO报文进行分级校验,如果第一校验方式校验通过,则将所述校验和标识设置为第一校验方式,否则如果第二校验方式校验通过,且所述校验和协商标识为第二校验方式,则将所述校验和标识设置为第二校验方式,否则丢弃报文。
6.如权利要求5所述的方法,其特征在于,所述第一校验方式为CRC32校验方式,所述第二校验方式为Adler32校验方式。
7.如权利要求6所述的方法,其特征在于,还设置报文校验和标识,用于记录报文校验通过时的校验方式。
8.一种流控制传输协议服务端,其特征在于,包括:
分级校验模块,用于在建链协商中,对建链报文进行分级校验;
收发报文校验模块,用于在连接建立后,按分级校验结果对收发报文进行校验。
9.一种流控制传输协议的校验方法,其特征在于,包括校验方式分级设置过程和流控制传输协议客户端的校验处理过程,所述校验方式分级设置过程包括:设置至少两种校验方式,并对所述校验方式进行级别划分;
所述客户端的校验处理过程包括:
B1、在建链协商中,对建链报文进行分级校验协商;
B2、连接建立后,按分级校验协商结果对收发报文进行校验。
10.如权利要求9所述的方法,其特征在于,所述分级校验协商为:按从高到低顺序依级采用设置的校验方式对建链报文进行校验协商,某一级校验方式的校验协商通过,则退出校验协商;某一级校验方式的校验协商未通过,则继续采用下一级校验方式进行校验协商;最低级校验方式的校验协商未通过,则建链失败;校验协商通过时,将所述校验和标识设置为校验协商通过时的对应校验方式;连接建立后,按所述校验和标识设置的校验方式对收发报文进行协商。
11.如权利要求10所述的方法,其特征在于,所述校验和标识添加在流控制传输协议控制块中。
12.如权利要求11所述的方法,其特征在于,设置第一校验方式和第二校验方式两种校验方式,第一校验方式的级别高于第二校验方式的级别。
13.如权利要求12所述的方法,其特征在于,所述步骤B1具体为:
对INIT和INIT_ACK报文对进行分级校验协商:发送采用某一级校验方式进行校验计算的INIT报文,对返回的INIT_ACK报文采用INIT报文校验计算使用的对应校验方式进行校验,校验未通过,则INIT和INIT_ACK报文对的该级分级校验协商未通过,继续进行下一级分级校验协商,校验通过,则INIT和INIT_ACK报文对的分级校验协商通过,继续COOKIE_ECHO和COOKIE_ACK报文对的分级校验协商;所述COOKIE_ECHO和COOKIE_ACK报文对的分级校验协商为:发送采用某一级校验方式进行校验计算的COOKIE_ECHO报文,对返回的COOKIE_ACK报文采用COOKIE_ECHO报文校验计算使用的对应校验方式进行校验,校验未通过,则COOKIE_ECHO和COOKIE_ACK报文对的该级分级校验协商未通过,继续进行下一级分级校验协商,最后一级校验协商未通过,建链失败;校验通过,分级校验协商通过,将添加在流控制传输协议控制块中的校验和标识设置为分级校验协商通过时的对应校验方式。
14.如权利要求13所述的方法,其特征在于,所述第一校验方式为CRC32校验方式,所述第二校验方式为Adler32校验方式。
15.如权利要求14所述的方法,其特征在于,还设置报文校验和标识,用于记录报文校验通过时的校验方式。
16.如权利要求10-15任一所述的方法,其特征在于,还包括设置最大建链次数和/或多建链通路,一条建链通路的一次建链失败,则继续尝试下一次建链直至达到该条建链通路的建链次数上限;一条建链通路建链失败,则继续尝试下一条建链通路直至所有建链通路尝试完毕,所有建链通路的建链次数上限和等于所述最大建链次数。
17.如权利要求10-15任一所述的方法,其特征在于,还包括:在流控制传输协议控制块中设置校验和用户配置标识,在校验和用户配置标识配置为用户指定,则采用用户指定的校验方式进行校验,在校验和用户配置标识配置为用户未指定,则采用分级校验方式。
18.一种流控制传输协议客户端,其特征在于,包括:
分级校验协商模块,用于在建链协商中,对建链报文进行分级校验协商;
收发报文校验模块,用于在连接建立后,按分级校验协商结果对收发报文进行校验。
19.一种流控制传输协议的校验系统,其特征在于,包括流控制传输协议服务端和流控制传输协议客户端;
所述流控制传输协议服务端和流控制传输协议客户端均设置有校验方式分级设置模块和收发报文校验模块,所述校验方式分级设置模块用于设置至少两种校验方式,并对所述校验方式进行级别划分;所述流控制传输协议服务端的收发报文校验模块用于在连接建立后,按分级校验结果对收发报文进行校验;所述流控制传输协议客户端的收发报文校验模块用于在连接建立后,按分级校验协商结果对收发报文进行校验;
所述流控制传输协议服务端还包括分级校验模块,用于在建链协商中,对建链报文进行分级校验;
所述流控制传输协议客户端还包括分级校验协商模块,用于在建链协商中,对建链报文进行分级校验协商。
20.如权利要求19所述的系统,所述校验和标识添加在流控制传输协议控制块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910190275 CN101668020B (zh) | 2009-09-24 | 2009-09-24 | 一种流控制传输协议的校验方法、系统、服务端与客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910190275 CN101668020B (zh) | 2009-09-24 | 2009-09-24 | 一种流控制传输协议的校验方法、系统、服务端与客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101668020A true CN101668020A (zh) | 2010-03-10 |
CN101668020B CN101668020B (zh) | 2013-06-05 |
Family
ID=41804461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910190275 Active CN101668020B (zh) | 2009-09-24 | 2009-09-24 | 一种流控制传输协议的校验方法、系统、服务端与客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101668020B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109428752A (zh) * | 2017-08-29 | 2019-03-05 | 中兴通讯股份有限公司 | 校验方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561623A (zh) * | 2001-07-30 | 2005-01-05 | 西门子公司 | 在网络节点中支持多个检验总数算法的方法 |
CN1291575C (zh) * | 2003-02-18 | 2006-12-20 | 华为技术有限公司 | 一种流控制传输协议的消息分发方法 |
-
2009
- 2009-09-24 CN CN 200910190275 patent/CN101668020B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109428752A (zh) * | 2017-08-29 | 2019-03-05 | 中兴通讯股份有限公司 | 校验方法及装置 |
CN109428752B (zh) * | 2017-08-29 | 2021-11-02 | 中兴通讯股份有限公司 | 校验方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101668020B (zh) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1507353B1 (en) | Transmission/reception of data flows with different QoS requirements | |
CN1613233B (zh) | 用于重传的方法和系统 | |
CN104969590B (zh) | 用于允许在虚拟家庭网关中的数据路径选择的方法和设备 | |
US20040264427A1 (en) | Selection of connection settings | |
US9271195B2 (en) | Radio communication system, base station, gateway, and radio communication method | |
US8396027B2 (en) | Communication control system, communication system and communication control method | |
EP2107725A1 (en) | A redirector, a relay and a routing information configuration system and an updating method | |
JPH11163946A (ja) | ゲートウェイ装置、無線基地局装置、ルータ装置および無線端末装置 | |
CN101336427A (zh) | 基于业务请求的数字对象路由 | |
RU2006129488A (ru) | Устройство динамического управления сетью и способ динамического управления сетью | |
CN101252788A (zh) | 支持RADIUS协议的Diameter-AAA服务器及其工作方法 | |
WO2019237530A1 (zh) | 数据按序递交的方法、网络设备及终端设备 | |
CN104702518B (zh) | 一种基于无线网络的多卡路由器装置及其数据传输方法 | |
CN104717259A (zh) | 分布式中转服务器网络辅助的多路径数据传输系统与方法 | |
CN101778425A (zh) | 无线局域网中的宽带接入服务器负载动态均衡方法 | |
JP2002152843A (ja) | 再送制御方法及び装置 | |
EP1464146B1 (en) | A method of and apparatus for directing packet entities | |
CN108418696B (zh) | 一种网关计费方法及网关 | |
EP1752014B1 (en) | Supporting a network behind a wireless station | |
US6728247B1 (en) | Method and device for increasing a data throughput | |
CN101668020B (zh) | 一种流控制传输协议的校验方法、系统、服务端与客户端 | |
CN108270689A (zh) | 一种实现业务连接的方法及装置 | |
CN102355653B (zh) | 终端间通信方法及控制设备、用户设备、基站和网络系统 | |
CN104219168B (zh) | 基于udp传输的控制报文处理方法及装置 | |
CN105991629A (zh) | Tcp连接建立方法及装置 |
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 |