CN101841484A - 一种在结构化p2p网络中实现nat穿越的方法和系统 - Google Patents

一种在结构化p2p网络中实现nat穿越的方法和系统 Download PDF

Info

Publication number
CN101841484A
CN101841484A CN201010174070A CN201010174070A CN101841484A CN 101841484 A CN101841484 A CN 101841484A CN 201010174070 A CN201010174070 A CN 201010174070A CN 201010174070 A CN201010174070 A CN 201010174070A CN 101841484 A CN101841484 A CN 101841484A
Authority
CN
China
Prior art keywords
node
user node
outer net
message
partner
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
Application number
CN201010174070A
Other languages
English (en)
Other versions
CN101841484B (zh
Inventor
马晨光
杨平改
王展
孙毅
吴海博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai united information Polytron Technologies Inc
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2010101740700A priority Critical patent/CN101841484B/zh
Publication of CN101841484A publication Critical patent/CN101841484A/zh
Application granted granted Critical
Publication of CN101841484B publication Critical patent/CN101841484B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开在结构化P2P网络中实现NAT穿越的方法和系统。该方法包括:用户节点与一个处于外网的引导节点联系,获得引导节点路由表中与其ID异或距离为一设定值的其他用户节点的信息建立并更新自己的路由表;用户节点判断自己对外的IP地址和端口号与内网的IP地址和端口号是否相同,若是表示用户节点处于外网;否则表示用户节点处于内网;用户节点随机选择一处于外网的用户节点作为自己的伙伴节点添加伙伴节点的信息;同时发布包括其伙伴节点的IP地址、端口号、ID的更新消息给路由表内的各节点,各节点更新各自路由表的信息;用户节点间采用让伙伴节点转发的方式传输控制信息;用户节点间采用让伙伴节点协助连接的方式传输数据信息。

Description

一种在结构化P2P网络中实现NAT穿越的方法和系统
技术领域
本发明涉及P2P网络领域,特别是涉及一种在结构化P2P网络中实现NAT穿越的方法和系统。
背景技术
随着计算机网络的不断发展,点对点(Peer-to-Peer,P2P)的通信模式被越来越多的网络应用所使用。在P2P网络中,结构化P2P是指P2P网络叠加层的拓扑结构是严格控制的,资源并不是随机分散存储在节点上,而是以一种使得查询更加高效的方式来存储的。在结构化P2P系统中,每个节点只存储特定的信息或特定信息的索引。当用户需要在结构化P2P系统中获取信息时,必须知道这些信息(或索引)可能存在于哪些节点中。由于用户预先知道应该搜索哪些节点,避免了非结构化P2P系统中使用的泛洪式查找,因此提高了信息搜索的效率。由于结构化P2P能够自适应节点的动态加入和退出,具有良好的可扩展性、健壮性,因此结构化P2P网络的应用得到了快速的发展,也成为研究的热点。
NAT即网络地址转换,它是一种把内部网络(简称内网)私有IP地址转换成外部网络(简称外网)公共IP地址的技术,它使得一个机构的多台主机可以共享Internet连接,以一个(或少数几个)外网IP地址连接到Internet。然而,在目前的IPv4网络环境中,NAT(Network Address Translator)设备的广泛存在使得处于不同内部网络中的主机很难进行直接通信,给P2P通信带来了障碍,这在很大程度上限制了P2P的应用和发展。NAT穿越技术,就是通过采用一定的技术措施,使得处于不同内网的主机间可以实现互联。常用的NAT穿越关键技术包括STUN(Simple Traversal of User Datagram Protocolthrough Network Address Translators)协议、端口预测、TCP穿越NAT等。目前所应用的NAT穿越技术主要是UDP打洞技术。它侧重于在两个不同的内网之间建立其UDP连接,并且需要处于外网的穿越服务器的支持才能实现穿越,同时在穿越过程中需要发送一些控制信息的数据包,这会花费一定的开销。
在结构化P2P网络中,Peer之间传输的信息分为两类,一类是控制信息的传输,一类是数据信息的传输。控制信息包括发布资源、查找资源、更新邻居信息等等,特点是数据量较小;数据信息是Peer之间真正需要下载和上传的数据,如音视频文件等等,特点是数据量较大。然而,目前UDP打洞技术的NAT穿越方案不适合用在结构化P2P网络中,首先,因为UDP打洞技术的NAT穿越方案需要有处于外网的穿越服务器的支持,这会破环结构化P2P完全分布式的特性,同时存在单点失效的缺点;另外,对于结构化P2P网络中的控制信息来说,由于其本身数据量少,穿越过程花费的开销相对较大,不适合用在控制信息的穿越过程中。因此,在结构化P2P网络中,需要研究和实现新的NAT穿越方案以适应结构化P2P网络的需要。
发明内容
本发明的目的在于提供一种在结构化P2P网络中实现NAT穿越的方法和系统,其充分考虑了结构化P2P网络完全分布式的特性,去掉了现有方法中中间服务器的支持,同时,结合控制信息和数据信息本身的特点,对其穿越方式分别处理,加快了穿越的时间,减少了穿越开销,并具有可靠性。
为实现本发明的目的而提供的一种在结构化P2P网络中实现NAT穿越的方法,包括下列步骤:
步骤100.结构化P2P网络中所有用户节点启动后,所述用户节点与一个处于外网的引导节点联系,获得所述引导节点路由表中与所述用户节点的ID异或距离为一设定值的其他用户节点的信息,建立并更新自己的路由表;
步骤200.所述用户节点通过处于外网的用户节点判断自己对外的IP地址和端口号与内网的IP地址和端口号是否相同,若是,表示所述用户节点处于外网;否则表示所述用户节点处于内网;
步骤300.所述用户节点从自己的路由表里随机选择一个处于外网的用户节点作为自己的伙伴节点,添加所述伙伴节点的信息;同时所述用户节点发布包括其伙伴节点的IP地址、端口号、ID的更新消息给路由表内的各节点,各节点更新各自路由表的信息;
步骤400.用户节点间采用让伙伴节点转发的方式传输控制信息;
步骤500.用户节点间采用让伙伴节点协助连接的方式传输数据信息。
所述步骤200,包括下列步骤:
步骤210,所述用户节点从自己的路由表里选择一个处于外网的用户节点,并给所述处于外网的用户节点发送包括自己的ID,本机的IP地址和端口号的Hello消息;
步骤220,所述处于外网的用户节点收到Hello消息后,从接收的Hello消息中提取出所述用户节点的IP地址和端口号,并从所述用户节点的数据包中提取出填写的IP地址和端口号,判断二者是否相同,若是,则表明所述用户节点的处于外网,并执行步骤230;否则表明处于内网;
步骤230,所述处于外网的用户节点判断所述用户节点是否需要被保存到自己的路由表中,若是,则把所述用户节点的信息记录到自己的路由表中,同时更新路由表;否则,不记录;
步骤240,所述处于外网的用户节点给所述用户节点发送Hello_Response消息,此消息中包括所述用户节点处于内/外网的标识、所述用户节点对外的IP地址和端口号以及所述处于外网的用户节点的ID;
步骤250,所述用户节点收到Hello_Response消息后,解析消息,提取出内/外网的标识,判断出自己所处的网络类型。
所述步骤300,包括如下步骤:
步骤310,判断所述用户节点的路由表中是否存在有处于外网的用户节点,若是,则所述用户节点从所述路由表中随机选择一个所述处于外网的用户节点,执行步骤320;否则等待所述路由表更新到有处于外网的节点;
步骤320,所述用户节点向所述处于外网的用户节点发送Find_Buddy消息,希望所述处于外网的用户节点成为所述用户节点的伙伴节点;
步骤330,所述处于外网的用户节点收到所述Find_Buddy消息后,查看自身现在是几个内网节点的伙伴节点,若没有达到上限,则所述处于外网的用户节点可以成为所述用户节点的伙伴节点,所述处于外网的用户节点发送确认消息给所述用户节点;否则所述处于外网的用户节点不能成为所述用户节点的伙伴节点,并发送否认消息给所述用户节点;
步骤340,所述用户节点收到确认消息后,则确定所述处于外网的用户节点为其伙伴节点;若收到否认消息,则判断所述路由表中是否存在没有被选择过的处于外网的用户节点,若是,则返回步骤320;否则,执行步骤350;
步骤350.所述用户节点从所述路由表里随机取出一个处于外网的节点作为协助节点,并向所述协助节点发送FindBuddy_Help消息,让所述协助节点协助找到伙伴节点;
步骤360,所述协助节点收到FindBuddy_Help消息后,从其路由表里找到几个处于外网的节点,把这些节点的IP地址、端口号、ID的列表发给所述用户节点;
步骤370,所述用户节点从所述协助节点提供的列表中所有处于外网的节点中选择一个没有被选择过的处于外网的用户节点,并返回步骤320;
步骤380,找到伙伴节点后,所述用户节点发布更新消息给路由表内的各节点,其中包括其伙伴节点的IP地址、端口号、ID;路由表内的各节点收到所述更新消息后,更新各自路由表的信息;
步骤390,所述用户节点定期给所述伙伴节点发送Keep_Alive消息,所述伙伴节点收到后解析发现是Keep_Alive消息,给所述用户节点回复Keep_Alive_Ack消息;
步骤3100,所述用户节点判断是否收到Keep_Alive_Ack回复消息,若是,则什么也不做;否则,若所述用户节点给伙伴节点发送三次Keep_Alive消息后均没收到Keep_Alive_Ack回复消息,可推测该伙伴节点已经掉线,需要重新找伙伴节点,返回步骤310。
所述步骤400,包括下列步骤:
步骤410,若处于内网的用户节点给处于外网的用户节点发数据包,则直接发送;
步骤420,若处于外网的用户节点给处于内网的用户节点发数据包,则把数据包发送给所述处于内网的用户节点的伙伴节点,由伙伴节点转发给所述处于内网的用户节点;
步骤430,若两个处于内网的用户节点间发送数据包,则把数据包发送给对方的伙伴节点,由对方的伙伴节点转发给对方。
所述步骤500,包括下列步骤:
步骤510,处于内网的用户节点给处于外网的用户节点传输数据信息,则直接建立TCP连接进行发送;
步骤520,处于外网的用户节点给处于内网的用户节点传输数据信息,则处于外网的用户节点给处于内网的用户节点的伙伴节点发送请求处于内网的用户节点进行反连的消息;
步骤530,处于内网的用户节点的伙伴节点收到请求反连的消息后,转发给所述处于内网的用户节点,所述处于内网的用户节点收到后,向所述处于外网的用户节点发起TCP连接;
步骤540,两个处于内网的用户节点间传输数据信息,则一个处于内网的用户节点给另一个处于内网的用户节点的伙伴节点发送打洞请求报文,请求所述伙伴节点给对应的另一个处于内网的用户节点发送打洞请求报文;
步骤550,所述伙伴节点收到打洞请求报文后,转发给对应的所述另一个处于内网的用户节点,所述另一个处于内网的用户节点收到后,进行UDP打洞操作;
步骤560,若所述另一个处于内网的用户节点收到所述处于内网的用户节点发来的ping消息后,将进行ping回复,所述处于内网的用户节点收到ping回复消息的节点确认打洞成功;
步骤570,利用UDP打洞协助两个处于内网的用户节点建立直连,使得其可以直接传输数据信息。
在执行步骤560时,所述另一个内网节点会多一次发送ping消息,确保打洞成功,若由于网络原因双方都没有收到ping消息,则返回步骤540,重新进行打洞。
为实现本发明的目的还提供一种在结构化P2P网络中实现NAT穿越的系统,所述系统,包括多个终端,所述终端包括:
引导节点联系模块,用于在结构化P2P网络中所有用户节点启动后,与一个处于外网的引导节点联系,获得所述引导节点路由表中与所述用户节点的ID异或距离为一设定值的其他用户节点的信息,建立并更新自己的路由表;
网络类型判断模块,用于通过处于外网的用户节点判断自己对外的IP地址和端口号与内网的IP地址和端口号是否相同,若是,表示所述用户节点处于外网;否则表示所述用户节点处于内网;
伙伴寻找模块,用于从自己的路由表里随机选择一个处于外网的用户节点作为自己的伙伴节点,添加所述伙伴节点的信息;同时发布包括其伙伴节点的IP地址、端口号、ID的更新消息给路由表内的各节点,各节点更新各自路由表的信息;
伙伴转发模块,用于协助处于内网的用户节点,对控制信息进行转发;
伙伴协助连接模块,用于利用UDP打洞协助两个处于内网的用户节点建立直连,使得其可以直接通信;
可靠传输模块,用于UDP模拟TCP进行数据传输。
所述判断模块,包括:
信息发送模块,用于从自己的路由表里选择一个处于外网的用户节点,并给所述处于外网的用户节点发送包括自己的ID,本机的IP地址和端口号的消息;
信息提取模块,用于从接收的消息中提取出用户节点的IP地址和端口号,并从用户节点的数据包中提取出填写的IP地址和端口号;
判断子模块,用于处于外网的用户节点判断其他用户节点是否需要被保存到自己的路由表中,若是,则把其他用户节点的信息记录到自己的路由表中,同时更新路由表;否则,不记录;
回复模块,用于处于外网的用户节点给其他用户节点发送回复消息,此消息中包括其他用户节点处于内/外网的标识、其他用户节点对外的IP地址和端口号以及其他处于外网的用户节点的ID。
所述伙伴寻找模块,包括:
外网用户寻找模块,用于判断用户节点的路由表中是否存在有处于外网的用户节点,若是,则所述用户节点从所述路由表中随机选择一个所述处于外网的用户节点发送Find Buddy消息;否则等待所述路由表更新到有处于外网的节点;
阈值判断模块,用于处于外网的用户节点收到所述Find_Buddy消息后,查看自身现在是几个内网节点的伙伴节点,若没有达到上限,则所述处于外网的用户节点可以成为所述用户节点的伙伴节点;
协助节点寻找模块,用于在路由表中不存在没有被选择过的处于外网的用户节点时,从所述路由表里随机取出一个处于外网的节点作为协助节点,并向所述协助节点发送FindBuddy_Help消息,让所述协助节点协助找到伙伴节点;
更新模块,用于在找到伙伴节点后,发布更新消息给路由表内的各节点,其中包括其伙伴节点的IP地址、端口号、ID。路由表内的各节点收到所述更新消息后,更新各自路由表的信息;
伙伴节点联络模块,用于定期给所述伙伴节点发送Keep_Alive消息,或者回复Keep_Alive_Ack消息,确保所述伙伴节点没有掉线。
所述伙伴协助连接模块,包括:
TCP连接模块,用于在处于内网的用户节点给处于外网的用户节点传输数据信息时,直接建立TCP连接进行发送;或者在处于内网的用户节点的伙伴节点收到请求反连的消息后,转发给所述处于内网的用户节点,向处于外网的用户节点发起TCP连接;
反连消息发送模块,用于当处于外网的用户节点给处于内网的用户节点传输数据信息时,发送请求处于内网的用户节点进行反连的消息。
所述伙伴寻找模块,只运行于处于内网的用户节点上。
所述伙伴转发模块,只运行于处于外网的用户节点上。
本发明的有益效果是:
1.本发明结合结构化P2P网络完全分布式的特点,去掉了传统UDP穿越方法中穿越服务器的支持,仅仅利用已有的用户节点就可以实现NAT穿越,维持了结构化P2P网络完全分布式的特性;
2.本发明对控制信息和数据信息采取不同的穿越方式,对于控制信息,其数据量和数据包都比较小,由于采用了伙伴节点转发的方式,使得穿越过程不需要花费的辅助数据包,同时穿透的速度和可靠性都得到了提高;对于数据信息,其数据量大,所以采用伙伴节点协助直连的方式,避免了转发的巨大开销;
3.本发明在应用层采用了UDP模拟TCP的可靠传输机制,保证了数据的可靠传输。
附图说明
图1是本发明一种在结构化P2P网络中实现NAT穿越的方法的步骤流程图;
图2是本发明中在结构化P2P网络中所有用户节点启动后更新各自的路由表的步骤流程图;
图3是本发明中用户节点通过处于外网的用户节点判断网络类型的步骤流程图;
图4是本发明中用户节点寻找伙伴节点的步骤流程图;
图5是本发明中用户节点间传输控制信息的步骤流程图;
图6是本发明中用户节点间传输数据信息的步骤流程图;
图7是本发明的一种在结构化P2P网络中实现NAT穿越的系统的用户终端的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种在结构化P2P网络中实现NAT穿越的方法和系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种在结构化P2P网络中实现NAT穿越的方法和系统,通过终端启动后,根据自己所处的网络类型选择相应处理方法,并根据所传输的信息类型选择相应的传输方法进行数据的可靠传输。其充分考虑了结构化P2P网络完全分布式的特性,去掉了现有方法中中间服务器的支持,同时,结合控制信息和数据信息本身的特点,对其穿越方式分别处理,加快了穿越的时间,减少了穿越开销,并具有可靠性。
下面结合上述目标详细介绍本发明的一种在结构化P2P网络中实现NAT穿越的方法,图1是本发明一种在结构化P2P网络中实现NAT穿越的方法的步骤流程图,如图1所示,所述方法,包括下列步骤:
步骤100.结构化P2P网络中所有用户节点启动后,所述用户节点根据与自己的ID异或距离为一设定值的其他用户节点的信息,建立并更新自己的路由表;
所述路由表是每个用户节点保存在本地的与自己有联系的其他用户节点的信息,包括IP地址、端口号、ID、处于公网还是内网的标识等,用户节点通过定期与其他用户节点交换信息来进行路由表的更新。
图2是本发明中在结构化P2P网络中所有用户节点启动后更新各自的路由表的步骤流程图,如图2所示,所述步骤100,包括下列步骤:
步骤110,所述用户节点与一个处于外网的引导节点(或叫超级节点)联系;
所述引导节点是一种特殊的节点,当有其他用户节点与引导节点联系时,引导节点便将这些用户节点的信息保存在引导节点的路由表中,路由表的大小有一个上限值,当达到该上限值时,引导节点用与引导节点ID异或距离较近的用户节点替换距离较远的。从而引导节点的路由表里便保存了与引导节点的ID异或距离较近的用户节点的信息;
所述用户节点的信息,包括IP地址、端口号、ID、处于外网还是内网(内网指处于NAT设备后)的标识等等。
所述用户节点的ID是用户节点启动后由某种哈希算法生成的唯一的标识,路由表保存的是对方ID与自己ID异或后所得的值(称为距离)较小的节点。
步骤S120,所述用户节点通过与所述引导节点联系,获得所述引导节点路由表中其他用户节点的信息,并把这些用户节点的信息保存在所述用户节点的路由表中。
步骤200.所述用户节点通过处于外网的用户节点判断自己对外的IP地址和端口号与内网的IP地址和端口号是否相同,若是,表示所述用户节点处于外网;否则表示所述用户节点处于内网;
本步骤中判断用户节点的网络类型是为后面的穿越做准备。只有知道了用户节点的网络类型,才能决定后续是否需要穿越,以及在需要穿越的情况下,采取什么样的穿越方式,即所采取的穿越方式会因为网络类型的不同而不同。
图3是本发明中用户节点通过处于外网的用户节点判断网络类型的步骤流程图,如图3所示,所述步骤200,包括下列步骤:
步骤210,所述用户节点从自己的路由表里选择一个处于外网的用户节点,并给所述处于外网的用户节点发送包括自己的ID,本机的IP地址和端口号的Hello消息;
所述IP地址和端口号是从本机获得的,若本用户节点处于内网,它是指从本机获得的内网的IP地址和端口号,如:10.21.4.222:9900,若本节点处于外网,则该地址为外网地址,如:159.226.33.2:9800。
步骤220,所述处于外网的用户节点收到Hello消息后,从接收的Hello消息中提取出所述用户节点的IP地址和端口号,并从所述用户节点的数据包中提取出填写的IP地址和端口号,判断二者是否相同,若是,则表明所述用户节点处于外网,并执行步骤230;否则表明处于内网;
步骤230,所述处于外网的用户节点判断所述用户节点是否需要被保存到自己的路由表中(即与自己ID的异或距离较近),若是,则把所述用户节点的信息(IP地址、端口号、ID和外网标识)记录到自己的路由表中,同时更新路由表;否则,不记录;
从接收的Hello消息中提取的IP地址和端口是所述用户节点对外的地址和端口,若所述用户节点为内网节点,此地址是NAT分配给其的出口IP和端口。比如所述用户节点(内网)的IP地址为10.21.5.20,端口号为6877,NAT分配给其对外的IP地址为202.206.5.65,端口号为6550,则recvfrom函数中提取出的地址和端口是202.206.5.65:6550,从所述用户节点发送的数据包中提取出的IP地址和端口是10.21.5.20:6877,两者不相等,判断其为内网。若两者相等,则为外网。
步骤240,所述处于外网的用户节点给所述用户节点发送Hello_Response消息,此消息中包括所述用户节点处于内/外网的标识、所述用户节点对外的IP地址和端口号以及所述处于外网的用户节点的ID;
步骤250,所述用户节点收到Hello_Response消息后,解析消息,提取出内/外网的标识,判断出自己所处的网络类型。
步骤300.所述用户节点从自己的路由表里随机选择一个处于外网的用户节点作为所述用户节点的伙伴节点,添加所述伙伴节点的信息;同时所述用户节点发布包括其伙伴节点的IP地址、端口号、ID的更新消息给路由表内的各节点,各节点更新各自路由表的信息;
图4是本发明中用户节点寻找伙伴节点的步骤流程图,如图4所示,所述步骤300,包括如下步骤:
步骤310,判断所述用户节点的路由表中是否存在有处于外网的用户节点,若是,则所述用户节点从所述路由表中随机选择一个所述处于外网的用户节点,并执行步骤320;否则等待所述路由表更新到有处于外网的节点;
步骤320,所述用户节点向所述处于外网的用户节点发送Find_Buddy消息,希望所述处于外网的用户节点成为所述用户节点的伙伴节点;
步骤330,所述处于外网的用户节点收到所述Find_Buddy消息后,查看自身现在是几个内网节点的伙伴节点,若没有达到上限,则所述处于外网的用户节点可以成为所述用户节点的伙伴节点,所述处于外网的用户节点发送确认消息给所述用户节点;否则所述处于外网的用户节点不能成为所述用户节点的伙伴节点,并发送否认消息给所述用户节点;
较佳地,为了减轻伙伴节点的负载压力,规定一个处于外网的用户节点不能成为无数个用户节点的伙伴节点,而是有一个上限值,本系统中取值为5,该值可修改。
步骤340,所述用户节点收到确认消息后,则确定所述处于外网的用户节点为其伙伴节点;若收到否认消息,则判断所述路由表中是否存在没有被选择过的处于外网的用户节点,若有,则返回步骤320;否则,执行步骤350;
步骤350.所述用户节点从所述路由表里随机取出一个处于外网的节点作为协助节点,并向所述协助节点发送FindBuddy_Help消息,让所述协助节点协助找到伙伴节点;
这里随机选择一个外网节点,不是让该外网节点成为它的伙伴,而是让这个外网节点帮助所述用户节点找到伙伴节点。
所述步骤310中,“当路由表没有处于外网的节点时”,是指该节点的路由表的所有项中都是内网节点,这种情况下要等待更新;而步骤340中如果判断结果是所述路由表中不存在没有被选择过的处于外网的用户节点是指目前路由表里所有的处于外网的用户节点均被访问过,但是由于这些处于外网的用户节点已经成为别人的伙伴(本系统中,已经成为了5个人的伙伴),所以不能再成为更多节点的伙伴,因此需要在路由表中随机取出一个处于外网的节点让其协助找到伙伴节点。
步骤360,所述协助节点收到FindBuddy_Help消息后,从其路由表里找到几个处于外网的节点,把这些节点的IP地址、端口号、ID的列表发给所述用户节点;
步骤370,所述用户节点从所述协助节点提供的列表中所有处于外网的节点中选择一个没有被选择过的处于外网的用户节点,并返回步骤320;
步骤380,找到伙伴节点后,所述用户节点发布更新消息给路由表内的各节点,其中包括其伙伴节点的IP地址、端口号、ID。路由表内的各节点收到所述更新消息后,更新各自路由表的信息;
步骤390,所述用户节点定期给所述伙伴节点发送Keep_Alive消息,所述伙伴节点收到后解析发现是Keep_Alive消息,给所述用户节点回复Keep_Alive_Ack消息;
此处发送Keep_Alive是为了保证其和伙伴节点的互通性。若长时间不发,则伙伴节点将不能与其进行联系。Keep_Alive消息和Keep_Alive_Ack消息是只有消息类型的空消息。
步骤3100,所述用户节点判断是否收到Keep_Alive_Ack回复消息,若是,则什么也不做;否则,若所述用户节点给伙伴节点发送三次Keep_Alive消息后均没收到Keep_Alive_Ack回复消息,可推测该伙伴节点已经掉线,需要重新找伙伴节点,返回步骤310。
所述用户节点在以后的更新过程中连同伙伴节点的信息一起更新。
步骤400.用户节点间采用让伙伴节点转发的方式传输控制信息;
图5是本发明中用户节点间传输控制信息的步骤流程图,如图5所示,所述步骤400,包括下列步骤:
步骤410,若处于内网的用户节点给处于外网的用户节点发数据包,则直接发送;
步骤420,若处于外网的用户节点给处于内网的用户节点发数据包,则把数据包发送给所述处于内网的用户节点的伙伴节点,由伙伴节点转发给所述处于内网的用户节点;
步骤430,若两个处于内网的用户节点间发送数据包,则把数据包发送给对方的伙伴节点,由对方的伙伴节点转发给对方。
作为一种可实施方式,假设A和B是两个处于内网的用户节点,A的伙伴节点是C,B的伙伴节点是D,则A把数据包发送给D,由D转发给B,而B发送给A的数据是通过把数据发给A的伙伴节点C,由C转发给A。
步骤500.用户节点间采用让伙伴节点协助连接的方式传输数据信息;
图6是本发明中用户节点间传输数据信息的步骤流程图,如图6所示,所述步骤500,包括下列步骤:
步骤510,处于内网的用户节点给处于外网的用户节点传输数据信息,则直接建立TCP连接进行发送;
本步骤中的所述TCP连接可以直接建立,随后就可以直接进行数据传输,步骤520到570不再执行。
该步骤属于现有的技术,在此不再一一赘述。
步骤520,处于外网的用户节点给处于内网的用户节点传输数据信息,则处于外网的用户节点给处于内网的用户节点的伙伴节点发送请求处于内网的用户节点进行反连的消息;
步骤530,处于内网的用户节点的伙伴节点收到请求反连的消息后,转发给所述处于内网的用户节点,所述处于内网的用户节点收到后,向所述处于外网的用户节点发起TCP连接;
本步骤中的所述TCP连接可以直接建立,随后就可以直接进行数据传输,步骤540到570不再执行。
步骤540,两个处于内网的用户节点间传输数据信息,则一个处于内网的用户节点给另一个处于内网的用户节点的伙伴节点发送打洞请求报文,请求所述伙伴节点给对应的另一个处于内网的用户节点发送打洞请求报文;
步骤550,所述伙伴节点收到打洞请求报文后,转发给对应的所述另一个处于内网的用户节点,所述另一个处于内网的用户节点收到后,进行UDP打洞操作,即发送ping消息给所述处于内网的用户节点。该消息是消息头为PING类型的空消息;
作为一种可实施方式,假设A和B是两个内网节点,A的伙伴节点是C,B的伙伴节点是D,则节点A给节点B的伙伴节点D发送打洞请求报文,请求给B发送打洞请求报文,节点D收到打洞请求报文后,给B转发,B收到后,进行UDP打洞操作,即发送ping消息给A。此处发送消息的目的地址是A在NAT的出口地址,假设A的内网地址和端口是10.21.5.66:9888,出口地址和端口是159.226.34.6:9678,则B发送的目的地址和端口是159.226.34.6:9678,而后续A发送给B的目的地址和端口也是B在NAT映射的出口地址和端口。
步骤560,若所述另一个处于内网的用户节点收到所述处于内网的用户节点发来的ping消息后,将进行ping回复,所述处于内网的用户节点收到ping回复消息的节点确认打洞成功。
较佳地,节点会多一次发送ping消息,确保打洞成功。若由于网络原因双方都没有收到ping消息,则返回步骤540,重新进行打洞。
步骤570,利用UDP打洞协助两个处于内网的用户节点建立直连,使得其可以直接传输数据信息;
相应于本发明的一种在结构化P2P网络中实现NAT穿越的方法,还提供一种在结构化P2P网络中实现NAT穿越的系统。
比较现有技术的NAT穿越系统,本系统具备以下特点:
1)基于结构化P2P网络:本系统是应用于结构化P2P网络环境下的NAT穿越系统,主要应用于结构化P2P环境下的共享资源发布,文件下载等应用;
2)快速高效的进行控制信息的穿越:控制信息采用伙伴节点转发的方式,可以快速可靠的实现穿越,大大减少了穿越时间,同时由于伙伴节点的分布性和控制信息数据量小的特性,并不会给伙伴节点造成压力;
3)可靠性:通过伙伴节点转发和UDP模拟TCP,可以实现传输的可靠性。
图7是本发明的一种在结构化P2P网络中实现NAT穿越的系统的用户终端的结构示意图,如图7所示,所述系统,由一系列的用户终端组成,用户终端是需要实现NAT穿越的用户节点。所述用户终端,包括以下几个模块:
引导节点联系模块1,用于在结构化P2P网络中所有用户节点启动后,与一个处于外网的引导节点联系,获得所述引导节点路由表中与所述用户节点的ID异或距离为一设定值的其他用户节点的信息,建立并更新自己的路由表;
判断模块2,用于通过处于外网的用户节点判断自己对外的IP地址和端口号与内网的IP地址和端口号是否相同,若是,表示所述用户节点处于外网;否则表示所述用户节点处于内网;
伙伴寻找模块3:用于从自己的路由表里随机选择一个处于外网的用户节点作为自己的伙伴节点,添加所述伙伴节点的信息;同时发布包括其伙伴节点的IP地址、端口号、ID的更新消息给路由表内的各节点,各节点更新各自路由表的信息;
所述伙伴寻找模块,只运行于处于内网的用户节点上;
伙伴转发模块4:用于协助处于内网的用户节点,对控制信息进行转发;
所述伙伴转发模块,只运行于处于外网的用户节点;
伙伴协助连接模块5:用于利用UDP打洞协助两个处于内网的用户节点建立直连,使得其可以直接通信;
可靠传输模块6:用于UDP模拟TCP进行数据传输。
其中,所述判断模块2,包括:
信息发送模块21,用于从自己的路由表里选择一个处于外网的用户节点,并给所述处于外网的用户节点发送包括自己的ID,本机的IP地址和端口号的Hello消息;
信息提取模块22,用于从接收的Hello消息中提取出用户节点的IP地址和端口号,并从用户节点的数据包中提取出填写的IP地址和端口号;
判断子模块23,用于处于外网的用户节点判断其他用户节点是否需要被保存到自己的路由表中,若是,则把其他用户节点的信息记录到自己的路由表中,同时更新路由表;否则,不记录;
回复模块24,用于处于外网的用户节点给其他用户节点发送Hello_Response消息,此消息中包括其他用户节点处于内/外网的标识、其他用户节点对外的IP地址和端口号以及其他处于外网的用户节点的ID。
所述伙伴寻找模块3,包括:
外网用户寻找模块31,用于判断用户节点的路由表中是否存在有处于外网的用户节点,若是,则所述用户节点从所述路由表中随机选择一个所述处于外网的用户节点发送Find_Buddy消息;否则等待所述路由表更新到有处于外网的节点;
阈值判断模块32,用于处于外网的用户节点收到所述Find_Buddy消息后,查看自身现在是几个内网节点的伙伴节点,若没有达到上限,则所述处于外网的用户节点可以成为所述用户节点的伙伴节点;
协助节点寻找模块33,用于在路由表中不存在没有被选择过的处于外网的用户节点时,从所述路由表里随机取出一个处于外网的节点作为协助节点,并向所述协助节点发送FindBuddy_Help消息,让所述协助节点协助找到伙伴节点;
更新模块34,用于在找到伙伴节点后,发布更新消息给路由表内的各节点,其中包括其伙伴节点的IP地址、端口号、ID。路由表内的各节点收到所述更新消息后,更新各自路由表的信息;
伙伴节点联络模块35,用于定期给所述伙伴节点发送Keep_Alive消息,或者回复Keep_Alive_Ack消息,确保所述伙伴节点没有掉线。
所述伙伴协助连接模块5,包括:
TCP连接模块51,用于在处于内网的用户节点给处于外网的用户节点传输数据信息时,直接建立TCP连接进行发送;以及处于内网的用户节点的伙伴节点收到请求反连的消息后,转发给所述处于内网的用户节点,向处于外网的用户节点发起TCP连接;
反连消息发送模块52,用于当处于外网的用户节点给处于内网的用户节点传输数据信息时,发送请求处于内网的用户节点进行反连的消息。
在结构化P2P网络中所有用户节点启动后,用户终端(用户节点)首先通过引导节点联系模块1与一个处于外网的引导节点联系,获得所述引导节点路由表中与所述用户节点的ID异或距离为一设定值的其他用户节点的信息,建立并更新自己的路由表;然后判断模块2通过处于外网的一个用户节点判断自己对外的IP地址和端口号与内网的IP地址和端口号是否相同,若是,表示所述用户节点处于外网;否则表示所述用户节点处于内网;若是处于内网的用户节点,则通过伙伴寻找模块3从自己的路由表里随机选择一个处于外网的用户节点作为自己的伙伴节点,添加所述伙伴节点的信息;同时发布包括其伙伴节点的IP地址、端口号、ID的更新消息给路由表内的各节点,各节点更新各自路由表的信息;当需要发布控制信息时,则通过伙伴转发模块4协助处于内网的用户节点,对控制信息进行转发;当需要发布数据信息时,则通过伙伴协助连接模块5利用UDP打洞协助两个处于内网的用户节点建立直连,使得其可以直接通信;成功后,通过可靠传输模块利用UDP模拟TCP进行数据的可靠传输。
本发明的有益效果在于:
1.本发明结合结构化P2P网络完全分布式的特点,去掉了传统UDP穿越方法中穿越服务器的支持,仅仅利用已有的用户节点就可以实现NAT穿越,维持了结构化P2P网络完全分布式的特性;
2.本发明对控制信息和数据信息采取不同的穿越方式,对于控制信息,其数据量和数据包都比较小,由于采用了伙伴节点转发的方式,使得穿越过程不需要花费的辅助数据包,同时穿透的速度和可靠性都得到了提高;对于数据信息,其数据量大,所以采用伙伴节点协助直连的方式,避免了转发的巨大开销;
3.本发明在应用层采用了UDP模拟TCP的可靠传输机制,保证了数据的可靠传输。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (12)

