专利名称:一种防火墙穿越方法、系统和设备的制作方法
技术领域:
本发明涉及通信领域,特别涉及一种防火墙穿越方法、系统和设备。
背景技术:
P2P (Peer to Peer,对等网络)中,当需要进行相互通信的节点均位于各自的防火墙之 后,且防火墙采用了状态检测等数据包深层分析技术对进出防火墙的数据包的内容进行检测 时,例如很多防火墙会限制防火墙外的SYN (Synchronize, —种非常小的数据包)的主动进 入,此时上述网络拓扑结构中通信的访问方和通信的被访问方之间由于无法完成TCP (Transmission Control Protocol,传输控制协议)的三次握手导致无法建立TCP连接,从 而影响了通信。因此,必须要解决P2P网络节点穿越防火墙建立端到端连接的问题。
目前,现有技术提供了一种VoIP (Voice over IP ,以数据包的方式传输语音的IP协议) 应用穿越防火墙的方法,该方法采用了TCP隧道技术,即利用部署在Intemet上的代理服务器, 将VoIP客户端的UDP (User Datagram Protocol,用户数据报协议)数据包转换为TCP数据包 后发送给VoIP服务器。在Internet服务器旁设置代理服务器;当客户端和服务器都在Internet 上时,直接通过VoIP实现网络数据的传送;当VoIP服务器在Internet上而VoIP客户端是通过 NAT (Network Address Translation,网络地址转换)或防火墙联入Internet时,首先在VoIP 客户端与代理服务器之间建立TCP隧道,然后由代理服务器代理发送和接收VoIP客户端的UDP 数据包,从而实现VoIP服务器和代理服务器之间直接收发数据。
发明人在实现本发明的过程中发现,该方法没有解决通信的节点之间建立TCP连接的问 题。当VoIP客户端和代理服务器均在NAT或防火墙之后时,利用该方法无法建立VoIP客户端和 Internet服务器通信双方之间的TCP连接。
现有技术还提供了一种利用UDP隧道穿越防火墙的方法,该方法在防火墙或NAT设备端部 署UDP隧道客户端UTC (UDP Tunnel Client) 、 UDP隧道服务器UTS (UDP Tunnel Server), 以及用户数据包协议,并利用UDP隧道客户端UTC和UDP隧道服务器UTS在终端之间建立UDP隧 道。终端发送应用层数据(协议数据),UTC接收应用层数据,将应用层数据封装成UDP数据 包,然后通过UDP隧道进行发送;当UTS接收到UDP数据包后,对接收到的UDP数据包进行解封装,将解封装得到的应用层数据发送给服务器。
发明人在实现本发明的过程中发现,该方法当终端和服务器通信双方都位于防火墙(尤 其是状态检测防火墙)之后时,无法实现相互通信。
发明内容
为了使位于状态检测防火墙后的通信节点间能够实现相互通信,本发明实施例提供了一 种防火墙穿越方法、系统和设备。所述技术方案如下 其中, 一种防火墙穿越方法,所述方法包括 获取对端节点的IP地址和端口号;
根据所述对端节点的IP地址和端口号将待发送的数据封装为IP隧道包,使所述IP隧道 包穿越对端节点的防火墙;
向所述对端节点发送所述IP隧道包。
本发明实施例还提供了一种防火墙穿越系统,所述系统包括第一节点和第二节点; 所述第一节点用于获取所述第二节点的IP地址和端口号;根据所述对端节点的IP地址 和端口号将待发送的数据封装为IP隧道包,发送所述IP隧道包;
所述第二节点用于接收所述第一节点发送的IP隧道包,对所述IP隧道包解封装得到所 述待发送的数据。
本发明实施例还提供了一种防火墙穿越系统,所述系统包括
第一节点、第一节点代理客户端、第二节点代理服务器和第二节点
第一节点,用于获取所述第二节点的IP地址和端口号,以及发送数据,所述数据携带所
述IP地址和端口号;
第一节点代理客户端,用于接收所述第一节点发送的数据,将所述数据封装为IP隧道包, 发送所述IP隧道包;
第二节点代理服务器,用于接收所述第一节点代理客户端发送的IP隧道包,对所述IP 隧道包解封装,得到所述第一节点发送的数据,发送所述解封装后的数据;
第二节点,用于接收所述第二节点代理服务器解封装后的数据,得到所述第一节点发送 的数据。
本发明实施例还提供了一种节点设备,所述节点设备包括 获取模块,用于获取对端节点的IP地址和端口号;
封装模块,用于根据所述获取模块获取的IP地址和端口号将待发送的数据封装为IP隧道包,使所述IP隧道包穿越对端节点的防火墙;
发送模块,用于发送所述封装模块封装的IP隧道包。 本发明实施例提供的技术方案的有益效果是
通过对待发送的数据进行封装,添加IP头和UDP头得到IP隧道包,该IP隧道包将能够 穿越对端的防火墙,使位于防火墙之后的通信节点也可以完成双向连接和通信。
图1是本发明实施例1提供的防火墙穿越的组网示意图; 图2是本发明实施例1提供的防火墙穿越的方法流程图; 图3是本发明实施例2提供的防火墙穿越的组网示意图; 图4是本发明实施例2提供的防火墙穿越的方法流程图; 图5是本发明实施例3提供的防火墙穿越的系统示意图; 图6是本发明实施例4提供的防火墙穿越的系统示意图; 图7是本发明实施例5提供的节点设备示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进 一步地详细描述.
本发明实施例通过获取对端节点的IP地址和端口号;根据对端节点的IP地址和端口号 将待发送的数据封装为IP隧道包,使IP隧道包穿越对端节点的防火墙,从而实现在P2P网 络中位于防火墙后的通信节点间的通信。
其中,将待发送的数据封装为IP隧道包时采用在待发送的数据中添加IP头和UDP头方 式进行封装,得到IP隧道包,其中,IP头和UDP头为预先开通UDP通道的UDP报文的协议 头(包括源端口、目的端口、校验和、长度等字段),该IP隧道包能够穿越对端节点的防 火墙。
实施例l
参见图l,为本发明实施例提供的防火墙穿越的组网示意图。以图1中,作为访问方的节 点A和作为被访问方的节点B进行相互通信为例,为了实现方便,本实施例在节点A和节点 B之间预先设置防火墙穿越代理(FTP, Firewall Traversal Proxy),节点A和节点B通过 FTP获取对端的IP地址和端口号,其中,FTP只需要拥有一个静态、全局IP地址,可以具体
8为一个具有公网IP地址的单独的服务器或路由器等设备;也可以将其功能集成在网络中现有 的服务器或路由器等设备上,但是要保证和访问方、被访问方之间能够进行无障碍通信。参
见图2,本实施例以IP请求数据包作为待发送的数据为例,该方法具体步骤如下
步骤101:节点A和节点B分别向FTP上报自身的IP地址和端口号。
步骤102: FTP收到节点A和节点B上报的IP地址和端口号后,进行保存,并分别向节 点A和节点B返回对端的IP地址和端口号。
步骤103:节点A和节点B收到对端的IP地址和端口号后,通过UDP掘孔技术开通双向 UDP通道,开通双向通道的具体步骤如下
节点A和节点B同时向对端发送UDP报文;例如,可以通过FTP相互通知发送UDP报文 的时间,实现双方几乎同时发送UDP报文;
以节点A向节点B发送UDP报文为例,其中该UDP报文中的源IP地址和端口号为节点A 的IP地址和端口号,目的IP地址和端口号为节点B的IP地址和端口号;
当节点A的防火墙收到由节点A发送来的UDP报文时,记录UDP报文中携带的节点B的 IP地址和端口号,然后向节点B发送该UDP报文;
当节点B的防火墙收到由节点A发送来的UDP报文时,检査自身是否记录过该UDP报文 中携带的源IP地址和端口号,即节点A的IP地址和端口号,如果有,则允许该UDP报文通 过,将该UDP报文发送到节点B。
同理,以节点B向节点A发送UDP报文的过程也类似,如果节点A的防火墙在收到由节 点B发送来的UDP报文时,检査自身是否记录过该UDP报文中携带的节点B的IP地址和端口 号,如果有,则允许该UDP报文通过,将该UDP报文发送到节点A。
如果当前节点A或节点B的防火墙没有记录对端的IP地址和端口号,将不会开通UDP双 向通道,将会通过下一次发送的UDP报文开通。
所述的UDP掘孔技术(UDP Hole Punching)开通双向UDP通道的原理为如果想从防火 墙外部发送一个数据包给内网的计算机时,首先,必须在内网的防火墙上打上一个"洞"(也 就是说在防火墙上建立一个会话Session),这个洞不能由外部来打,只能由内网内的主机来 打。而且这个洞是有方向的,比如从内部某台主机(比如192. 168.0. 10)向外部的某个IP(比 如219.237.60. l)发送一个UDP包,那么就在这个内网的防火墙上打了 一个方向为 219. 237. 60. 1的"洞",这就是称为UDP Hole Punching的技术;以后219. 237. 60. 1就可 以通过这个洞与内网的192. 168. 0.10联系了,但是具有其他IP地址的数据包不能利用这个通过上述步骤101至步骤103后,在节点A和节点B各自的防火墙上建立了节点A和节点B的通信关系,当节点A和节点B进行通信时,可以直接利用UDP通道实现穿越防火墙,本实施例以节点A向节点B发送IP请求数据包为例,具体过程参见步骤104至步骤106。
步骤104:节点A通过将待发送的IP请求数据包添加IP头和UDP协议头后,封装得到IP隧道包。
其中,该IP隧道包的IP头和UDP协议头为已开通的UDP通道的UDP报文的协议头。
步骤105:节点A将IP隧道包向节点B发送,节点A的防火墙收到来自节点A的IP隧道包后,将该IP隧道包转发。
步骤106:节点B的防火墙收到来自节点A的IP隧道包后,检查自身记录有该IP隧道包的协议头中携带的源IP地址和端口号后,将该IP隧道包转发到节点B。
如果节点B的防火墙检查自身没有记录该IP隧道包的协议头中携带的源IP地址和端口号,则该IP隧道包不合法,直接将该IP隧道包丢弃;本实施例以检査通过为例进行说明。
步骤107:节点B收到通过自身防火墙的IP隧道包后,进行解封装得到IP请求数据包。
上述步骤成功完成了节点A向节点B发送IP请求数据包的通信,同理,节点B也可以通过开通的UDP通道完成向节点A返回IP响应数据包的通信,这里不再赘述。
其中,本发明实施例节点A和节点B获取对端IP地址和端口号的方式不限制于通过FTP获取,还可以是通过现有技术中提供的其他获取方式实现,例如节点A和节点B向网管获取等。
本发明实施例中开通UDP通道时,节点A和节点B同时向对端发送UDP报文时,也不限制于通过FTP相互通知发送UDP报文的时间,实现双方几乎同时发送UDP报文的方式,还可以是通过现有技术中提供的其他方式实现,例如通过网管控制节点A和节点B,实现双方几乎同时发送UDP报文等。
本领域技术人员可以知道,通过本发明实施例提供的防火墙穿越方法同样适用于穿越NAT,对网络拓扑及部署没有任何要求。
本发明实施例提供的方法通过对待发送的数据进行封装,添加IP头和UDP头得到IP隧道包,该IP隧道包通过添加的UDP头隐藏了原来的传输层协议信息,将能够穿越对端的防火墙,即使该防火墙开通了状态检测,使位于防火墙之后的通信节点也可以完成双向连接和通信;同时,封装后的IP隧道包保持了原来应用程序的特性,因而应用程序无需额外操作,简化了解封装时的操作过程。
实施例2
10参见图3,为本发明实施例提供的防火墙穿越的组网示意图。与图1提供的组网结构相比,图3中的节点A和节点B的附近分别部署了IPC (IP Tunnel Client, IP隧道代理客户)和IPS (IP Tunnel Server, IP隧道代理服务器),以节点A和节点B进行相互通信为例,参见图4,本实施例以IP请求数据包作为待发送的数据为例,该方法具体步骤如下
步骤201:节点A和节点B分别向FTP上报自身的IP地址和端口号。
步骤202: FTP收到节点A和节点B上报的IP地址和端口号后,进行保存,并分别向节点A和节点B返回对端的IP地址、端口号以及会话标识SID。
其中,该会话标识SID为FTP预先保存的,用于节点A和节点B进行相互通信。
步骤203:节点A和节点B收到对端的IP地址和端口号后,通过UDP掘孔技术开通双向UDP通道。具体步骤如下
节点A的IPC和节点B的IPC同时向对端发送UDP报文;例如,可以通过FTP相互通知发送UDP报文的时间,实现双方几乎同时发送UDP报文;
以节点A的IPC向节点B发送UDP报文为例,其中该UDP报文中的源IP地址和端口号为节点A的IP地址和端口号,目的IP地址和端口号为节点B的IP地址和端口号;
当节点A的防火墙收到由节点A的IPC发送来的UDP报文时,记录UDP报文中携带的节点B的IP地址和端口号,然后向节点B发送该UDP报文;
当节点B的防火墙收到由节点A发送来的UDP报文时,检查自身是否记录过该UDP报文中携带的源IP地址和端口号,即节点A的IP地址和端口号,如果有,则允许该UDP报文通过,将该UDP报文发送到节点B的IPS。
同理,节点B向节点A发送UDP报文的过程也类似,如果节点A的防火墙在收到由节点B的IPC发送来的UDP报文时,检查自身是否记录过该UDP报文中携带的节点B的IP地址和端口号,如果有,则允许该UDP报文通过,将该UDP报文发送到节点A的IPS。
该过程是在节点A和节点B各自的IPC和IPS之间进行的,即穿越防火墙的是IPC和IPS,而对于节点A和节点B的应用程序来说是完全透明。
其中,上述通过UDP掘孔技术开通双向UDP通道是以节点A的IPC和节点B的IPC相互发送UDP报文为例的,开通双向UDP通道的过程也可以与实施例1提供的方法一样由节点A和节点B互相发送UDP报文实现,这里不再详述。
通过上述步骤201至步骤203后,在节点A和节点B各自的防火墙上建立了节点A和节点B的通信关系,当节点A和节点B间进行通信时,可以直接利用UDP通道实现穿越防火墙,本实施例以节点A向节点B发送IP请求数据包为例,具体过程参见步骤204至步骤209。步骤204:节点A通过将待发送的IP请求数据包发送到节点A的IPC,节点A的IPC将该IP请求数据包添加IP头和UDP协议头,封装得到IP隧道包,并在该IP隧道包中标记会话标识SID。
其中,该IP隧道包的IP头和UDP协议头为已开通的UDP通道的UDP的协议头。
步骤205:节点A的IPC将IP隧道包向节点B发送,节点A的防火墙收到来自节点A的IPC的IP隧道包后,转发该IP隧道包。
步骤206:节点B的防火墙收到来自节点A的IP隧道包后,检查通过后,将该IP隧道包转发到节点B的IPS。
此处,节点B的防火墙收到来自节点A的IP隧道包后,检査自身是否记录过该IP隧道包中的源IP地址和端口号,即节点A的IP地址和端口号,如果记录过,则检查通过;将该IP隧道包转发到节点B的IPS;否则,检查不通过,丢弃该将该IP隧道包。本实施例以检査通过为例进行说明。
步骤207:节点B的IPS收到通过自身防火墙的IP隧道包后,判断是否能查找到会话标识SID,如果能够査找到会话标识SID,则执行步骤208;否则,执行步骤209。
步骤208:节点B的IPS解封装IP隧道包,得到节点A发送的IP请求数据包,并将该IP请求数据包发送到节点B。
步骤209:节点B的IPS根据自身配置处理该IP隧道包。
其中,节点B的IPS根据自身的配置,对于没有携带会话标识的IP隧道包可以进行如下处理
当IPS自身的配置为将接收到的所有数据包转发到节点B时,将没有携带会话标识的IP隧道包转发给节点B;
当IPS自身的配置为只转发携带会话标识的IP隧道包时,将丢弃没有携带会话标识的IP隧道包。
上述步骤成功完成了节点A向节点B发送IP请求数据包的通信,同理,节点B也可以通过开通的UDP通道完成向节点A返回IP响应数据包的通信。
其中,本发明实施例节点A和节点B获取对端IP地址和端口号的方式不限制于通过FTP获取,还可以是通过现有技术中提供的其他获取方式实现,例如节点A和节点B向网管获取等。
并且本发明实施例中,获取会话标识SID的方式,不限制于通过FTP获取的方式,还可以是通过由数据发送方的节点添加预先与数据接收方协商的会话标识SID实现。
12本发明实施例提供的技术方案由于是对整个IP数据包进行封装,因此在网络中通信节点的各自IPC和IPS仅需要对添加的IP头和UDP头进行处理,无需关注原IP数据包,通过添加会话标识SID使得接收方的IPS能够很容易判断出该数据包的内容是封装后的IP隧道包还是原始IP数据包,使得解封装的开销大大减小;通过开通UDP通道,当对等网络中通信节点均位于防火墙之后时,也可以实现穿越防火墙,从而完成通信节点间的双向连接和通信。
实施例3
参见图5,为本发明实施例提供的防火墙穿越系统,系统包括
第一节点,用于获取第二节点的IP地址和端口号;根据对端节点的IP地址和端口号将待发送的数据封装为IP隧道包,发送IP隧道包;
第二节点,用于接收第一节点发送的IP隧道包,对IP隧道包解封装得到待发送的数据。其中,第一节点包括
获取模块,用于获取第二节点的IP地址和端口号;
封装模块,用于根据获取模块获取的IP地址和端口号为待发送的数据添加IP头和用户数据报协议头,封装为IP隧道包,IP头和用户数据报协议头为预先开通用户数据报协议通道的用户数据报协议报文的协议头;
会话标识添加模块,用于在封装模块封装的IP隧道包中添加会话标识;
相应地,第二节点具体包括
接收模块,用于接收IP隧道包;
判断模块,用于判断接收模块接收到的IP隧道包中是否携带会话标识;处理模块,用于当判断模块判断的结果是IP隧道包中携带会话标识时,去掉IP隧道包中的IP头和用户数据报协议头,得到待发送的数据。本发明实施例提供的防火墙穿越系统还包括
防火墙穿越代理,用于保存第一节点和第二节点上报的IP地址和端口号;相应地;
第一节点还用于向防火墙穿越代理上报自身的IP地址和端口号,以及通过防火墙穿越代理获取第二节点的IP地址和端口号;
第二节点还用于向防火墙穿越代理上报自身的IP地址和端口号,以及通过防火墙穿越代理获取第一节点的IP地址和端口号。
同理,第二节点也可以穿越防火墙向第一节点发送数据,从而实现两节点间的双向连接
13和通信。
本发明实施例提供的系统中的第一节点通过预先开通的UDP通道封装数据,得到IP隧道包,当对端节点(即第二节点)位于防火墙之后时,该IP隧道包也可以穿越对端节点的防火墙,从而实现第一节点与第二节点连接和通信;同时,当IP隧道包携带会话标识时,可以使第二节点能够容易地判断出该IP隧道包是否为封装后的数据包,进而进行解封装,减小了解封装的开销。
实施例4
参见图6,为本发明实施例提供的防火墙穿越系统,系统包括
第一节点,用于获取第二节点的IP地址和端口号,以及发送数据,数据携带IP地址和端口号;
第一节点代理客户端,用于接收第一节点发送的数据,将数据封装为IP隧道包,发送IP隧道包;
第二节点代理服务器,用于接收第一节点代理客户端发送的IP隧道包,对IP隧道包解封装,得到第一节点发送的数据,发送解封装后的数据;
第二节点,用于接收第二节点代理服务器解封装后的数据,得到第一节点发送的数据。其中,第一节点代理客户端包括
封装模块,用于接收第一节点发送的数据,根据数据中的IP地址和端口号为数据添加IP头和用户数据报协议头,封装为IP隧道包,IP头和用户数据报协议头为预先开通用户数据报协议通道的用户数据报协议报文的协议头;
会话标识添加模块,用于在封装模块封装的IP隧道包中添加会话标识;
相应地,第二节点代理服务器具体包括
接收模块,用于接收第一节点代理客户端发送的IP隧道包;判断模块,用于判断接收模块接收到的IP隧道包中是否携带会话标识;处理模块,用于当判断模块判断的结果是IP隧道包中携带会话标识时,去掉IP隧道包中的IP头和用户数据报协议头,得到第一节点发送的数据,发送所得到的数据。本发明实施例提供的防火墙穿越系统还包括
防火墙穿越代理,用于保存第一节点和第二节点上报的IP地址和端口号;相应地;
第一节点还用于向防火墙穿越代理上报自身的IP地址和端口号,以及通过防火墙穿越代理获取第二节点的IP地址和端口号;
第二节点还用于向防火墙穿越代理上报自身的IP地址和端口号,以及通过防火墙穿越代理获取第一节点的IP地址和端口号。
同理,第二节点也可以穿越防火墙向第一节点发送数据,从而实现两节点间的双向连接和通信。
本发明实施例提供的系统中的第一节点通过预先开通的UDP通道中使用的UDP报文的协议头进行数据封装,得到IP隧道包,第二节点代理服务器仅需要对封装的IP头和UDP头进行解封装处理,无需关注原IP数据包,使得解封装的开销大大减小。当对等网络中通信节点均位于防火墙之后时,通过将数据包封装成IP隧道包,也可以实现穿越防火墙,从而完成通信节点间的双向连接和通信。
实施例5
参见图7,为本发明实施例提供的一种节点设备,设备包括获取模块,用于获取对端节点的IP地址和端口号;
封装模块,用于根据获取模块获取的IP地址和端口号将待发送的数据封装为IP隧道包,使IP隧道包穿越对端节点的防火墙;
发送模块,用于发送封装模块封装的IP隧道包。进一步地,封装模块包括
封装单元,根据获取模块获取的IP地址和端口号为待发送的数据添加IP头和用户数据报协议头,封装为IP隧道包,IP头和用户数据报协议头为预先开通用户数据报协议通道的用户数据报协议报文的协议头 ,
会话标识添加单元,用于在封装单元封装的IP隧道包中添加会话标识。
节点设备还包括
接收模块,用于接收对端节点发送的IP隧道包;
解封装模块,用于将接收模块接收的IP隧道包解封装,得到对端节点发送的数据。本发明实施例提供的节点设备,通过预先开通的UDP通道中使用的UDP报文的协议头进行数据封装,得到IP隧道包,当对端节点位于防火墙之后时,IP隧道包也可以穿越防火墙,完成对端节点间的连接和通信;同时,当收到对端节点发送的IP隧道包时,通过解封装获取IP隧道包中的数据。
15以上实施例提供的技术方案通过对待发送的数据进行封装,添加IP头和UDP头得到IP 隧道包,该IP隧道包能够穿越对端的防火墙,使位于防火墙之后的通信节点也可以完成双向 连接和通信。
本发明实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序 存储在可读取的存储介质中,存储介质例如计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之 内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1. 一种防火墙穿越方法,其特征在于,所述方法包括获取对端节点的IP地址和端口号;根据所述对端节点的IP地址和端口号将待发送的数据封装为IP隧道包,使所述IP隧道包穿越对端节点的防火墙;向所述对端节点发送所述IP隧道包。
2. 如权利要求1所述的防火墙穿越方法,其特征在于,所述根据所述对端节点的IP地 址和端口号将待发送的数据封装为IP隧道包的步骤之前还包括本端节点开通与对端节点间 的用户数据报协议通道。
3. 如权利要求2所述的防火墙穿越方法,其特征在于,所述本端节点开通与对端节点间 的用户数据报协议通道的步骤包括所述本端节点发送用户数据报协议报文,所述用户数据报协议报文的源IP地址和源端口 为本端节点的IP地址和端口号,目的IP地址和目的端口号为所述对端节点的IP地址和端口 号;所述本端节点的防火墙收到所述用户数据报协议报文后,记录所述用户数据报协议报文 的目的IP地址和目的端口号,向所述对端节点的防火墙发送用户数据报协议报文;所述对端节点的防火墙收到所述用户数据报协议报文后,检査自身是否记录过所述用户 数据报协议报文的源IP地址和源端口号,如果是,允许所述用户数据报协议报文通过。
4. 如权利要求1所述的防火墙穿越方法,其特征在于,所述获取对端节点的IP地址和 端口号的步骤之前还包括本端节点和对端节点预先向防火墙穿越代理上报自身的IP地址和端口号; 相应地,所述获取对端节点的IP地址和端口号是从所述防火墙穿越代理获取的。
5. 如权利要求1所述的防火墙穿越方法,其特征在于,所述方法还包括 所述对端节点收到所述IP隧道包后,对所述IP隧道包解封装得到所述待发送的数据。
6. 如权利要求5所述的防火墙穿越方法,其特征在于,所述IP隧道包携带会话标识; 相应地,所述对所述IP隧道包解封装得到所述待发送的数据的步骤具体包括 所述对端节点根据所述会话标识判断出所述IP隧道包为封装后的IP包,去掉所述IP隧道包中的IP头和用户数据报协议头,得到所述待发送的数据,所述IP头和用户数据报协议 头为封装IP隧道包时添加的,为预先开通用户数据报协议通道的用户数据报协议报文的协议 头。
7. 如权利要求6所述的防火墙穿越方法,其特征在于,所述会话标识为所述本端节点预 先与所述对端节点协商的标识,或者,所述会话标识为所述本端节点预先向防火墙穿越代理 获取的标识。
8. —种防火墙穿越系统,其特征在于,所述系统包括第一节点和第二节点; 所述第一节点用于获取所述第二节点的IP地址和端口号;根据所述对端节点的IP地址和端口号将待发送的数据封装为IP隧道包,发送所述IP隧道包;所述第二节点用于接收所述第一节点发送的IP隧道包,对所述IP隧道包解封装得到所 述待发送的数据。
9. 如权利要求8所述的防火墙穿越系统,其特征在于,所述第一节点包括 获取模块,用于获取所述第二节点的IP地址和端口号;封装模块,用于根据所述获取模块获取的IP地址和端口号为待发送的数据添加IP头和 用户数据报协议头,封装为IP隧道包,所述IP头和用户数据报协议头为预先开通用户数据 报协议通道的用户数据报协议报文的协议头;会话标识添加模块,用于在所述封装模块封装的IP隧道包中添加会话标识;相应地,所述第二节点包括接收模块,用于接收所述IP隧道包;判断模块,用于判断所述接收模块接收到的所述IP隧道包中是否携带所述会话标识; 处理模块,用于当所述判断模块判断的结果是所述IP隧道包中携带所述会话标识时,去 掉所述IP隧道包中的IP头和用户数据报协议头,得到所述待发送的数据。
10. 如权利要求8所述的防火墙穿越系统,其特征在于,所述系统还包括防火墙穿越代理,用于保存所述第一节点和所述第二节点上报的IP地址和端口号; 相应地,所述第一节点还用于向所述防火墙穿越代理上报自身的IP地址和端口号,以及通过所述 防火墙穿越代理获取所述第二节点的IP地址和端口号;所述第二节点还用于向所述防火墙穿越代理上报自身的IP地址和端口号,以及通过所述防火墙穿越代理获取所述第一节点的IP地址和端口号。
11. 一种防火墙穿越系统,其特征在于,所述系统包括第一节点、第一节点代理客户端、 第二节点代理服务器和第二节点,所述第一节点用于获取所述第二节点的IP地址和端口号,以及发送数据,所述数据携带 所述IP地址和端口号;所述第一节点代理客户端用于接收所述第一节点发送的数据,将所述数据封装为IP隧道 包,发送所述IP隧道包;所述第二节点代理服务器用于接收所述第一节点代理客户端发送的IP隧道包,对所述 IP隧道包解封装,得到所述第一节点发送的数据,发送所述解封装后的数据;所述第二节点用于接收所述第二节点代理服务器解封装后的数据,得到所述第一节点发 送的数据。
12. 如权利要求11所述的防火墙穿越系统,其特征在于,所述第一节点代理客户端包括 封装模块,用于接收所述第一节点发送的数据,根据所述数据中的IP地址和端口号为所述数据添加IP头和用户数据报协议头,封装为IP隧道包,所述IP头和用户数据报协议头为预先开通用户数据报协议通道的用户数据报协议报文的协议头;会话标识添加模块,用于在所述封装模块封装的IP隧道包中添加会话标识;相应地,所述第二节点代理服务器具体包括接收模块,用于接收所述第一节点代理客户端发送的IP隧道包;判断模块,用于判断所述接收模块接收到的所述IP隧道包中是否携带所述会话标识;处理模块,用于当所述判断模块判断的结果是所述IP隧道包中携带所述会话标识时,去掉所述IP隧道包中的IP头和用户数据报协议头,得到所述第一节点发送的数据,发送所得到的数据。
13. 如权利要求ll所述的防火墙穿越系统,其特征在于,所述系统还包括 防火墙穿越代理,用于保存所述第一节点和所述第二节点上报的IP地址和端口号; 相应地,所述第一节点还用于向所述防火墙穿越代理上报自身的IP地址和端口号,以及通过所述 防火墙穿越代理获取所述第二节点的IP地址和端口号;所述第二节点还用于向所述防火墙穿越代理上报自身的IP地址和端口号,以及通过所述防火墙穿越代理获取所述第一节点的IP地址和端口号。
14. 一种节点设备,其特征在于,所述节点设备包括 获取模块,用于获取对端节点的IP地址和端口号;封装模块,用于根据所述获取模块获取的IP地址和端口号将待发送的数据封装为IP隧 道包,使所述IP隧道包穿越对端节点的防火墙;发送模块,用于发送所述封装模块封装的IP隧道包。
15. 如权利要求14所述的节点设备,其特征在于,所述封装模块包括封装单元,根据所述获取模块获取的IP地址和端口号为待发送的数据添加IP头和用户 数据报协议头,封装为IP隧道包,所述IP头和用户数据报协议头为预先开通用户数据报协 议通道的用户数据报协议报文的协议头;会话标识添加单元,用于在所述封装单元封装的IP隧道包中添加会话标识。
16. 如权利要求14所述的节点设备,其特征在于,所述节点设备还包括-接收模块,用于接收对端节点发送的IP隧道包;解封装模块,用于将所述接收模块接收的IP隧道包解封装,得到所述对端节点发送的数
全文摘要
本发明公开了一种防火墙穿越方法、系统和设备,属于通信领域。所述方法包括获取对端节点的IP地址和端口号;根据所述对端节点的IP地址和端口号将待发送的数据封装为IP隧道包,使所述IP隧道包穿越对端节点的防火墙;向所述对端节点发送所述IP隧道包。所述系统包括第一节点和第二节点;或第一节点、第一节点代理客户端、第二节点和第二节点代理服务器。节点设备包括获取模块、封装模块和发送模块。本发明对待发送的数据进行封装,添加IP头和UDP头得到IP隧道包,该IP隧道包将能够穿越对端的防火墙,从而完成通信节点间的连接和通信。
文档编号H04L29/06GK101465844SQ200710179799
公开日2009年6月24日 申请日期2007年12月18日 优先权日2007年12月18日
发明者周世杰, 峰 李, 梁丽娟, 秦志光, 罗嘉庆 申请人:华为技术有限公司;电子科技大学