【问题标题】:SOCKS 5 Server - BND.PORT & BND.ADDRSOCKS 5 服务器 - BND.PORT & BND.ADDR
【发布时间】:2017-03-25 07:21:36
【问题描述】:

在 C++ 中(我没有包含代码,因为这更多的是协议理解问题)我正在创建一个 SOCKS5 服务器并且有几个问题,因为客户端在我发送批准的消息后终止连接。在 RFC 中说 BND.ADDR 和 BND.PORT 用于:RFC 1928

o BND.ADDR 服务器绑定地址

o BND.PORT 服务器绑定 网络八位字节顺序中的端口`

在对 CONNECT 的回复中,BND.PORT 包含连接的端口号 服务器分配连接到目标主机,而 BND.ADDR
包含关联的 IP 地址。

这是我的问题,

  1. 什么是 BND.PORT,我应该为它指定什么?
  2. “指定连接目标主机的服务器”是什么意思 目标主机是“客户端”吗?
    1. 我已经从头到尾阅读了 RFC 5 次,但我还没有理解它,有人可以更详细地了解 BND.PORT 及其含义吗?

我在 Wireshark 中四处寻找,发现 BND.PORT 对于每个请求都不同。 (我不确定要输入哪个端口,因为我尝试的所有操作都导致 Proxifer(袜子客户端)说“服务器进行了意外重播 - 连接终止”

来自实际 SOCKS5 服务器(不是我的)的 Wireshark 连接十六进制转储:

【问题讨论】:

  • 看你的手写字太难了。

标签: socks


【解决方案1】:

只是为了确保我们在同一页面上...这是客户端、服务器和主机之间的关系。请注意,客户端和主机不能直接相互交谈。

客户端 服务器 主机

“指定连接目标主机的服务器”是什么意思 目标主机是“客户端”吗?

没有。 “主机”是客户端尝试通过 SOCKS5 服务器连接的设备。 “客户端”位于 SOCKS5 服务器的另一端,离主机最远。

什么是 BND.PORT,我应该为它指定什么?

BND.PORT 是离开 SOCKS5 服务器的数据包的源端口,发往主机。您无法控制服务器选择的端口。想想看。主机从哪里看到数据包来自哪里?肯定不是客户端。从主机的角度来看,数据包都是来自服务器,它不知道客户端。此外,BND.ADDR 是服务器的 IP。

在使用 CONNECT 的情况下,我说的是真的。我还没有使用 BIND 或 UDP ASSOCIATE 的经验。

【讨论】:

  • 嘿,我忘了更新这个,但是在阅读了 rfc 之后,我发现它只是为我用来处理请求的端口/IP 保留的。我遇到的真正问题是发送一个导致问题的额外字符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多