p2p - 所有 NAT 类型的 P2P 连接
问题描述
最近我正在开发一个 p2p 应用程序,我发现了如何使用 ICE 和 STUN 协议使用 c# 对 UDP 打孔进行编程。
它很好,但对称 NAT 和使用对称 NAT 的路由器有一些限制。\
我正在寻找一种通过任何 NAT 类型连接两个系统的方法。
无论如何,我也尝试过 UPNP 和端口转发,但由于防火墙和路由器黑名单,这个选项不在我的脑海中,如果你的回答是,请描述我应该如何正确使用这个方法。
提前致谢。
解决方案
Upnp 和 NAT-PMP 对于那些支持这些协议的路由器来说非常有用,我还没有遇到像“防火墙和路由器黑名单”这样的问题。
在路由器不支持这些协议的情况下,我使用的是 ICE。如您所说,对称NAT是一种保持最高安全性的类型,如果端口随机增加,则很难打孔。使用服务器作为中继(ICE 可以做到)比克服随机算法容易得多。
如果您对对称 NAT 的源代码感兴趣,它位于 nf_nat_core.c 之类的文件中,很容易跟踪和了解它的工作原理。
推荐阅读
- javascript - 数组自动更改值
- c# - 无法在 MFC ActiveX Com 控件对话框上显示工具提示
- mysql - 执行插入语句时出现重复的列名“未知”错误,mysql
- python - 在特定属性上使用 prefetch_related?
- c++ - 防止跨系统的浮点运算差异
- python - Python:当单个列表的值与数据框列的值匹配时,从数据框中删除行
- java - HTTP 状态 500 - 实例化 servlet 类时出错,在本地主机上运行,但不在 AWS Tomcat 上
- html - 仅在 chrome (android) 和 safari (iphone) 上堆叠的 div 之间有额外的空白
- reactjs - componentWillReceiveProps 已重命名
- c# - 字符串运算符 + 源代码在哪里?