node.js UDP NAT 穿透实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了node.js UDP NAT 穿透实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1191字,纯文字阅读大概需要2分钟。
内容图文
<style></style>源码:https://github.com/zhongchengyi/node-udp-trunnel-demo
1、原理
- A登录Server, NAT A 分配端口11000,Server得到A的地址为100.10.10.10:11000
- B登录Server, NAT B 分配端口22000,Server得到B的地址为200.20.20.20:22000
- 如果A直接发送到200.20.20.20:22000,B会直接把来自A的包丢弃,所以要在NAT B上打一个方向为A的洞,那么A就可以向200.20.20.20:22000发送数据了。
- 打洞指令来自Server。B向A的地址 100.10.10.10:11000发一个UDP,被NAT A丢弃,但在NAT B上建立映射记录,NAT B不再丢弃来自A的报文。
- Server 通知A 可以通信,A 发起 UDP 给 B,NAT B 放行,NAT B 放行, B 收到 A 的包,双方开始通信
来自《P2P技术揭秒-P2P网络技术原理与典型系统开发》第5.4篇
2、流程
- 结点A 以TCP方式 登录服务器,服务器分配ID,服务器TCP返回 ID
- 结点A 收到TCP返回ID后,发送UDP登录消息到服务器,同时携带刚刚收到的ID
- 服务器收到UDP登录消息后,获取UDP的IP和端口,并在服务器记录信息(ID, TCP-socket连接, udp ip, udp 端口)
- 结点B重复1、2、3步。
- 结点B通过TCP向服务器发送反向连接到A的请求。
- 服务器通过TCP通知A向B的UDP IP和端口发送消息,同时返回A的UDP IP和端口给B.
- 结点B收到服务器返回的A的UDP IP和端口后,发送UDP信息到A的UDP IP和端口。
3、前提
- 需要一个有公网地址的电脑,运行服务器程序
- 需要在服务器和客户端都安装node.js和 npm
4、运行截图
内容总结
以上是互联网集市为您收集整理的node.js UDP NAT 穿透实现全部内容,希望文章能够帮你解决node.js UDP NAT 穿透实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。