TCP打孔(NAT穿越)库什么的?

2024-03-27

我想用 C# 进行 TCP 打洞(NAT 穿越)。如果需要,可以使用集合服务器来完成。我发现http://sharpstunt.codeplex.com/ http://sharpstunt.codeplex.com/但无法让它发挥作用。理想情况下,我需要一些方法,我给出一个端口号(int)作为参数,调用此方法后在 NAT 上可用(“端口转发”)。如果该方法只返回某个可在 NAT 上使用的端口号,也可以。有人用 C# 做过这个吗?你能给我一些关于 Sharpstunt 或其他东西的工作例子吗?


在每种网络场景中,TCP 打洞的操作方式与 UDP 打洞类似。例如,如果两个对等点 A 和 B 位于不同的 NAT 后面,则每个对等点发送到另一个对等点的第一个 SYN 数据包会在各自的 NAT 中打开与其公共地址关联的漏洞。如果 A 发往 B 的第一个 SYN 数据包在 B 发往 A 的第一个 SYN 数据包到达 B 的 NAT 之前到达 B 的 NAT,则 B 的 NAT 会认为 A 的 SYN 数据包是未经请求的,并将其丢弃。然而,随后 B 的第一个 SYN 数据包可以成功通过 A 的 NAT,因为 A 的 NAT 将 B 的公共地址识别为 A 发起的传出会话的目的地。

所以是的。 TCP打孔是可能的。我不明白为什么有人会有不同的想法。

另外,您不能手动创建这种类型的行为吗?它不需要依赖于任何特定协议,只要收集所有所需信息的步骤相同即可。

一般来说,TCP 打孔(3.2.1)进行如下:

客户:A、B 服务器:S

• A 使用其与 S 的连接向 S 请求连接 与 B. • S 用 B 的私有地址和公共地址回复 A, 同时将A的地址发送给B。

• A 和 B 异步建立传出连接 诱惑(发送 SYN 数据包)到彼此的公共和 私有地址,来自他们使用的同一端口 向S注册。同时,他们监听 本地 TCP 上的 TCP 传入连接尝试 端口。

• A 和 B 等待对其输出的 SYN-ACK 响应 发出 SYN 数据包或传入连接请求 (SYN 数据包)。如果连接失败,对等方可以重试 它达到最大超时期限。

• 一旦三向握手过程完成, 对等点互相验证。如果是正品—— 失败,对等方关闭该连接并等待 另一个连接已成功通过身份验证。这 将使用第一个成功验证的连接 传输 TCP 数据。

