一种获知udp服务不可达的方法、装置及网络设备的制作方法

文档序号:7859130阅读:120来源:国知局
专利名称:一种获知udp服务不可达的方法、装置及网络设备的制作方法
技术领域
本发明涉及网络技术领域,尤指一种获知UDP服务不可达的方法、装置及网络设备。
背景技术
传输控制协议(TransmissionControl Protocol, TCP) / 互联网协议(InternetProtocol, IP)系统,即通常所说的4层协议系统的结构如图I所示,包括链路层、网络层、传输层和应用层。
·
链路层实现的是设备驱动程序及对应的网络接口卡;网络层实现的是处理网络中的分组活动,包括IP、互联网控制报文协议(Internet Control Message Protocol, ICMP)、互联网组管理协议(Internet Group Management Protocol, IGMP);传输层处理的是端到端的服务,包括TCP和用户数据报文协议(User Datagram Protocol, UDP);应用层处理的各应用程序的实现细节,具体包括文件传输协议(File Transfer Protocol, FTP)、简单文件传输协议(Trivial File Transfer Protocol,TFTP)、远程登录(Telnet)协议、简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)等。每一层只为相邻的上层提供服务器,且只调用相邻下层提供的接口。当链路层接收到的IP报文到达网络层时,按IP报文的类型进行分流,不同类型的协议报文走不同的协议路径一层一层往上传输;同理,当需要传输IP报文时,IP报文将经过不同的协议路径一层一层往下传输,最终到网络层相聚,经过链路层统一传出,IP报文的走向如图2所示。UDP和TCP是两种著名的传输层协议,虽然TCP使用了不可靠的IP服务,但TCP自身做了可靠性保障,而UDP是不可靠的协议,UDP的可靠性完全由应用程序来保障。ICMP是IP的附属协议,主要用于通告错误信息,虽然ICMP主要被IP使用,但也可以直接被应用程序使用,如Ping和Traceroute等,但UDP和TCP不处理ICMP报文。当发送端中应用程序对应的用户进程通过UDP模块向远端设备发起UDP会话时,一般使用套接字(socket)的方式进行,首先在UDP模块创建对应的套接字,通过该套接字发送UDP服务请求报文,并监听该套接字的相关事件,套接字主要包括目的端口号、目的IP地址、源端口号、源IP地址及用于收发数据的缓存空间,缓存空间分配完成后便可以向远端设备请求UDP服务了,当请求的UDP服务完成后便关闭套接字并释放该套接字的缓存空间。如果远端设备没有打开用户进程请求的UDP服务,即没有打开提供UDP服务的端口,远端设备会返回一个UDP服务(端口)不可达报文,该UDP服务不可达报文包含UDP服务请求报文从IP头开始的部分内容。UDP服务请求报文及UDP服务不可达报文的格式如下图3所示。ICMP与UDP是两个完全分离的协议实体,不同类型报文走不同的协议。当网络层的IP从链路层收到的是m)P报文则送往上层(传输层)的UDP模块处理,当收到的是ICMP报文则送往同层的ICMP模块处理。ICMP模块处理ICMP报文,UDP模块处理UDP报文,两者相互独立且不交换信息。一般的,用户进程向远端设备发起UDP会话时,在发出UDP服务请求后,便挂起等待远端设备对UDP服务请求作出的响应,如果远端设备没有开启请求的UDP服务,便会返回UDP服务不可达报文,该UDP服务不可达报文为ICMP报文,由于UDP模块无法接收ICMP报文,则用户进程只能持续挂起直到等待超过设定时间才能退出,在这段设定时间内发送端无法执行任何操作。其实,当远端设备没有开启请求的UDP服务时,远端设备已经返回了UDP服务不可达报文,只是由于发送端的UDP模块无法接收该报文,用户进程只能等待超过设定时间才能结束该UDP会话,而且在这段设定时间内发送端无法执行任何操作,这就造成了发送端不必要的时间浪费和资源浪费。