1.一种在结构化P2P网络中实现NAT穿越的方法,其特征在于,所述方法,包括下列步骤:
步骤100.结构化P2P网络中所有用户节点启动后,所述用户节点与一个处于外网的引导节点联系,获得所述引导节点路由表中与所述用户节点的ID异或距离为一设定值的其他用户节点的信息,建立并更新自己的路由表;
步骤200.所述用户节点通过处于外网的用户节点判断自己对外的IP地址和端口号与内网的IP地址和端口号是否相同,若是,表示所述用户节点处于外网;否则表示所述用户节点处于内网;
步骤300.所述用户节点从自己的路由表里随机选择一个处于外网的用户节点作为自己的伙伴节点,添加所述伙伴节点的信息;同时所述用户节点发布包括其伙伴节点的IP地址、端口号、ID的更新消息给路由表内的各节点,各节点更新各自路由表的信息;
步骤400.用户节点间采用让伙伴节点转发的方式传输控制信息;
步骤500.用户节点间采用让伙伴节点协助连接的方式传输数据信息。
2.根据权利要求1所述的在结构化P2P网络中实现NAT穿越的方法,其特征在于,所述步骤200,包括下列步骤:
步骤210,所述用户节点从自己的路由表里选择一个处于外网的用户节点,并给所述处于外网的用户节点发送包括自己的ID,本机的IP地址和端口号的Hello消息;
步骤220,所述处于外网的用户节点收到Hello消息后,从接收的Hello消息中提取出所述用户节点的IP地址和端口号,并从所述用户节点的数据包中提取出填写的IP地址和端口号,判断二者是否相同,若是,则表明所述用户节点的处于外网,并执行步骤230;否则表明处于内网;
步骤230,所述处于外网的用户节点判断所述用户节点是否需要被保存到自己的路由表中,若是,则把所述用户节点的信息记录到自己的路由表中,同时更新路由表;否则,不记录;
步骤240,所述处于外网的用户节点给所述用户节点发送Hello_Response消息,此消息中包括所述用户节点处于内/外网的标识、所述用户节点对外的IP地址和端口号以及所述处于外网的用户节点的ID;
步骤250,所述用户节点收到Hello_Response消息后,解析消息,提取出内/外网的标识,判断出自己所处的网络类型。
3.根据权利要求1所述的在结构化P2P网络中实现NAT穿越的方法,其特征在于,所述步骤300,包括如下步骤:
步骤310,判断所述用户节点的路由表中是否存在有处于外网的用户节点,若是,则所述用户节点从所述路由表中随机选择一个所述处于外网的用户节点,执行步骤320;否则等待所述路由表更新到有处于外网的节点;
步骤320,所述用户节点向所述处于外网的用户节点发送Find_Buddy消息,希望所述处于外网的用户节点成为所述用户节点的伙伴节点;
步骤330,所述处于外网的用户节点收到所述Find_Buddy消息后,查看自身现在是几个内网节点的伙伴节点,若没有达到上限,则所述处于外网的用户节点可以成为所述用户节点的伙伴节点,所述处于外网的用户节点发送确认消息给所述用户节点;否则所述处于外网的用户节点不能成为所述用户节点的伙伴节点,并发送否认消息给所述用户节点;
步骤340,所述用户节点收到确认消息后,则确定所述处于外网的用户节点为其伙伴节点;若收到否认消息,则判断所述路由表中是否存在没有被选择过的处于外网的用户节点,若是,则返回步骤320;否则,执行步骤350;
步骤350.所述用户节点从所述路由表里随机取出一个处于外网的节点作为协助节点,并向所述协助节点发送FindBuddy_Help消息,让所述协助节点协助找到伙伴节点;
步骤360,所述协助节点收到FindBuddy_Help消息后,从其路由表里找到几个处于外网的节点,把这些节点的IP地址、端口号、ID的列表发给所述用户节点;
步骤370,所述用户节点从所述协助节点提供的列表中所有处于外网的节点中选择一个没有被选择过的处于外网的用户节点,并返回步骤320;
步骤380,找到伙伴节点后,所述用户节点发布更新消息给路由表内的各节点,其中包括其伙伴节点的IP地址、端口号、ID;路由表内的各节点收到所述更新消息后,更新各自路由表的信息;
步骤390,所述用户节点定期给所述伙伴节点发送Keep_Alive消息,所述伙伴节点收到后解析发现是Keep_Alive消息,给所述用户节点回复Keep_Alive_Ack消息;
步骤3100,所述用户节点判断是否收到Keep_Alive_Ack回复消息,若是,则什么也不做;否则,若所述用户节点给伙伴节点发送三次Keep_Alive消息后均没收到Keep_Alive_Ack回复消息,可推测该伙伴节点已经掉线,需要重新找伙伴节点,返回步骤310。
4.根据权利要求1所述的在结构化P2P网络中实现NAT穿越的方法,其特征在于,所述步骤400,包括下列步骤:
步骤410,若处于内网的用户节点给处于外网的用户节点发数据包,则直接发送;
步骤420,若处于外网的用户节点给处于内网的用户节点发数据包,则把数据包发送给所述处于内网的用户节点的伙伴节点,由伙伴节点转发给所述处于内网的用户节点;
步骤430,若两个处于内网的用户节点间发送数据包,则把数据包发送给对方的伙伴节点,由对方的伙伴节点转发给对方。
5.根据权利要求1所述的在结构化P2P网络中实现NAT穿越的方法,其特征在于,所述步骤500,包括下列步骤:
步骤510,处于内网的用户节点给处于外网的用户节点传输数据信息,则直接建立TCP连接进行发送;
步骤520,处于外网的用户节点给处于内网的用户节点传输数据信息,则处于外网的用户节点给处于内网的用户节点的伙伴节点发送请求处于内网的用户节点进行反连的消息;
步骤530,处于内网的用户节点的伙伴节点收到请求反连的消息后,转发给所述处于内网的用户节点,所述处于内网的用户节点收到后,向所述处于外网的用户节点发起TCP连接;
步骤540,两个处于内网的用户节点间传输数据信息,则一个处于内网的用户节点给另一个处于内网的用户节点的伙伴节点发送打洞请求报文,请求所述伙伴节点给对应的另一个处于内网的用户节点发送打洞请求报文;
步骤550,所述伙伴节点收到打洞请求报文后,转发给对应的所述另一个处于内网的用户节点,所述另一个处于内网的用户节点收到后,进行UDP打洞操作;
步骤560,若所述另一个处于内网的用户节点收到所述处于内网的用户节点发来的ping消息后,将进行ping回复,所述处于内网的用户节点收到ping回复消息的节点确认打洞成功;
步骤570,利用UDP打洞协助两个处于内网的用户节点建立直连,使得其可以直接传输数据信息。
6.根据权利要求5所述的在结构化P2P网络中实现NAT穿越的方法,其特征在于,在执行步骤560时,所述另一个内网节点会多一次发送ping消息,确保打洞成功,若由于网络原因双方都没有收到ping消息,则返回步骤540,重新进行打洞。
7.一种在结构化P2P网络中实现NAT穿越的系统,其特征在于,所述系统,包括多个终端,所述终端包括:
引导节点联系模块,用于在结构化P2P网络中所有用户节点启动后,与一个处于外网的引导节点联系,获得所述引导节点路由表中与所述用户节点的ID异或距离为一设定值的其他用户节点的信息,建立并更新自己的路由表;
网络类型判断模块,用于通过处于外网的用户节点判断自己对外的IP地址和端口号与内网的IP地址和端口号是否相同,若是,表示所述用户节点处于外网;否则表示所述用户节点处于内网;
伙伴寻找模块,用于从自己的路由表里随机选择一个处于外网的用户节点作为自己的伙伴节点,添加所述伙伴节点的信息;同时发布包括其伙伴节点的IP地址、端口号、ID的更新消息给路由表内的各节点,各节点更新各自路由表的信息;
伙伴转发模块,用于协助处于内网的用户节点,对控制信息进行转发;
伙伴协助连接模块,用于利用UDP打洞协助两个处于内网的用户节点建立直连,使得其可以直接通信;
可靠传输模块,用于UDP模拟TCP进行数据传输。
8.根据权利要求7所述的在结构化P2P网络中实现NAT穿越的系统,其特征在于,所述判断模块,包括:
信息发送模块,用于从自己的路由表里选择一个处于外网的用户节点,并给所述处于外网的用户节点发送包括自己的ID,本机的IP地址和端口号的消息;
信息提取模块,用于从接收的消息中提取出用户节点的IP地址和端口号,并从用户节点的数据包中提取出填写的IP地址和端口号;
判断子模块,用于处于外网的用户节点判断其他用户节点是否需要被保存到自己的路由表中,若是,则把其他用户节点的信息记录到自己的路由表中,同时更新路由表;否则,不记录;
回复模块,用于处于外网的用户节点给其他用户节点发送回复消息,此消息中包括其他用户节点处于内/外网的标识、其他用户节点对外的IP地址和端口号以及其他处于外网的用户节点的ID。
9.根据权利要求7所述的在结构化P2P网络中实现NAT穿越的系统,其特征在于,所述伙伴寻找模块,包括:
外网用户寻找模块,用于判断用户节点的路由表中是否存在有处于外网的用户节点,若是,则所述用户节点从所述路由表中随机选择一个所述处于外网的用户节点发送Find_Buddy消息;否则等待所述路由表更新到有处于外网的节点;
阈值判断模块,用于处于外网的用户节点收到所述Find_Buddy消息后,查看自身现在是几个内网节点的伙伴节点,若没有达到上限,则所述处于外网的用户节点可以成为所述用户节点的伙伴节点;
协助节点寻找模块,用于在路由表中不存在没有被选择过的处于外网的用户节点时,从所述路由表里随机取出一个处于外网的节点作为协助节点,并向所述协助节点发送FindBuddy_Help消息,让所述协助节点协助找到伙伴节点;
更新模块,用于在找到伙伴节点后,发布更新消息给路由表内的各节点,其中包括其伙伴节点的IP地址、端口号、ID。路由表内的各节点收到所述更新消息后,更新各自路由表的信息;
伙伴节点联络模块,用于定期给所述伙伴节点发送Keep_Alive消息,或者回复Keep_Alive_Ack消息,确保所述伙伴节点没有掉线。
10.根据权利要求7所述的在结构化P2P网络中实现NAT穿越的系统,其特征在于,所述伙伴协助连接模块,包括:
TCP连接模块,用于在处于内网的用户节点给处于外网的用户节点传输数据信息时,直接建立TCP连接进行发送;或者在处于内网的用户节点的伙伴节点收到请求反连的消息后,转发给所述处于内网的用户节点,向处于外网的用户节点发起TCP连接;
反连消息发送模块,用于当处于外网的用户节点给处于内网的用户节点传输数据信息时,发送请求处于内网的用户节点进行反连的消息。
11.根据权利要求7所述的在结构化P2P网络中实现NAT穿越的系统,其特征在于,所述伙伴寻找模块,只运行于处于内网的用户节点上。
12.根据权利要求7所述的在结构化P2P网络中实现NAT穿越的系统,其特征在于,所述伙伴转发模块,只运行于处于外网的用户节点上。
CN2010101740700A 2010-05-12 2010-05-12 一种在结构化p2p网络中实现nat穿越的方法和系统 Active CN101841484B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101740700A CN101841484B (zh) 2010-05-12 2010-05-12 一种在结构化p2p网络中实现nat穿越的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101740700A CN101841484B (zh) 2010-05-12 2010-05-12 一种在结构化p2p网络中实现nat穿越的方法和系统

