在C++中(我没有包含代码,因为这更多地是协议理解的问题),我正在创建一个SOCKS5服务器,并有一些问题,因为客户端在我发送批准的消息后终止了连接。在RFC中,它说BND.ADDR和BND.PORT用于:RFC 1928
O BND.ADDR服务器绑定地址 O网络八进制命令中的BND.PORT服务器绑定端口 在对连接的答复中,BND.PORT包含服务器分配到目标主机的端口号,而BND.ADDR则包含端口号。 包含关联的IP地址。
这是我的问题
我在Wireshark里四处闲逛,发现BND.PORT对于每个请求都是不同的。(我不知道该进入哪个端口,因为我所做的每一件事都导致Proxifer ( socks客户端)说:“服务器给出了一个意外的重放连接终止。”
来自实际SOCKS5服务器(不是我的)的Wireshark连接十六进制转储:


发布于 2017-07-04 23:29:43
只是为了确保我们在同一页上..。这是客户机、服务器和主机之间的关系。请注意,客户端和主机不能直接交谈。
客户机<->服务器<->主机
“分配到目标主机的服务器”是什么意思?目标主机是“客户端”吗?
不是的。“主机”是客户端试图通过SOCKS5服务器连接到的设备。“客户端”位于SOCKS5服务器的另一端,离主机最远。
什么是BND.PORT,我应该为它指定什么?
BND.PORT是离开SOCKS5服务器(绑定到主机)的数据包的源端口。您无法控制服务器选择哪个端口。想想看。主机在哪里看到来自哪里的数据包?肯定不是客户干的。从主机的角度来看,数据包都来自服务器,它不知道客户端。此外,BND.ADDR是服务器的IP。
在使用连接的条件下,我所说的是正确的。我还没有BIND或UDP关联的经验。
https://stackoverflow.com/questions/43013695
复制相似问题