Network programming socks协议是如何工作的

Network programming socks协议是如何工作的,network-programming,socks,Network Programming,Socks,目前我需要实现socks客户端。根据RFC,Socks协议有两个主要命令:CONNECT和BIND连接用于将出站连接从socks的客户端转发到所需的服务器。绑定用于将入站连接从所需服务器转发到socks的客户端 我的客户的工作如下: 首先,它连接到socks服务器,我们称之为“客户端连接” 然后它发出命令 我对“客户关系”的使用有一些误解。因此,我有以下问题: “客户端连接”只能用于一个连接命令,对吗?因此,对于每个需要的通信,我需要创建一个新的“客户机连接”,然后发出CONNECT命令 对于绑

目前我需要实现socks客户端。根据RFC,Socks协议有两个主要命令:
CONNECT
BIND
<代码>连接用于将出站连接从socks的客户端转发到所需的服务器。绑定用于将入站连接从所需服务器转发到socks的客户端

我的客户的工作如下:

  • 首先,它连接到socks服务器,我们称之为“客户端连接”

  • 然后它发出命令

  • 我对“客户关系”的使用有一些误解。因此,我有以下问题:

  • “客户端连接”只能用于一个连接命令,对吗?因此,对于每个需要的通信,我需要创建一个新的“客户机连接”,然后发出CONNECT命令

  • 对于
    绑定
    ,首先,我需要发出
    CONNECT
    ,然后发出命令BIND。这些命令必须在一个“客户端连接”中发出,对吗

  • socks服务器在
    BIND
    socket上可以接收多少入站连接?只有一个

  • 如何使用
    BIND
    情况下的流量?我们有一个到socks服务器的“客户端连接”。对于“客户端连接”,socks服务器有一个到所需服务器的连接和一个来自所需服务器的传入连接。因此,socks服务器可以从两个连接接收数据。如何将此流量混合到“客户端连接”

  • 否。绑定与连接是分开的。当你想监听时,你告诉服务器代表你监听,并告诉他你正在监听哪个端口
  • 通过
  • 客户端和SOCKS服务器之间只有一个连接。从客户端到达的所有内容都会发送到“所需的服务器”。来自“所需服务器”的所有信息都会发送到客户端。没有什么可混合的。你不会希望客户的邮件被退回给他吧

  • 在我看来,如果我在一个“客户端连接”中发出两个连续的命令CONNECT和BIND,那么socks服务器将有两个与我的“客户端连接”的“所需服务器”的连接。一个是连接的结果,另一个是“所需服务器”将连接到socks的服务器绑定套接字。这两个连接只为一个“客户端连接”创建。所以这可能是需要混合的地方。也许,我们需要在一个单独的“客户端连接”中发布BIND?在这种情况下,sock服务器可以在两个方向上传输流量,而不会发生混合?