【问题标题】:SOCKS 5 and UDP (C/C++)SOCKS 5 和 UDP (C/C++)
【发布时间】:2023-03-30 15:49:01
【问题描述】:

我知道 SOCKS 5 支持 UDP,并且我已经了解了在与 SOCKS 代理协商时发送/接收的数据包的结构。

我不清楚的一件事是设置注册代理以发送/接收 UDP 数据包的过程。

具体来说,我最大的问题是,“与用于协商 UDP 关联关系的 SOCKS 代理的连接是否仍与 TCP/IP 建立?”。换句话说,“你最终会使用 TCP/IP 套接字来接收通过 SOCKS 代理路由的 UDP 数据包吗?”

我想,如果您使用 TCP/IP 连接来建立 UDP 通信路径,那么您可能会错过建立 UDP 通信的全部要点。但是,另一方面,如果协商是使用 UDP 进行的(并导致了 UDP 套接字),那么当您的应用程序关闭并且不再需要代理“记住”您时,该关系将如何终止?

我一直在网上寻找一个例子......但找不到任何东西。任何帮助(尤其是示例)将不胜感激。

【问题讨论】:

    标签: c++ sockets


    【解决方案1】:

    https://www.rfc-editor.org/rfc/rfc1928

    "基于 UDP 的客户端必须将其数据报发送到 UDP 中继服务器 BND.PORT 在对 UDP ASSOCIATE 的回复中指示的 UDP 端口 请求”

    但是

    "UDP 关联终止时,UDP 连接的 TCP 连接 ASSOCIATE 请求到达时终止。”

    我实际上尝试过使用它一次,但失败了,因为许多“socks5”代理 实现实际上并不支持完整的协议。 所以我建议先设置一个工作测试用例(找到一个应用程序 将支持 socks5 udp 代理和实际工作的代理)。 然后任何网络嗅探器都会告诉你它是如何工作的(如果有的话)。

    【讨论】:

    • 是的,我认为这就是必须的。我只是试驾一下。似乎必须为 UDP 保留两个套接字。
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    相关资源
    最近更新 更多