Publications (2)

Publication Number Publication Date
CN101841484A true CN101841484A (zh) 2010-09-22
CN101841484B CN101841484B (zh) 2013-01-02

Family

ID=42744617

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101740700A Active CN101841484B (zh) 2010-05-12 2010-05-12 一种在结构化p2p网络中实现nat穿越的方法和系统

Country Status (1)

Country Link
CN (1) CN101841484B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103888500A (zh) * 2012-12-21 2014-06-25 联想(北京)有限公司 一种数据传输方法及电子设备
CN104580516A (zh) * 2015-01-24 2015-04-29 陈为人 基于web网站家庭网关系统的内外网切换方法和装置
CN104717311A (zh) * 2013-12-12 2015-06-17 中国移动通信集团公司 一种nat穿越的方法、网络节点和系统
CN105359492A (zh) * 2013-07-26 2016-02-24 英特尔Ip公司 使能直接传送层的连接性
CN106856512A (zh) * 2015-12-09 2017-06-16 中国科学院声学研究所 一种服务器与节点协作相结合的nat穿越方法
CN108848191A (zh) * 2018-07-26 2018-11-20 深圳市元征科技股份有限公司 一种节点连接方法及相关设备
CN109510717A (zh) * 2017-09-15 2019-03-22 华为技术有限公司 节点设备的信息的获取方法、装置、设备及存储介质
CN109922156A (zh) * 2019-03-20 2019-06-21 深圳市网心科技有限公司 一种数据通信方法及其相关设备
CN110677471A (zh) * 2019-09-24 2020-01-10 日立楼宇技术(广州)有限公司 门禁系统的数据链路构建方法、装置、设备和存储介质
CN111131528A (zh) * 2018-10-31 2020-05-08 杭州海康威视系统技术有限公司 一种设备网域确定方法、服务器及终端
CN111131484A (zh) * 2019-12-30 2020-05-08 深圳市网心科技有限公司 节点挂载方法、装置、网络节点及存储介质
CN114221931A (zh) * 2021-11-01 2022-03-22 北京中合谷投资有限公司 一种分布式网络的网络层nat穿越算法
CN117896538A (zh) * 2024-01-09 2024-04-16 广州开得联软件技术有限公司 巡课的方法及装置、设备、存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101557388B (zh) * 2008-04-11 2012-05-23 中国科学院声学研究所 一种基于UPnP和STUN技术相结合的NAT穿越方法
CN101442492B (zh) * 2008-12-26 2011-03-30 中国科学院计算技术研究所 一种p2p网络中实现nat穿越的方法和系统
CN101599992A (zh) * 2009-05-27 2009-12-09 南京欣网视讯科技股份有限公司 基于sip的p2pnat穿越解决方案

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103888500B (zh) * 2012-12-21 2017-11-03 联想(北京)有限公司 一种数据传输方法及电子设备
CN103888500A (zh) * 2012-12-21 2014-06-25 联想(北京)有限公司 一种数据传输方法及电子设备
CN105359492A (zh) * 2013-07-26 2016-02-24 英特尔Ip公司 使能直接传送层的连接性
CN104717311A (zh) * 2013-12-12 2015-06-17 中国移动通信集团公司 一种nat穿越的方法、网络节点和系统
CN104717311B (zh) * 2013-12-12 2018-06-15 中国移动通信集团公司 一种nat穿越的方法、网络节点和系统
CN104580516A (zh) * 2015-01-24 2015-04-29 陈为人 基于web网站家庭网关系统的内外网切换方法和装置
CN104580516B (zh) * 2015-01-24 2018-10-30 陈为人 基于web网站家庭网关系统的内外网切换方法和装置
CN106856512B (zh) * 2015-12-09 2020-02-04 中国科学院声学研究所 一种服务器与节点协作相结合的nat穿越方法
CN106856512A (zh) * 2015-12-09 2017-06-16 中国科学院声学研究所 一种服务器与节点协作相结合的nat穿越方法
CN109510717B (zh) * 2017-09-15 2020-08-07 华为技术有限公司 节点设备的信息的获取方法、装置、设备及存储介质
CN109510717A (zh) * 2017-09-15 2019-03-22 华为技术有限公司 节点设备的信息的获取方法、装置、设备及存储介质
CN108848191A (zh) * 2018-07-26 2018-11-20 深圳市元征科技股份有限公司 一种节点连接方法及相关设备
CN111131528A (zh) * 2018-10-31 2020-05-08 杭州海康威视系统技术有限公司 一种设备网域确定方法、服务器及终端
CN111131528B (zh) * 2018-10-31 2022-07-05 杭州海康威视系统技术有限公司 一种设备网域确定方法、服务器及终端
CN109922156A (zh) * 2019-03-20 2019-06-21 深圳市网心科技有限公司 一种数据通信方法及其相关设备
CN110677471A (zh) * 2019-09-24 2020-01-10 日立楼宇技术(广州)有限公司 门禁系统的数据链路构建方法、装置、设备和存储介质
CN110677471B (zh) * 2019-09-24 2021-10-01 日立楼宇技术(广州)有限公司 门禁系统的数据链路构建方法、装置、设备和存储介质
CN111131484A (zh) * 2019-12-30 2020-05-08 深圳市网心科技有限公司 节点挂载方法、装置、网络节点及存储介质
CN114221931A (zh) * 2021-11-01 2022-03-22 北京中合谷投资有限公司 一种分布式网络的网络层nat穿越算法
CN117896538A (zh) * 2024-01-09 2024-04-16 广州开得联软件技术有限公司 巡课的方法及装置、设备、存储介质