发明内容
本发明实施例提供一种获知UDP服务不可达的方法、装置及网络设备,用以解决·现有技术中存在由于发送端的UDP模块无法接收到UDP服务不可达报文,而造成的发送端不必要的时间浪费和资源浪费的问题。一种获知UDP服务不可达的方法,包括应用程序对应的用户进程向远端设备发起用户数据报文协议UDP会话后,UDP模块向互联网控制报文协议ICMP模块发送携带所述UDP会话的标识信息的监控UDP服务不可达请求消息,其中,所述监控UDP服务不可达请求消息是所述UDP模块接收到所述用户进程发送的UDP服务请求消息后发送的;所述ICMP模块接收到所述监控UDP服务不可达请求消息后,向所述UDP模块返回监控UDP服务不可达响应消息,监控接收到的ICMP报文;所述UDP模块接收所述监控UDP服务不可达响应消息;所述ICMP模块监控到所述远端设备发送的携带所述标识信息的UDP服务不可达报文后,向所述UDP模块发送携带所述标识信息的UDP服务不可达通知消息;所述UDP模块接收到所述UDP服务不可达通知消息后,通知所述用户进程请求的UDP服务不可达。一种获知UDP服务不可达的装置,包括用户数据报文协议UDP模块和互联网控制报文协议ICMP模块,其中所述UDP模块,用于应用程序对应的用户进程向远端设备发起UDP会话后,向所述ICMP模块发送携带所述UDP会话的标识信息的监控UDP服务不可达请求消息,其中,所述监控UDP服务不可达请求消息是所述UDP模块接收到所述用户进程发送的UDP服务请求消息后发送的;接收所述ICMP模块发送的监控UDP服务不可达响应消息;以及接收到所述ICMP模块发送的UDP服务不可达通知消息后,通知所述用户进程请求的UDP服务不可达;所述ICMP模块,用于接收到所述监控UDP服务不可达请求消息后,向所述UDP模块返回监控UDP服务不可达响应消息,监控接收到的ICMP报文;以及监控到所述远端设备发送的携带所述标识信息的UDP服务不可达报文后,则向所述UDP模块发送携带所述标识信息的UDP服务不可达通知消息。一种网络设备,包括上述获知UDP服务不可达的装置。
本发明有益效果如下本发明实施例提供的获知UDP服务不可达的方法、装置及网络设备,通过应用程序对应的用户进程向远端设备发起用户数据报文协议UDP会话后,UDP模块向互联网控制报文协议ICMP模块发送携带所述UDP会话的标识信息的监控UDP服务不可达请求消息,其中,所述监控UDP服务不可达请求消息是所述UDP模块接收到所述用户进程发送的UDP服务请求消息后发送的;所述ICMP模块接收到所述监控UDP服务不可达请求消息后,向所述UDP模块返回监控UDP服务不可达响应消息,监控接收到的ICMP报文;所述UDP模块接收所述监控UDP服务不可达响应消息;所述ICMP模块监控到所述远端设备发送的携带所述标识信息的UDP服务不可达报文后,向所述UDP模块发送携带所述标识信息的UDP服务不可达通知消息;所述UDP模块接收到所述UDP服务不可达通知消息后,通知所述用户进程请求的m)P服务不可达。该方案中的UDP模块请求ICMP模块监控远端设备返回的UDP服务不可达报文,当ICMP模块接收到后,就可以通知UDP模块UDP服务不可达了,进而UDP模块可以通知用户进程请求的UDP服务不可达,用户进程可以结束该UDP会话,而且还可以进行其 他操作,既节约了不必要的等待时间又可以充分利用资源,从而避免了现有技术中由于无法接收到UDP服务不可达报文,造成的时间浪费和资源浪费。


