当前位置: 首页 > 知识库问答 >
问题:

TCP NAT-遍历/-使用.NET穿孔

许琛
2023-03-14

大多数人似乎都通过UDP使用NAT穿孔,但在我的例子中,我需要使用TCP(这是事实,在有人问“为什么不使用UDP?”之前)我找不到任何示例代码或至少一个适当的教程。我能找到的都是理论上的附属物,但没有使用套接字或TCPClients(我更喜欢套接字)。

有人能给我链接一些示例代码吗?我可以用这些示例代码连接两个NAT后的客户端,或者用示例代码链接到完整的教程?我知道在.NET中很难实现这个目标(我使用的是VB.NET,但我也能阅读和理解C#),但这应该是可能的。

UPnP不是一个选项,因为一些NAT由于安全原因停用了它。

共有1个答案

薛征
2023-03-14

除非您能够访问原始套接字,否则无法通过TCP完成NAT穿孔。您需要对序列号和TTL值进行一些技巧和操作来使其工作。但是,在Windows中,由于滥用原始套接字传播或执行DDoS的恶意软件的剪切量,在XP SP2之后的所有Windows版本上的操作系统的非服务器版本上都不允许原始套接字。

请执行以下操作之一:

  1. 使用UDP,放入代码以重新请求丢失的数据包,或者重构代码以处理丢失的数据包(如果可以的话)。
  2. 使用服务器作为中间人员通过
  3. 一端必须能够创建原始套接字。
 类似资料:
  • 问题内容: 我有这样的html结构。我想获取没有类或ID的第二张表。我如何从中获得第二张桌子? 我正在尝试这样 谁能帮我? 问题答案: 您想遍历元素吗?最好从像 您只能这样做。

  • 问题内容: 我可以在varArgs上使用还是在varArgs上使用? 问题答案: 变量参数的行为与数组相似,因此您可以使用来获取变量变量中的一个: 您可以使用以下方法遍历它们:

  • 问题内容: 我有一个需要迭代的JSON文件,如下所示… 数据中的键并不总是相同的(我只是使用示例,有20个不同的键),因此,我无法设置脚本来静态引用它们以获取值。 否则我可以说 过去我在数据节点上使用了一个简单的foreach循环… 但是不想阻止脚本。有任何想法吗? 问题答案: 您可以通过以下方式遍历JavaScript对象: myobject可能是您的json.data

  • 我有一个自定义对象列表(

  • 经过了之前众多的实践,版本库中已经积累了很多次提交了,从下面的命令可以看出来有14次提交。 $ git rev-list HEAD | wc -l 14 有很多工具可以研究和分析Git的历史提交,在前面的实践中已经用过很多相关的Git命令进行查看历史提交、查看文件的历史版本、进行差异比较等。本章除了对之前用到的相关Git命令作以总结外,还要再介绍几款图形化的客户端。 2.8.1. 图形工具:gi

  • 本文向大家介绍.Net遍历窗体上控件的方法,包括了.Net遍历窗体上控件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了.Net遍历窗体上控件的方法。分享给大家供大家参考。具体分析如下: 本例实现遍历窗体上的控件以及找出TextBox控件,代码如下: 希望本文所述对大家的.Net程序设计有所帮助。