(我知道这不是一个答案,但没有足够的空间发表评论)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP打孔(NAT穿越)库什么的? 的相关文章

  • 如何将这段 javascript 代码重写为 C++11?

    这是我在 Javascript Definitive Guide 中看到的 javascript 闭包代码 我想把它写成C 11 var uniqueID1 function var id 0 return function return
  • 使用 #pragma Once 和 #ifndef 时出现 VS 2010 C++ LNK2005 错误

    1 gt Deck obj error LNK2005 class Card card card 3VCard A already defined in Card obj 1 gt PokerTester obj error LNK2005
  • 在 WCF 上重用我的 PagedList 对象

    问题 我有一个自定义集合PagedList
  • strtok() 使用安全吗[重复]

    这个问题在这里已经有答案了 我读到了很多负面的东西strtok 有人说它已经过时 有人说它不是线程安全的 等等 那么真相是什么 我可以使用吗strtok 它是线程安全的吗 Note 我正在使用 Visual C 您可以使用它 它是标准库的一
  • C# 中 PKCS11Interop 库的线程安全使用 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 PKCS11Interop 在 HSM 内执行密钥管理操作 我使用的 HSM 是 Thales PCI Express 下面是
  • 如何从不同的线程访问控件?

    如何从创建控件的线程以外的线程访问控件 避免跨线程错误 这是我的示例代码 private void Form1 Load object sender EventArgs e Thread t new Thread foo t Start p
  • 从内存流播放视频文件

    只是好奇看看这是否可能 我有一个 Windows 应用程序 它从我的电脑上的 avi 文件读取所有字节 然后将其存储在 byte 中 现在我的内存中有 avi 文件 我想直接从内存将其加载到某种视频播放器控件中 我尝试过使用 wmplaye
  • 如何使用 CUDA/Thrust 对两个数组/向量根据其中一个数组中的值进行排序

    这是一个关于编程的概念问题 总而言之 我有两个数组 向量 我需要对一个数组 向量进行排序 并将更改传播到另一个数组 向量中 这样 如果我对 arrayOne 进行排序 则对于排序中的每个交换 arrayTwo 也会发生同样的情况 现在 我知
  • 如何调试.NET Windows Service OnStart方法?

    我用 NET 编写的代码仅在作为 Windows 服务安装时才会失败 该故障甚至不允许服务启动 我不知道如何进入 OnStart 方法 如何 调试 Windows 服务应用程序 http msdn microsoft com en us l
  • std::make_pair 与浮点数组(float2,无符号整数)

    我有一个用 float2 unsigned int 对模板化的向量 例如 std vector
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • 查找方法不适用于 EF6.1 模拟

    我已经使用这些 msdn 指南设置了模拟 使用模拟框架进行测试 EF6 及以上 http msdn microsoft com en us data dn314429 var bsAc db BusAcnts FirstOrDefault
  • 如何禁用基于 ValidationRule 类的按钮?

    如何禁用基于 ValidationRule 类的 WPF 按钮 下面的代码可以很好地突出显示 TextBox
  • 实体框架读取列但阻止其更新

    给定一个数据库表 其中有一列包含历史数据但不再填充 实体框架中是否有一种方法可以读取该列 但在使用相同的模型对象时防止它被更新 例如我有一个对象 public class MyObject public string CurrentData
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • 在 LP2844Z(Zebra 打印机)上的收据中包含 PNG [重复]

    这个问题在这里已经有答案了 我正在致力于创建一个基于 HTML5 画布的签名 绘图框 目前我们在服务器上将画布保存为PNG 但可以轻松地将base64字符串保存在数据库中 现在的问题是我们如何在打印的收据上添加签名 目前我们使用 GF 字段

