在 C++ 中(我没有包含代码,因为这更多的是协议理解问题),我正在创建一个 SOCKS5 服务器,并且有一些问题,因为客户端在我向其发送批准的消息后终止连接。在 RFC 中,它说 BND.ADDR 和 BND.PORT 用于: RFC 1928
o BND.ADDR 服务器绑定地址
o BND.PORT 服务器绑定端口(按网络八位字节顺序)`
在对 CONNECT 的回复中,BND.PORT 包含服务器分配用于连接到目标主机的端口号,而 BND.ADDR
包含关联的 IP 地址。
这是我的问题,
我在 Wireshark 中嗅探,发现 BND.PORT 对于每个发出的请求都是不同的。(我不确定要输入哪个端口,因为我尝试的所有操作都导致 Proxifer(袜子客户端)显示“服务器进行了意外重播 - 连接终止”
只是为了确保我们在同一页面上......这就是客户端、服务器和主机之间的关系。请注意,客户端和主机无法直接相互通信。
客户端 <-> 服务器 <-> 主机
“分配用于连接到目标主机的服务器”是什么意思 目标主机是“客户端”吗?
不。“主机”是客户端尝试通过 SOCKS5 服务器连接的设备。“客户端”位于 SOCKS5 服务器的另一侧,距离主机最远。
什么是 BND.PORT?我应该为它指定什么?
BND.PORT 是离开 SOCKS5 服务器、发往主机的数据包的源端口。您无法控制服务器选择哪个端口。想一想。主机从哪里看到数据包?这肯定不是客户。从主机的角度来看,数据包都是来自服务器,它不知道客户端的情况。另外,BND.ADDR 是服务器的 IP。
我所说的都是在使用CONNECT的情况下的。我还没有使用 BIND 或 UDP ASSOCIATE 的经验。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |