怎样连接udp

来源:百度知道 编辑:UC知道 时间:2024/05/26 04:11:36

在防火墙上钻孔【UDP Hole Puching】:穿透防火墙建立UDP连接

知道现在流行的P2P软件和IM软件是如何让两台分处在不同防火墙后面的电脑直接对话的吗?SIP当然是一种,还有一种被广泛应用的就是本文介绍的UDP Hole Puching技术。

为了便于讲述,我们假设有这样一个网络拓扑结构:

IP=A.A.A.A IP=1.1.1.1

HostA----------FirewallA---------|

|

Server IP=S.S.S.S

|

HostB----------FirewallB---------|

IP=B.B.B.B IP=2.2.2.2

运用这个技术,必须满足下面的条件:

1) HostA和HostB分别通过FirewallA和FirewallB经过NAT用UDP连接到了Server

2) FirewallA和FirewallB都满足这样的特性,即来自相同IP相同Port的数据包,不管目的地IP是多少, 都会NAT成相同的IP+Port,举个例子吧:

HostA通过UDP Port 1234访问主机S1时,防火墙会把数据包NAT成1.1.1.1:5668(举例),那么HostA通过UDP Port 1234访问主机S2时,防火墙仍然会把数据包NAT成1.1.1.1:5668。好在现在的NAT基本上都具备这个特性。

现在,HostA用UDP端口1111连接到Server的5555端口,HostB用端口2222连接到Server的5555端口,在Server看来,HostA来自1.1.1.1:9676(FirewallA NAT过了嘛),HostB则来自2.2.2.