随机推荐

  • Django 中 GROUP BY 中注释的聚合

    UPDATE 感谢发布的答案 我找到了一种更简单的方法来表述问题 原问题可以在修订历史中看到 问题 我正在尝试将 SQL 查询转换为 Django 但收到一个我不明白的错误 这是我的 Django 模型 class Title models
  • 如何使用dos批处理文件命令将日期设置为当前日期

    如何使用 dos 批处理文件命令将日期设置为当前日期 如果您需要在批处理文件中使用当前日期 则变量 date 有当前日期 echo date 23 02 2010 它使用您计算机的区域设置的格式 在我的电脑里是dd mm yyyy 自从 不
  • CMake 在 include_directories 中找不到正确的头文件/包含文件

    当我尝试编译时 我再次收到 架构 x86 64 的未定义符号 错误 我已经尝试了比这篇文章中实际记录的更多的内容 因为我已经忘记了我尝试过的所有内容 这是一个非常简单的设置should使用 CMake 很容易编译 当我对此运行 make 时
  • 如何使用 javascript 知道图像是否已加载

    我正在编写一个显示相册的网站 该页面正在加载拇指并在每张图片完全加载之前在它们上应用白色叠加层 我在本地编写了这个代码 效果很好 但是在我的服务器上上传文件并加载页面会带来一些显示错误 一些白色覆盖层不会淡出 因为 jQueryload函数
  • 如何使用命名管道在 c++ .dll 和 C# 应用程序之间发送消息?

    我正在制作一个用 C 编写的注入 dll 并且我想使用命名管道与 C 应用程序进行通信 现在 我在 C 应用程序中使用内置的 System IO Pipe net 类 并在 C 中使用常规函数 我在 C 方面没有太多经验 阅读 这是我的第一
  • C#:从 JSON 结构中提取/检索子节点

    我们如何从 C 中的 JSON 结构中提取或检索子节点值 我的应用程序正在使用 我需要检索name from city temp from list and 描述 from weather节点 我的 JSON 和类结构如下 cod 200
  • 如何在Excel工作簿之间复制和粘贴工作表?

    如果使用 VBA 打开两个 Excel 应用程序 如何将工作表从一个 Excel 应用程序 1 传输到另一个 2 问题是 程序员使用 JavaScript 当您单击将 Web 数据传输到 xl 工作簿的按钮时 它会打开一个新的 Excel
  • iOS 5 不允许将下载的数据存储在 Documents 目录中?

    我为我的客户制作了一个应用程序 将目标 iOS 保留为 4 但由于应用程序仍未提交到Apple store 我的客户正计划将其升级到iOS 5 0 为此我阅读了苹果的指导方针 https developer apple com icloud
  • symfony2 空 jsonResponse

    我的 JsonResponse 有问题 这是我的代码 repo this gt getDoctrine gt getRepository repoName users repo gt findAll return new JsonRespo
  • Django 模型:delete() 未触发

    我有一个模型 class MyModel models Model def save self print saving def delete self print deleting save 方法被触发 但 delete 没有被触发 我使
  • fxml getController() 返回 null

    我是 JavaFX 的新手 谁能帮我 这是我的代码 Stage stage new Stage FXMLLoader loader new FXMLLoader Parent root Parent loader load getClass
  • C# Blazor 错误 BL0005 - 正确设置组件属性

    我已经对此错误进行了研究 但只是不理解正确的解决方案 示例代码 直接取自供应商示例 https blazor syncfusion com documentation menu bar getting started https blazo
  • org.xml.sax.SAXParseException 文档中根元素后面的标记必须格式正确

    我知道有一些类似的线程 但它们对我没有任何帮助 我正在尝试通过 Java 创建 XML 文件 但我在这一行不断看到此错误doc db parse is 有人可以告诉我哪里错了吗 错误 Severe Fatal Error 2 2 The m
  • Matplotlib:仅将单元格颜色应用于某些列/单元格

    让我自己陷入了困境 我正在 Matplotlib 中创建一个基本表 通过 Pandas 但这不是问题 我想要完成的是创建一个表 其中第一列 将是字符串值 保持白色 但列 2 3 4 5 6 是浮动 整数 并将由自定义着色标准化颜色图 I v
  • Facebook 页面插件仅显示链接而不显示页面

    我的 facebook 页面插件只是向我显示一个链接而不是页面 我尝试将 http https 添加到 js src 但没有任何效果 我也在本地以及托管服务器上尝试过 但给了我相同的结果 div class fb page blockquo
  • PRIME ng 确认服务的 Angular 单元测试

    首先 我是角度单元测试的新手 我想对以下从数据中删除记录的方法进行单元测试 方法是 Confirm Button for deletion confirm name string id any this confirmationServic
  • 使用 sourcetree 将推送恢复到远程

    我不小心将一个功能分支推送到了远程主控 现在我想将 master 恢复到之前的提交 当我选择 将当前分支恢复到此提交 时 仅恢复本地分支 并且由于远程主分支领先 55 意外推送 我无法将刚刚恢复的本地主分支推送到远程 当在 SO 和 Goo
  • 将 data.frame 转换为 ff

    我想将 data frame 转换为 ff 对象 并使用 as ffdf 进行描述here https stackoverflow com questions 15787221 how can i apply ffdf to non ato
  • 如何将绘图线颜色从蓝色更改为黑色

    当我生成一组数据并尝试在 python 中为绘图线着色时 我陷入了困境 例如 我想在这里将线条颜色从蓝色更改为黑色 这就是我所拥有的 返回的是我从 pandas 获得的数据集 ax plt gca ax set axis bgcolor c
  • TCP打孔(NAT穿越)库什么的?

    我想用 C 进行 TCP 打洞 NAT 穿越 如果需要 可以使用集合服务器来完成 我发现http sharpstunt codeplex com http sharpstunt codeplex com 但无法让它发挥作用 理想情况下 我需