CN100486193C - 多策略的p2p连接建立方法 - Google Patents
多策略的p2p连接建立方法 Download PDFInfo
- Publication number
- CN100486193C CN100486193C CNB2004100803923A CN200410080392A CN100486193C CN 100486193 C CN100486193 C CN 100486193C CN B2004100803923 A CNB2004100803923 A CN B2004100803923A CN 200410080392 A CN200410080392 A CN 200410080392A CN 100486193 C CN100486193 C CN 100486193C
- Authority
- CN
- China
- Prior art keywords
- message
- connection side
- address
- public network
- connection
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2517—Translation of Internet protocol [IP] addresses using port numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2546—Arrangements for avoiding unnecessary translation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1063—Discovery through centralising entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
- H04L67/1091—Interfacing with client-server systems or between P2P systems
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
- Use Of Switch Circuits For Exchanges And Methods Of Control Of Multiplex Exchanges (AREA)
- Communication Control (AREA)
- Gyroscopes (AREA)
- Control Of Motors That Do Not Use Commutators (AREA)
- Control Of Multiple Motors (AREA)
Abstract
本发明提供了一种P2P连接建立方法,包括以下步骤:首先,连接方通过中心服务器向被连接方转发一消息,该消息中附带有连接方地址;然后,被连接方收到所述消息,读取该消息所附带的连接方地址,向连接方地址发起P2P连接,建立P2P连接。本发明还提供了UDP类型的P2P连接建立方法、TCP类型的P2P连接建立方法,以及多策略P2P连接建立方法。使用本发明,可以实现由被连接方发起P2P连接,实现双向的P2P连接的发起建立;并且本发明提供的多策略P2P连接建立方法,尝试采用多种策略建立P2P连接,提高了P2P连通率。
Description
技术领域
本发明涉及点到点信息传输技术领域,特别是指一种P2P及UDP、TCP类型和多策略的P2P连接方法。
背景技术
点到点(P2P,Point to Point)连接技术在因特网上广泛应用于数据传输和数据下载。如图1示出的组网图,一般来说,客户端在登录服务器后,得到被连接方客户端的地址信息后,便可以向被连接方客户端发起P2P连接。下面参见图2示出的BT(BitTorrent)软件实现的数据下载过程,来说明P2P的连接建立过程。
BT软件是一个P2P方式下载文件的软件,实现了在一个客户端(Peer)在下载数据的同时,也为其他Peer提供数据上传的功能,从而实现各个BT客户端之间能够相互传送自己已经下载的数据。以Peer A为例,使用BT软件在实现数据下载时,包括以下步骤:
步骤201:Peer A的BT客户端预先从网络上获取一个后缀名为torrent的信息,该torrent信息存储有提供BT下载服务的服务器(Tracker)地址。然后Peer A的BT客户端根据torrent信息访问Tracker,并上传自己的地址、下载需求等信息给Tracker;
步骤202~203:Tracker根据Peer A请求的本次下载内容对应到客户端列表(Peerlist),然后采取一定策略检索该Peerlist库,选取几个Peer信息并发送给Peer A;其中,选取的Peer信息包括提供数据下载的Peer和需要数据上传的Peer;
步骤204~205:Peer A收到后,采取一定策略,选取能够下载的Peer,直接向该Peer发起TCP协议连接请求,建立到该Peer的P2P连接,并开始下载数据;另一方面,选取需要数据上传的Peer,直接向该Peer发起TCP连接请求,建立到该Peer的P2P连接,并开始上传数据;
步骤206:Peer A周期性的给Tracker上报上传、下载速率、结果等信息;以得到实时更新的Peerlist。
BT软件具有如下缺点:
1)只能使用TCP协议在各个Peer之间建立P2P连接来传输数据,因此对于某些特定应用,如使用UDP传输的实时多媒体数据的传输,使用TCP协议无法满足实时要求。
2)更主要的是,在建立P2P连接时,只能由P2P连接方单向的发起连接,导致连接率过低。
实际上,目前对于普通的P2P连接过程中,也只能由连接方发起连接,而无法由被连接方发起连接。例如,当某用户通过客户端连接到因特网上时,该用户向网络上的某服务器发起P2P连接,以从该服务器下载数据时,仅允许由该用户发起P2P连接的建立,而不会出现作为被连接方的服务器向用户发起P2P连接的建立。因此,在某种情况下,若用户发起的P2P连接无法与服务器建立连接,或者用户无法发起P2P连接的情况时,会导致P2P连接建立失败,从而导致连通率低。
发明内容
有鉴于此,本发明的主要目的在于提供一种P2P连接建立方法,使可以由连接方或被连接方双向发起P2P连接。
本发明还提供了一种UDP类型的P2P连接建立方法、一种TCP类型的P2P连接建立方法,使可以在UDP或TCP类型下的连接方或被连接方双向发起P2P连接。
本发明还提供了一种多策略的P2P连接建立方法,使可以提高P2P节点间连接的成功率。
本发明提供的一种P2P连接建立方法,连接方向被连接方建立P2P连接时,该方法还包括以下步骤:
A、连接方通过中心服务器向被连接方转发连接请求消息;
B、被连接方收到所述消息后,通过中心服务器向连接方转发连接接受请求消息,携带被连接方所使用的UDP或TCP类型;
C、连接方收到连接接受请求消息,判断若被连接方使用UDP方式,则执行步骤D,否则执行步骤E;
D、连接方使用UDP方式与被连接方建立P2P连接,如果成功,则结束当前处理流程;否则,执行步骤F;
E、连接方使用TCP方式与被连接方建立P2P连接,如果成功,则结束当前处理流程;否则,执行步骤F;
F、连接方与被连接方通过中心服务器建立中转通道来建立P2P连接。
本发明提供的一种UDP类型的P2P连接建立方法,连接方和被连接方连接到公网上,并登陆公网上的中心服务器,包括以下步骤:
A4、连接方通过中心服务器向被连接方转发连接测试消息,该消息附带有连接方的私网IP地址和UDP端口;
被连接方收到所述连接测试消息后,直接向该消息附带的连接方私网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方私网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方私网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
B4、连接方直接向被连接方发送连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,直接向该消息附带的连接方公网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方公网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
C4、连接方通过中心服务器向被连接方转发连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,直接向该消息附带的连接方公网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方公网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
D4:连接方通过中心服务器向被连接方转发连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,通过中心服务器向连接方转发响应消息,该响应消息附带了被连接方公网IP地址和UDP端口;
连接方收到所述响应消息后,直接向该响应消息附带的被连接方公网IP地址和UDP端口发送第二次连接测试消息;
被连接方若收到第二次连接测试消息,则向连接方公网IP地址和UDP端口返回第二次响应消息来发起P2P连接;
连接方接收到所述第二次响应消息后响应该P2P连接,建立到被连接方公网IP地址和UDP端口的P2P连接。
本发明提供的一种TCP类型的P2P连接建立方法,包括以下步骤:
A5:连接方判断自己是否在公网上或是否使用sock5代理;若是在公网上或使用sock5代理,则向被连接方发送附带有连接方公网IP地址和TCP端口的连接请求消息,否则向被连接方发送附带的连接方公网IP地址和TCP端口为0的连接请求消息;
B5:被连接方收到连接请求消息后,判断该消息中附带的连接方公网IP地址和TCP端口是否为0,若是,则执行下一步;否则,被连接方直接使用TCP协议连接到该消息附带的连接方公网IP地址和TCP端口,结束;
C5:被连接方判断自己是否在公网上或自己是否使用sock5代理,若是在公网上或使用sock5代理,则向连接方发送附带有被连接方公网IP地址和TCP端口的连接请求消息;
D5:连接方收到所述被连接方发送的连接请求消息后,直接使用TCP协议连接到该消息附带的被连接方公网IP地址和TCP端口。
本发明提供的一种多策略的P2P连接建立方法,连接方和被连接方连接到公网上;包括以下步骤:
A6、连接方通过中心服务器向被连接方转发连接请求消息;
B6、被连接方收到连接请求消息后,通过中心服务器向连接方转发连接接受请求消息,携带被连接方所使用的UDP或TCP类型;
C6、连接方收到连接接受请求消息,判断若被连接方使用UDP方式,则执行步骤D6,否则执行步骤H6;
D6、连接方通过中心服务器向被连接方转发连接测试消息,该消息附带有连接方的私网IP地址和UDP端口;
被连接方收到所述连接测试消息后,直接向该消息附带的连接方私网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方私网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方私网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
E6、连接方直接向被连接方发送连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,直接向该消息附带的连接方公网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方公网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
F6、连接方通过中心服务器向被连接方转发连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,直接向该消息附带的连接方公网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方公网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
G6:连接方通过中心服务器向被连接方转发连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,通过中心服务器向连接方转发响应消息,该响应消息附带了被连接方公网IP地址和UDP端口;
连接方收到所述响应消息后,直接向该响应消息附带的被连接方公网IP地址和UDP端口发送第二次连接测试消息;
被连接方若收到第二次连接测试消息,则向连接方公网IP地址和UDP端口返回第二次响应消息来发起P2P连接;
连接方接收到所述第二次响应消息后响应该P2P连接,建立到被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行步骤L6;
H6:连接方判断自己是否在公网上或是否使用sock5代理;若是在公网上或使用sock5代理,则向被连接方发送附带有连接方公网IP地址和TCP端口的连接请求消息,否则向被连接方发送附带的连接方公网IP地址和TCP端口为0的连接请求消息;
16:被连接方收到连接请求消息后,判断该消息中附带的连接方公网IP地址和TCP端口是否为0,若是,则执行下一步;否则,被连接方直接使用TCP协议连接到该消息附带的连接方公网IP地址和TCP端口,若连接成功,结束,否则执行L6;
J6:被连接方判断自己是否在公网上或自己是否使用sock5代理,若是在公网上或使用sock5代理,则向连接方发送附带有被连接方公网IP地址和TCP端口的连接请求消息;
K6:连接方收到所述被连接方发送的连接请求消息后,直接使用TCP协议连接到该消息附带的被连接方公网IP地址和TCP端口,若连接成功,结束,否则执行步骤L6;
L6、连接方连接中心服务器,向中心服务器申请一个中转通道;
中心服务器分配一个中转通道,并将对应的中转通道标识和对应的钥匙返回给连接方,同时中心服务器将该中转通道标识、钥匙发送给被连接方;
连接方和被连接方通过中心服务器提供的中转通道标识、钥匙建立到中心服务器所分配的该通道的连接。
由上述方法可以看出,本发明相对于现有技术来说,不再仅仅由连接方发起连接,而实现了由被连接方发起P2P连接,从而对于连接方无法建立P2P连接的情况,可以采用本发明尝试建立P2P连接,以增强P2P连接率。
另外,使用本发明所述的UDP连接建立过程,不仅实现双向发起P2P连接,还可以避免同一局域网的用户分别连到因特网后,使用因特网迂回连接,而实现直接使用局域网建立连接。本发明所述的TCP连接建立过程,实现了双向的P2P连接发起过程。可以增强P2P的连接率。
并且,本发明还提供了P2P连接建立过程尝试多种策略建立连接的步骤,并且不再是单向的发起连接,通过多种连接方式尝试建立连接,提高了P2P技术中的节点连接率。
附图说明
图1为包括中心服务器、客户端的组网图。
图2为BT软件实现数据下载的流程图。
图3为本发明P2P连接建立流程图。
图4为本发明多策略P2P连接流程图。
具体实施方式
本发明在连接方客户端无法建立与被连接方客户端的P2P连接时,则向被连接方客户端发送一个信息,将自己的IP地址及使用的UDP或TCP端口通知被连接方,当被连接方收到该消息时,由被连接方向连接方发起建立P2P连接的命令,通过这种方法,使得一个连接可以由被连接方发起P2P的连接,来提高P2P连接建立的成功率。
例如,对于使用图1示出的组网图时,若无法建立由连接方A发起的P2P连接时,可以尝试由被连接方B发起P2P连接,参照图3示出的P2P连接建立流程图,包括以下步骤:
步骤301:连接方A向中心服务器发送信息,要求被连接方B发起P2P连接。其中,该信息中携带一指定地址,该地址为被连接方B所要连接的地址。一般情况下,该指定地址可以是A的公网地址或者私网地址;
步骤302:中心服务器将步骤301所述信息转发给被连接方B;
步骤303:被连接方B收到所述信息后,根据包含的指定地址,向指定地址发起P2P连接。
使用上述步骤,当连接方A不能正常向被连接方B发起P2P连接时,可以实现由被连接方B发起向连接方A的P2P连接,例如,当连接方A为公网的某服务器时,要与某被连接方建立P2P连接时,则使用该方法可以实现P2P的连接。而不像现有技术一样,根本无法实现这种情况下的P2P连接。
另外,不难理解,对于上述步骤,若连接方可以将消息直接发送给被连接方的话,也不需要上述的中心服务器进行消息的中转步骤。
基于以上的P2P连接方法,本发明还提供了一种采用多策略P2P的连接方法,来增强连接到公网上的终端之间的P2P连接建立成功率。
在对所述多种策略的P2P连接方法介绍前,首先说明一下终端连接到公网上时涉及到的地址和端口。本发明所述的公网即为因特网,对应的私网则为局域网。当一个终端连接到公网上时,通常,公网会自动分配给该终端一个在公网上使用的公网IP地址。这样,一个终端可能会存在私网的地址(Local_IP)及对应端口(Local_Port),和公网的地址(Public_IP)及对应端口(Public_Port)。
仍以图1示出的网络结构为例,假设网络中存在一中心服务器,用户客户端登录中心服务器后,可以获得中心服务器提供的服务。假设客户端A、客户端B均已登录中心服务器。在某情况下,客户端A要建立到客户端B的P2P连接以传送文件时,中心服务器将客户端B对应的公网IP地址发送给客户端A。参见图4示出的P2P连接建立流程图,作为连接方的客户端A与作为被连接方的客户端B的P2P连接的建立过程包括以下步骤:
步骤401:连接方A对外侦听(listen)得到自己公网IP和UDP端口(A_Public_IP:A_Public_Port)。这里的公网IP和UDP端口即为A连接到公网时所分配公网地址和UDP端口。然后,A通过中心服务器向B转发连接请求消息。
步骤402:被连接方B收到中心服务器转发的连接请求消息后,判断自己是否使用UDP方式。被连接方B若使用UDP方式,则对外listen自己的公网IP和UDP端口(B_Public_IP:B_Public_Port),然后通过中心服务器向A转发连接接受请求消息,以及通过UDP端口号通知对方自己所使用的是UDP协议;若B使用TCP方式,则通过中心服务器向A转发连接接受请求消息,并通过端口号通知对方自己所使用的是TCP协议。
步骤403:连接方A收到连接接受请求消息,若检测B使用UDP方式,则转步骤404,A尝试使用UDP方式建立与B的P2P连接;若检测B使用TCP方式,则转步骤408,A尝试使用TCP方式建立与B的P2P连接。
通过步骤401~403,连接方A确定出建立与B的P2P连接所使用的协议类型为UDP还是TCP。
步骤404:尝试建立A与B在同一私网内模式下的连接,包括:
连接方A先listen一个本地的A_local_IP:A_local_Port,然后生成test_in_lan消息,通过中心服务器向B转发test_in_lan测试消息。该test_in_lan消息的指定地址中携带有A_local_IP:A_local_Port,要求B直接向A的A_local_IP:A_local_Port响应消息re_test_in_lan;
被连接方B收到所述test_in_lan后,listen一个本地的B_local_IP:B_local_Port,然后直接向A_local_IP:A_local_Port回送re_test_in_lan包,该re_test_in_lan包中附带有B_local_IP:B_local_Port;该re_test_in_lan消息即为被连接方用来发起P2P连接;
若A接收到re_test_in_lan,A直接向地址B_local_IP:B_local_Port发送ack包;若A接收不到re_test_in_lan,则执行步骤405。
以上步骤404为尝试以A和B的私网地址建立P2P连接,这样可以避免同一局域网的用户分别连到因特网后,使用因特网迂回连接,而实现直接使用局域网建立连接。
步骤405:尝试建立A在网内,B在公网模式下的连接。这个过程中,A使用连接到公网的地址建立连接,包括:
连接方A直接向B发送test1测试消息,该消息附带A_Public_IP:A_Public_Port,要求B直接向A_Public_IP:A_Public_Port回响应消息re_test1;
被连接方B收到test1后,直接向A的A_Public_IP:A_Public_Port回送re_test1;
连接方A接收到re_test1,则直接向B_Public_IP:B_Public_Port发一个连接建立的ack包;若A接收不到re_test1,则执行步骤406。
步骤406:尝试建立A在公网,B在网内模式下的连接,包括:
连接方A通过中心服务器向B转发test2测试消息,该消息附带A_Public_IP:A_Public_Port,要求B直接向A_Public_IP:A_Public_Port回响应消息re_test2;
被连接方B收到test2后,直接向A回送re_test2,该re_test2信息即为被连接方用来发起P2P连接;
连接方A接收到re_test2,直接向B_Public_IP:B_Public_Port发一个连接建立的ack包;若A接收不到re_test2,则执行步骤407。
步骤407:尝试建立A、B在不同私网内模式下的连接。这里是A、B通过公网建立P2P连接的步骤,包括:
连接方A发起test3的测试消息,通过中心服务器向B_Public_IP:B_Public_Port转发给B,该消息要求B通过中心服务器向A的A_Public_IP:A_Public_Port回送响应消息re_test3;
被连接方B通过中心服务器向A转发re_test3,其中re_test3附带了B_Public_IP:B_Public_Port;
连接方A收到re_test3,则直接向B的B_Public_IP:B_Public_Port发送test31;
被连接方B若收到test31,则向A返回re_test3消息;若B未收到,则执行步骤412;
连接方A收到re_test3后,则直接向B_Public_IP:B_Public_Port发一个连接建立的ack包;若A接收不到re_test3则执行步骤412。
以上404~407的所述的具体步骤中,当B收到A发送的ack包时,回复给A一个Answer包,表明连接已经用UDP建立,则创建UDP通道启动数据传输过程;
而当A收到B回复的Answer包时,那么也表明连接已经用UDP建立,则创建UDP通道启动数据传输过程。
其中以上所述步骤404~407是使用UDP协议建立P2P连接的过程,以上所述的Port是指UDP端口。通过以上的四种UDP模式的P2P连接的尝试,增强了UDP类型的P2P连接的成功率。
步骤408:连接方A尝试使用TCP协议建立连接,首先判断自己是否在公网上,或根据所记录的软件设置文件(如配置文件)判断自己是否使用sock5代理;若是公网地址或使用sock5代理,则先对外listen一个TCP端口(A_Public_Port_TCP),向B发送连接请求消息,该消息的指定地址携带A_Public_IP:A_Public_Port_TCP,否则,将该消息携带的指定地址中的IP和TCP端口填0,来表示A在网内,发送给B。
其中,连接方A判断自己是否在公网的方法为:当判断A的IP地址不属于私网地址,即判断IP地址不在192.168.*.*、10.1.**、172.(16-31).*.*、169.*.*.*范围内,便可以认为该IP地址为是公网地址。其中,上述IP地址的范围为经验数据,涵盖了大部分情况。
步骤409:B收到连接请求消息后,判断该消息中的指定地址中的IP和TCP端口字段是否为0,若是,则执行步骤410;否则,B直接使用TCP协议连接(CONNECT)到该消息携带的指定地址中的A_Public_IP:A_Public_Port_TCP,建立B到A的连接,若连接失败,则转步骤412。(由A发起连接)
步骤410:B判断自己是否在公网上或自己是否使用sock5代理,若是,则对外listen一个TCP端口,向A发送消息,该消息携带的指定地址包含B_Public_IP:B_Public_Port_TCP;否则,表示B在网内,转步骤412。
步骤411:连接方A收到连接请求消息后,直接使用TCP协议CONNECT到该消息携带的指定地址B_Public_IP:B_Public_Port_TCP,建立A到B的TCP连接,若连接失败,则转步骤412。
步骤408~411是使用TCP尝试建立P2P的过程,可以看出,包括了连接方A发起P2P连接过程,还包括了被连接方B发起P2P连接过程。
步骤412:通过中心服务器建立中转通道来建立终端之间的连接。这个步骤和现有技术通过中转信道建立终端之间P2P连接方法一样,包括:
A连接中心服务器,申请一个房间,所述房间也可称为中转通道(channel);
中心服务器将分配的channel ID和对应的钥匙(key)返回给A,同时中心服务器将该channel ID、key发送给B;
A和B根据该channel ID、key建立到中心服务器提供的该channe1的连接,来实现A和B之间P2P连接的建立。
其中,若是步骤407转过来的步骤,则该过程均采用UDP服务类型;若是从408以后的步骤转过来的,则采用TCP服务类型,换句话说,与之前步骤使用的端口类型相同。
通过上述终端之间建立连接的步骤,两个终端之间可以采用多种方式尝试建立连接,不仅包括连接发起端启动建立连接,还包括由被连接端发起连接,有效的提高了连接率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1、一种P2P连接建立方法,其特征在于,连接方向被连接方建立P2P连接时,该方法包括以下步骤:
A、连接方通过中心服务器向被连接方转发连接请求消息;
B、被连接方收到所述消息后,通过中心服务器向连接方转发连接接受请求消息,携带被连接方所使用的UDP或TCP类型;
C、连接方收到连接接受请求消息,判断若被连接方使用UDP方式,则执行步骤D,否则执行步骤E;
D、连接方使用UDP方式与被连接方建立P2P连接,如果成功,则结束当前处理流程;否则,执行步骤F;
E、连接方使用TCP方式与被连接方建立P2P连接,如果成功,则结束当前处理流程;否则,执行步骤F;
F、连接方与被连接方通过中心服务器建立中转通道建立P2P连接。
2、一种UDP类型的P2P连接建立方法,连接方和被连接方连接到公网上,并登陆公网上的中心服务器,其特征在于,包括以下步骤:
A4、连接方通过中心服务器向被连接方转发连接测试消息,该消息附带有连接方的私网IP地址和UDP端口;
被连接方收到所述连接测试消息后,直接向该消息附带的连接方私网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方私网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方私网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
B4、连接方直接向被连接方发送连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,直接向该消息附带的连接方公网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方公网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
C4、连接方通过中心服务器向被连接方转发连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,直接向该消息附带的连接方公网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方公网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
D4:连接方通过中心服务器向被连接方转发连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,通过中心服务器向连接方转发响应消息,该响应消息附带了被连接方公网IP地址和UDP端口;
连接方收到所述响应消息后,直接向该响应消息附带的被连接方公网IP地址和UDP端口发送第二次连接测试消息;
被连接方若收到第二次连接测试消息,则向连接方公网IP地址和UDP端口返回第二次响应消息来发起P2P连接;
连接方接收到所述第二次响应消息后响应该P2P连接,建立到被连接方公网IP地址和UDP端口的P2P连接。
3、一种TCP类型的P2P连接建立方法,其特征在于,包括以下步骤:
A5:连接方判断自己是否在公网上或是否使用sock5代理;若是在公网上或使用sock5代理,则向被连接方发送附带有连接方公网IP地址和TCP端口的连接请求消息,否则向被连接方发送附带的连接方公网IP地址和TCP端口为0的连接请求消息;
B5:被连接方收到连接请求消息后,判断该消息中附带的连接方公网IP地址和TCP端口是否为0,若是,则执行下一步;否则,被连接方直接使用TCP协议连接到该消息附带的连接方公网IP地址和TCP端口,结束;
C5:被连接方判断自己是否在公网上或自己是否使用sock5代理,若是在公网上或使用sock5代理,则向连接方发送附带有被连接方公网IP地址和TCP端口的连接请求消息;
D5:连接方收到所述被连接方发送的连接请求消息后,直接使用TCP协议连接到该消息附带的被连接方公网IP地址和TCP端口。
4、一种多策略的P2P连接建立方法,连接方和被连接方连接到公网上;其特征在于,包括以下步骤:
A6、连接方通过中心服务器向被连接方转发连接请求消息;
B6、被连接方收到连接请求消息后,通过中心服务器向连接方转发连接接受请求消息,携带被连接方所使用的UDP或TCP类型;
C6、连接方收到连接接受请求消息,判断若被连接方使用UDP方式,则执行步骤D6,否则执行步骤H6;
D6、连接方通过中心服务器向被连接方转发连接测试消息,该消息附带有连接方的私网IP地址和UDP端口;
被连接方收到所述连接测试消息后,直接向该消息附带的连接方私网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方私网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方私网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
E6、连接方直接向被连接方发送连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,直接向该消息附带的连接方公网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方公网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
F6、连接方通过中心服务器向被连接方转发连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,直接向该消息附带的连接方公网IP地址和UDP端口回送响应消息来发起P2P连接,该响应消息附带有被连接方公网IP地址和UDP端口;
连接方接收到所述响应消息后响应该P2P连接,建立到该响应消息附带的被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行下一步;
G6:连接方通过中心服务器向被连接方转发连接测试消息,该消息附带连接方公网IP地址和UDP端口;
被连接方收到该连接测试消息后,通过中心服务器向连接方转发响应消息,该响应消息附带了被连接方公网IP地址和UDP端口;
连接方收到所述响应消息后,直接向该响应消息附带的被连接方公网IP地址和UDP端口发送第二次连接测试消息;
被连接方若收到第二次连接测试消息,则向连接方公网IP地址和UDP端口返回第二次响应消息来发起P2P连接;
连接方接收到所述第二次响应消息后响应该P2P连接,建立到被连接方公网IP地址和UDP端口的P2P连接,结束;若连接方未接收到响应消息,则执行步骤L6;
H6:连接方判断自己是否在公网上或是否使用sock5代理;若是在公网上或使用sock5代理,则向被连接方发送附带有连接方公网IP地址和TCP端口的连接请求消息,否则向被连接方发送附带的连接方公网IP地址和TCP端口为0的连接请求消息;
I6:被连接方收到连接请求消息后,判断该消息中附带的连接方公网IP地址和TCP端口是否为0,若是,则执行下一步;否则,被连接方直接使用TCP协议连接到该消息附带的连接方公网IP地址和TCP端口,若连接成功,结束,否则执行L6;
J6:被连接方判断自己是否在公网上或自己是否使用sock5代理,若是在公网上或使用sock5代理,则向连接方发送附带有被连接方公网IP地址和TCP端口的连接请求消息;
K6:连接方收到所述被连接方发送的连接请求消息后,直接使用TCP协议连接到该消息附带的被连接方公网IP地址和TCP端口,若连接成功,结束,否则执行步骤L6;
L6、连接方连接中心服务器,向中心服务器申请一个中转通道;
中心服务器分配一个中转通道,并将对应的中转通道标识和对应的钥匙返回给连接方,同时中心服务器将该中转通道标识、钥匙发送给被连接方;
连接方和被连接方通过中心服务器提供的中转通道标识、钥匙建立到中心服务器所分配的该通道的连接。
Priority Applications (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100803923A CN100486193C (zh) | 2004-09-29 | 2004-09-29 | 多策略的p2p连接建立方法 |
PT05792016T PT1796341E (pt) | 2004-09-29 | 2005-09-26 | Método para estabelecer uma ligação p2p |
JP2007533853A JP4417417B2 (ja) | 2004-09-29 | 2005-09-26 | ピア・ツー・ピア接続の確立方法 |
AT05792016T ATE519314T1 (de) | 2004-09-29 | 2005-09-26 | Verfahren zur herstellung der p2p-verbindung |
PCT/CN2005/001564 WO2006034635A1 (fr) | 2004-09-29 | 2005-09-26 | Procede permettant d'etablir une connexion p2p |
ES05792016T ES2369759T3 (es) | 2004-09-29 | 2005-09-26 | Procedimiento para el establecimiento de una conexión p2p. |
KR20077007776A KR100997175B1 (ko) | 2004-09-29 | 2005-09-26 | 피어 투 피어 연결 설정 방법 |
EP20050792016 EP1796341B1 (en) | 2004-09-29 | 2005-09-26 | A method for establishing the P2Pconnection |
DK05792016T DK1796341T3 (da) | 2004-09-29 | 2005-09-26 | Fremgangsmåde til etablering af P2P-forbindelse |
US11/691,546 US7797429B2 (en) | 2004-09-29 | 2007-03-27 | Method for establishing peer-to-peer connection |
HK07107427A HK1102983A1 (en) | 2004-09-29 | 2007-07-11 | A method for establishing the p2p connection |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100803923A CN100486193C (zh) | 2004-09-29 | 2004-09-29 | 多策略的p2p连接建立方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1756213A CN1756213A (zh) | 2006-04-05 |
CN100486193C true CN100486193C (zh) | 2009-05-06 |
Family
ID=36118575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100803923A Active CN100486193C (zh) | 2004-09-29 | 2004-09-29 | 多策略的p2p连接建立方法 |
Country Status (11)
Country | Link |
---|---|
US (1) | US7797429B2 (zh) |
EP (1) | EP1796341B1 (zh) |
JP (1) | JP4417417B2 (zh) |
KR (1) | KR100997175B1 (zh) |
CN (1) | CN100486193C (zh) |
AT (1) | ATE519314T1 (zh) |
DK (1) | DK1796341T3 (zh) |
ES (1) | ES2369759T3 (zh) |
HK (1) | HK1102983A1 (zh) |
PT (1) | PT1796341E (zh) |
WO (1) | WO2006034635A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100433657C (zh) * | 2006-05-11 | 2008-11-12 | 蓝汛网络科技(北京)有限公司 | 适用于大规模流媒体直播系统的对等网络成员管理方法 |
CN101079871B (zh) * | 2006-09-29 | 2011-05-11 | 腾讯科技(深圳)有限公司 | 多媒体信息流的透传方法和系统 |
KR101341456B1 (ko) * | 2006-10-02 | 2013-12-16 | 엘지전자 주식회사 | 이동통신 단말기간의 피투피 통신 방법, 및 이를 구현하기위한 이동통신 단말기 |
JP2008181281A (ja) * | 2007-01-24 | 2008-08-07 | Hitachi Ltd | ピア・ツー・ピア通信を行うネットワークシステム |
US8392604B2 (en) * | 2007-10-09 | 2013-03-05 | Yahoo! Inc. | Peer to peer browser content caching |
WO2009095461A1 (en) * | 2008-01-30 | 2009-08-06 | International Business Machines Corporation | Method and system of updating a plurality of computers |
CN101547134B (zh) * | 2008-03-27 | 2011-12-28 | 北京铭万互联科技有限公司 | 一种udp连接和tcp连接相互转化的方法、系统及中转服务器 |
US8073959B2 (en) * | 2008-03-28 | 2011-12-06 | Microsoft Corporation | Automatically detecting whether a computer is connected to a public or private network |
KR101049912B1 (ko) * | 2009-02-24 | 2011-07-19 | (주)닥터소프트 | 네트워크 시스템 간의 접속 방법 |
US20100260101A1 (en) * | 2009-04-08 | 2010-10-14 | Qualcomm Incorporated | Route optimization for directly connected peers |
JP2011188111A (ja) * | 2010-03-05 | 2011-09-22 | Sony Corp | 通信端末装置、ネットワーク機器、通信システム、および通信方法 |
US8620986B2 (en) * | 2010-03-24 | 2013-12-31 | Blackberry Limited | Peer-to-peer network connectivity status |
US8352576B2 (en) * | 2010-11-15 | 2013-01-08 | Google Inc. | Media file access |
US9560141B2 (en) * | 2010-12-29 | 2017-01-31 | Open Invention Network, Llc | Method and apparatus of performing peer-to-peer communication establishment |
TWI429308B (zh) * | 2011-02-14 | 2014-03-01 | Wistron Corp | 建立點對點傳輸的方法及行動通訊系統 |
CN102413182A (zh) * | 2011-11-17 | 2012-04-11 | 南京天溯自动化控制系统有限公司 | 一种智能家居设备远程监控装置和方法 |
JP6132267B2 (ja) * | 2012-03-21 | 2017-05-24 | パナソニックIpマネジメント株式会社 | 複数の通信機器間の通信確立の仲介を行う電子機器および通信システム |
CN104735753A (zh) * | 2013-12-20 | 2015-06-24 | 华为技术有限公司 | 通信方法、用户设备和网络侧设备 |
CN103873472A (zh) * | 2014-03-18 | 2014-06-18 | 广州市纬志电子科技有限公司 | 一种自动连接网络的方法 |
TWI551100B (zh) * | 2014-06-13 | 2016-09-21 | 物聯智慧科技(深圳)有限公司 | 用以進行點對點連接的方法、伺服器與裝置 |
US10079728B2 (en) * | 2014-11-17 | 2018-09-18 | Vudu, Inc. | System and method for discovery of devices on a network |
WO2016190657A1 (ko) * | 2015-05-26 | 2016-12-01 | 김태정 | 단말 및 단말의 동작 방법 |
CN106487864B (zh) * | 2015-09-02 | 2019-09-27 | 华为终端有限公司 | 数据连接的建立方法、服务端及移动终端 |
TWI578748B (zh) * | 2015-10-13 | 2017-04-11 | Virtual private network connection method | |
WO2017105152A1 (ko) * | 2015-12-17 | 2017-06-22 | 엘지전자 주식회사 | 무선 통신 시스템에서 nan 단말이 데이터 교환을 수행하는 제공하는 방법 및 장치 |
US10749913B2 (en) * | 2018-09-27 | 2020-08-18 | Intel Corporation | Techniques for multiply-connected messaging endpoints |
CN114401304B (zh) * | 2021-11-15 | 2024-04-26 | 广州方阵科技有限公司 | 一种基于ip的去中心化端到端连接通信系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69628965T2 (de) * | 1995-03-22 | 2004-02-26 | Sun Microsystems, Inc., Mountain View | Verfahren und Gerät zum Verwalten von Beziehungen zwischen Objekten in einer verteilten Objektumgebung |
US20010015977A1 (en) * | 1999-10-08 | 2001-08-23 | Stefan Johansson | Selective reception |
WO2002057917A2 (en) * | 2001-01-22 | 2002-07-25 | Sun Microsystems, Inc. | Peer-to-peer network computing platform |
KR100397673B1 (ko) * | 2001-05-11 | 2003-09-13 | 주식회사 비즈모델라인 | 씨디엔을 이용한 클라이언트간 직접 데이터 통신 방법 |
US7676579B2 (en) * | 2002-05-13 | 2010-03-09 | Sony Computer Entertainment America Inc. | Peer to peer network communication |
EP1385323A1 (en) * | 2002-07-24 | 2004-01-28 | Koninklijke KPN N.V. | A system, a method and apparatus for peer-to peer exchange of information |
US6990352B2 (en) * | 2002-10-03 | 2006-01-24 | Nokia Corporation | GPRS signaling via SMS messages |
KR100474064B1 (ko) * | 2002-12-02 | 2005-03-10 | 주식회사데이콤 | 방화벽 환경에서의 p2p 접속 방법 |
US7899932B2 (en) * | 2003-01-15 | 2011-03-01 | Panasonic Corporation | Relayed network address translator (NAT) traversal |
IL156924A (en) * | 2003-07-15 | 2009-05-04 | Tadiran Telecom Ltd | Communication between users located behind nat device |
US7961663B2 (en) * | 2004-04-05 | 2011-06-14 | Daniel J. LIN | Peer-to-peer mobile instant messaging method and device |
TW200536362A (en) * | 2004-04-30 | 2005-11-01 | Chin-Lung Peng | Internet phone system and method for establishing peer to peer communication |
-
2004
- 2004-09-29 CN CNB2004100803923A patent/CN100486193C/zh active Active
-
2005
- 2005-09-26 PT PT05792016T patent/PT1796341E/pt unknown
- 2005-09-26 KR KR20077007776A patent/KR100997175B1/ko active IP Right Grant
- 2005-09-26 ES ES05792016T patent/ES2369759T3/es active Active
- 2005-09-26 WO PCT/CN2005/001564 patent/WO2006034635A1/zh active Application Filing
- 2005-09-26 EP EP20050792016 patent/EP1796341B1/en active Active
- 2005-09-26 AT AT05792016T patent/ATE519314T1/de active
- 2005-09-26 JP JP2007533853A patent/JP4417417B2/ja active Active
- 2005-09-26 DK DK05792016T patent/DK1796341T3/da active
-
2007
- 2007-03-27 US US11/691,546 patent/US7797429B2/en active Active
- 2007-07-11 HK HK07107427A patent/HK1102983A1/xx unknown
Non-Patent Citations (4)
Title |
---|
利用Sockets实现Internet点对点数据传送. 梁海勇等.吉林大学学报,第20卷第1期. 2002 |
利用Sockets实现Internet点对点数据传送. 梁海勇等.吉林大学学报,第20卷第1期. 2002 * |
非固定IP地址的点对点通信. 李俐,冯徐波.河海大学常州分校学报,第14卷第1期. 2000 |
非固定IP地址的点对点通信. 李俐,冯徐波.河海大学常州分校学报,第14卷第1期. 2000 * |
Also Published As
Publication number | Publication date |
---|---|
ATE519314T1 (de) | 2011-08-15 |
DK1796341T3 (da) | 2011-10-17 |
EP1796341A4 (en) | 2010-01-27 |
CN1756213A (zh) | 2006-04-05 |
WO2006034635A1 (fr) | 2006-04-06 |
ES2369759T3 (es) | 2011-12-05 |
EP1796341A1 (en) | 2007-06-13 |
US7797429B2 (en) | 2010-09-14 |
US20070288656A1 (en) | 2007-12-13 |
KR100997175B1 (ko) | 2010-11-29 |
PT1796341E (pt) | 2011-10-03 |
KR20070088568A (ko) | 2007-08-29 |
JP4417417B2 (ja) | 2010-02-17 |
JP2008515067A (ja) | 2008-05-08 |
HK1102983A1 (en) | 2007-12-07 |
EP1796341B1 (en) | 2011-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100486193C (zh) | 多策略的p2p连接建立方法 | |
TWI408936B (zh) | 網路穿透方法及網路通訊系統 | |
CN102685214B (zh) | 用于对等混合通信的系统和方法 | |
CN101141420B (zh) | 私网与公网进行数据通信的方法及系统 | |
CN1881916B (zh) | 一种在通信设备间实现通信的方法及装置 | |
US8296443B2 (en) | Method of discovering operator-provided network-services using IMS | |
CN101843079A (zh) | 传输对潜在配置的选择 | |
CN1439213A (zh) | 包交换网络中用于传送音频数据的方法 | |
US7860105B2 (en) | Connections of nodes on different networks | |
CN101056310A (zh) | 通信装置 | |
WO2004025899A1 (fr) | Procede de connexion de dispositifs dans une mise en reseaux de type dynamique | |
WO2009058554A4 (en) | Method and apparatus for peer to peer link establishment over a network | |
CN101129060B (zh) | 用于借助于对等数据库建立VoIP通信的方法 | |
US20040136511A1 (en) | Extensible communication controls | |
CN113949695A (zh) | 访问网络的方法、媒体网关、电子设备及存储介质 | |
US20160065746A1 (en) | Peer-to-peer, internet protocol telephone system with proxy interface for configuration data | |
US20090245499A1 (en) | Call transfer system and call transfer control method | |
CA2568697C (en) | Distributed server network | |
CN100499642C (zh) | 一种向位置服务器查询路由的方法 | |
CN101631145A (zh) | 一种预测nat设备端口的方法 | |
JP2003345686A (ja) | ネット家電遠隔操作方法、装置およびプログラム | |
US20080137647A1 (en) | VoIP terminal and method for providing multi-call service | |
JP2006509457A (ja) | 分散ゲートウェイ選択を有する通信システム | |
JP5465080B2 (ja) | 通信装置、通信システムおよび着信制御方法 | |
CN103825914B (zh) | 一种sn信息上报方法、dsn p2p网络与ims网络通信方法及设备 |
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 |