udp打孔

本文详细介绍了UDP打孔技术的工作原理及其在网络通信中的应用。解释了如何利用具有公网IP的服务器帮助两个位于私有网络内的计算机建立直接通信,并讨论了NAT变换、端口映射等关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备忘:

   这里涉及到两个概念: NAT和PPPoE

   借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)      即可实现私有地址网络内所有计算机与Internet的通信需求。

  udp打孔技术,是两个内网间的计算机A、B需要通信,但却都没有对方的公网IP地址,无法直接进行通信,

  这时需要一个具有公网IP的服务器作为中转站,获取到两台计算机的公网IP、端口号(经过NAT变换)。

  (接下来就可以进行打洞操作,打洞成功后两机之间即可建立连接。)

0.连接服务器前, A、B应已各自建立UDP监听

listenSocket = new DatagramSocket(listenPort);//必须传入listenPort
listenSocket.receive(packet...);

1. A向服务器请求和B(B的ID)通信,服务器查找地址表

listenSocket.send(cmd_packet...);

2.服务器发打洞命令给B,

3. B从打洞命令得到A的IP和端口号,B 发送一段message到A的IP、端口(路由器记录此次NAT会话),

4. B通知服务器,已发message给A,

5. 服务器通知A, A得到B的IP、端口号,

6.A向B的IP、端口发送message ,这样A、B之间建立了一个临时session(session由NAT记录, 超时后会删除此session),

7.打洞完成,两机可互相发送message。

 (经测试,使用域名转换工具,如花生壳,使内部计算机做服务器也可以,关键是在路由器上做一个端口映射到内部计算机服务器的监  听端口)

 

打洞不一定能够成功,原因可能如下:

1 、NAT变换失败(具体需查询交换机支持哪种NAT变换)

2、现在普遍使用的ADSL,分配过来的IP是动态变化的(但在连网期间不应改变,所以A、B连接后应该定时发送连接包,保持连接)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值