图I为现有的TCP/IP协议系统的结构示意图;图2为现有的IP报文在TCP/IP协议系统中的走向示意图;图3为现有的UDP报文和对应的服务不可达的ICMP响应报文的格式;图4为本发明实施例中获知UDP服务不可达的方法的流程图;图5为本发明实施例中IP报文在TCP/IP协议系统中的走向示意图;图6为本发明实施例中获知UDP服务不可达的装置的结构示意图。
具体实施例方式针对现有技术中存在的由于发送端的UDP模块无法接收到UDP服务不可达报文,而造成的发送端不必要的时间浪费和资源浪费的问题,本发明实施例提供的获知UDP服务不可达的方法,该方法的流程如图4所示,具体执行步骤如下S40 :应用程序对应的用户进程向远端设备发起UDP会话后,UDP模块接收用户进程发送的UDP服务请求消息。发送端上的应用程序启动后,应用程序对应的用户进程可以向远端设备发起UDP会话,来请求远端设备提供UDP服务,其中发送端可以是客户端,也可以是服务器端。应用进程首先会向UDP模块申请会话资源,包括创建套接字和分配缓存空间,申请会话资源的过程与现有技术相同,在这里不再赘述。当UDP模块为用户进程分配会话资源后,用户进程就可以通过分配的会话资源向UDP模块发送UDP服务请求消息了。S41 =UDP模块向ICMP模块发送携带UDP会话的标识信息的监控UDP服务不可达请求消息。UDP模块接收到用户进程发送的UDP服务请求消息后,可以向ICMP模块发送监控UDP服务不可达请求消息,请求ICMP模块来监控远端设备返回的UDP服务不可达报文,因为如果远端设备没有打开用户进程请求的UDP服务时,会返回UDP服务不可达报文,该UDP服务不可达报文是ICMP报文,会直接反馈到ICMP模块。S42 =ICMP模块接收到监控UDP服务不可达请求消息后,向UDP模块返回监控UDP服务不可达响应消息。S43 :监控接收到的ICMP报文,若监控到远端设备发送的携带标识信息的UDP服务不可达报文,执行S44。S44 向UDP模块发送携带标识信息的UDP服务不可达通知消息。 S45 =UDP模块接收UDP服务不可达响应消息,并在接收到UDP服务不可达通知消息后,通知用户进程请求的UDP服务不可达。如图5所示,该方案相对于现有技术增加了 UDP模块与ICMP模块之间的交互过程,UDP模块请求ICMP模块监控远端设备返回的UDP服务不可达报文,当ICMP模块接收到后,就可以通知UDP模块UDP服务不可达了,进而UDP模块可以通知用户进程请求的UDP服务不可达,用户进程可以结束该UDP会话,而且还可以进行其他操作,既节约了不必要的等待时间又可以充分利用资源,从而避免了现有技术中由于无法接收到UDP服务不可达报文,而造成的时间浪费和资源浪费。较佳的,上述S42中的ICMP模块接收到监控UDP服务不可达请求消息之后,还包括将标识信息添加到监控链表或监控队列中,其中,监控链表或监控队列记录的是需要监控的m)P会话。为了能够同时监控多个UDP会话,可以在ICMP模块中设置监控链表或监控队列,将UDP会话的标识信息添加到监控链表或者监控队列中,就可以监控远端设备是否针对用户进程请求的UDP服务返回了 UDP服务不可达报文了,当然也可以采用其他方式,这里不再赘述。具体的,上述S43中监控接收到的ICMP报文,具体包括将接收到的ICMP报文的标识信息与监控链表或监控队列中的标识信息进行匹配。当ICMP模块接收到ICMP报文时,可以将接收到的ICMP报文的标识信息与监控链表或者监控队列中的标识信息进行匹配,当匹配上时,也就是说监控链表或者监控队列中存储有接收到的ICMP报文的标识信息时,可以确定是远端设备返回的UDP服务不可达报文,需要通知给对应的UDP模块请求的UDP服务不可达。较佳的,上述获知UDP服务不可达的方法,还包括UDP会话结束后,删除监控链表或监控队列中的UDP会话的标识信息。为了节约资源,及时释放不再使用的资源信息,当UDP会话无论什么原因结束时,ICMP模块都要删除监控链表或者监控队列中的标识信息。具体的,上述UDP会话的标识信息包括源端口、目的端口、源互联网协议IP地址和目的IP地址。在对UDP模块请求的UDP服务进行监控时,需要可以唯一标识的UDP会话的标识信息,一个UDP会话一般可以由源端口、目的端口、源IP、目的IP唯一标识,那么,可以采用该4元组来监控UDP服务不可达。当然也可以采用现有技术在4元组的基础上增加几个信息来唯一标识UDP会话,这里不再赘述。
基于同一发明构思,本发明实施例提供一种获知UDP服务不可达的装置,该装置可以设置在网络设备中,结构如图6所示,包括UDP模块60和ICMP模块61,其中上述UDP模块60,用于应用程序对应的用户进程向远端设备发起UDP会话后,向ICMP模块61发送携带UDP会话的标识信息的监控UDP服务不可达请求消息,其中,监控UDP服务不可达请求消息是UDP模块60接收到用户进程发送的UDP服务请求消息后发送的;接收ICMP模块61发送的监控UDP服务不可达响 应消息;以及接收到ICMP模块61发送的UDP服务不可达通知消息后,通知用户进程请求的UDP服务不可达。上述ICMP模块61,用于接收到监控UDP服务不可达请求消息后,向UDP模块60返回监控UDP服务不可达响应消息,监控接收到的ICMP报文;以及若监控到远端设备发送的携带标识信息的UDP服务不可达报文,则向UDP模块发送携带标识信息的UDP服务不可达通知消息。较佳的,上述ICMP模块61,还用于将标识信息添加到监控链表或监控队列中,其中,监控链表或监控队列记录的是需要监控的UDP会话;具体的,上述ICMP模块61,具体将接收到的ICMP报文的标识信息与监控链表或监控队列中的标识信息进行匹配。较佳的,上述ICMP模块61,还用于UDP会话结束后,删除监控链表或监控队列中的UDP会话的标识信息。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种获知UDP服务不可达的方法,其特征在于,包括 应用程序对应的用户进程向远端设备发起用户数据报文协议UDP会话后,UDP模块向互联网控制报文协议ICMP模块发送携带所述UDP会话的标识信息的监控UDP服务不可达请求消息,其中,所述监控UDP服务不可达请求消息是所述UDP模块接收到所述用户进程发送的UDP服务请求消息后发送的; 所述ICMP模块接收到所述监控UDP服务不可达请求消息后,向所述UDP模块返回监控UDP服务不可达响应消息,监控接收到的ICMP报文; 所述UDP模块接收所述监控UDP服务不可达响应消息; 所述ICMP模块监控到所述远端设备发送的携带所述标识信息的UDP服务不可达报文后,向所述UDP模块发送携带所述标识信息的UDP服务不可达通知消息; 所述UDP模块接收到所述UDP服务不可达通知消息后,通知所述用户进程请求的UDP服务不可达。
2.如权利要求I所述的方法,其特征在于,所述ICMP模块接收到所述监控UDP服务不可达请求消息之后,还包括 将所述标识信息添加到监控链表或监控队列中,其中,所述监控链表或监控队列记录的是需要监控的UDP会话。
3.如权利要求2所述的方法,其特征在于,监控接收到的ICMP报文,具体包括 将接收到的ICMP报文的标识信息与所述监控链表或监控队列中的标识信息进行匹配。
4.如权利要求2所述的方法,其特征在于,还包括 所述UDP会话结束后,删除所述监控链表或监控队列中的所述UDP会话的标识信息。
5.如权利要求1-4任一所述的方法,其特征在于,所述UDP会话的标识信息包括源端口、目的端口、源互联网协议IP地址和目的IP地址。
6.一种获知UDP服务不可达的装置,其特征在于,包括用户数据报文协议UDP模块和互联网控制报文协议ICMP模块,其中 所述UDP模块,用于应用程序对应的用户进程向远端设备发起UDP会话后,向所述ICMP模块发送携带所述UDP会话的标识信息的监控UDP服务不可达请求消息,其中,所述监控UDP服务不可达请求消息是所述UDP模块接收到所述用户进程发送的UDP服务请求消息后发送的;接收所述ICMP模块发送的监控UDP服务不可达响应消息;以及接收到所述ICMP模块发送的UDP服务不可达通知消息后,通知所述用户进程请求的UDP服务不可达; 所述ICMP模块,用于接收到所述监控UDP服务不可达请求消息后,向所述UDP模块返回监控UDP服务不可达响应消息,监控接收到的ICMP报文;以及监控到所述远端设备发送的携带所述标识信息的UDP服务不可达报文后,则向所述UDP模块发送携带所述标识信息的UDP服务不可达通知消息。
7.如权利要求6所述的装置,其特征在于,所述ICMP模块,还用于 将所述标识信息添加到监控链表或监控队列中,其中,所述监控链表或监控队列记录的是需要监控的UDP会话。
8.如权利要求7所述的装置,其特征在于,所述ICMP模块用于监控接收到的ICMP报文,具体为所述ICMP模块用于将接收到的ICMP报文的标识信息与所述监控链表或监控队列中的标识信息进行匹配。
9.如权利要求6所述的装置,其特征在于,所述ICMP模块,还用于 所述UDP会话结束后,删除所述监控链表或监控队列中的所述UDP会话的标识信息。
10.一种网络设备,其特征在于,包括如权利要求6-9所述的任一获知UDP服务不可达的装置。
全文摘要
本发明公开了一种获知UDP服务不可达的方法、装置及网络设备,包括应用程序对应的用户进程向远端设备发起UDP会话后,UDP模块向ICMP模块发送携带UDP会话的标识信息的监控UDP服务不可达请求消息;ICMP模块接收到监控UDP服务不可达请求消息后,向UDP模块返回监控UDP服务不可达响应消息,监控接收到的ICMP报文;UDP模块接收监控UDP服务不可达响应消息;ICMP模块监控到远端设备发送的携带标识信息的UDP服务不可达报文,则向UDP模块发送携带标识信息的UDP服务不可达通知消息;UDP模块接收到UDP服务不可达通知消息后,通知用户进程UDP服务不可达。该方案节约了不必要的等待时间充分利用资源。
文档编号H04L29/08GK102843373SQ20121031128
公开日2012年12月26日 申请日期2012年8月28日 优先权日2012年8月28日
发明者龙黎江 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1