Also Published As

Publication number Publication date
CN101841484B (zh) 2013-01-02

Similar Documents

Publication Publication Date Title
CN101841484B (zh) 一种在结构化p2p网络中实现nat穿越的方法和系统
CN101741914B (zh) 一种p2p网络中穿透nat建立覆盖网的方法和系统
JP4902635B2 (ja) 接続転送
CN103108089B (zh) 网络系统的连线建立管理方法及其相关系统
US7764691B2 (en) Allowing IPv4 clients to communicate using teredo addresses when both clients are behind a NAT
CN102035900B (zh) 用于通过中继方式进行nat穿越的方法、系统和中继服务器
CN103023787B (zh) 数据中心系统及装置和提供服务的方法
CN102148845B (zh) 一种实现ftp数据传输的方法和系统
TW200924462A (en) System and method for connection of hosts behind NATs
CN103618801B (zh) 一种p2p资源共享的方法、设备及系统
US8194683B2 (en) Teredo connectivity between clients behind symmetric NATs
CN101895590A (zh) 基于udt实现nat穿越的系统和方法
CN111193773A (zh) 负载均衡方法、装置、设备及存储介质
EP4181436B1 (en) Data processing method and apparatus, related device and storage medium
EP2161881B1 (en) Method for acquiring traversal resource, peer to peer node and peer to peer system
US8817595B2 (en) Overlay network node and overlay networks
US20080225866A1 (en) Reducing network traffic to teredo server
US7693091B2 (en) Teredo connectivity between clients behind symmetric NATs
CN104811435A (zh) 用于隐藏使用中继穿越网络地址转换连接的方法和系统
CN103139076A (zh) 分布式哈希表互通网络系统、域间节点及实现方法
US20080225867A1 (en) Faster NAT detection for Teredo client
CN105516382A (zh) Ipv4网络与ipv6物联网节点的通信方法及系统
CN101040506B (zh) 用于初始化对等数据网的方法
KR101124635B1 (ko) IPv4/IPv6 연동 게이트웨이
CN108337331B (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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20161028

Address after: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee after: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY CO., LTD.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

CP01 Change in the name or title of a patent holder

Address after: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee after: Shanghai united information Polytron Technologies Inc

Address before: 200031 Shanghai, Hunan Road, No. 121, building 10, building

Patentee before: SHANGHAI YINGLIAN SOMATOSENSORY INTELLIGENT TECHNOLOGY CO., LTD.

CP01 Change in the name or title of a patent holder