socks协议如何工作

时间:2014-05-02 10:36:09

标签: network-programming socks

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

我的客户工作如下:

  1. 首先它连接到socks服务器,让我们称之为"客户端连接"。

  2. 之后会发出命令。

  3. 我对"客户端连接有一些误解"利用。因此,我有以下问题:

    1. A"客户端连接"只能用于一个CONNECTION命令,是吗?因此,对于每个所需的通信,我需要创建一个新的"客户端连接"之后发出命令CONNECT。

    2. 对于BINDing,首先,我需要发出CONNECT并发出命令BIND。这些命令必须在一个客户端连接中发出",我是对的吗?

    3. 服务器可以在BIND套接字上接收多少个入站连接?只有一个?

    4. 如果使用BIND,流量如何流动?我们有一个"客户端连接"到袜子服务器。对于"客户端连接" socks服务器有一个到所需服务器的连接和一个来自所需服务器的传入连接。因此,socks服务器可以从两个连接接收数据。如何将此流量混合到"客户端连接"?

1 个答案:

答案 0 :(得分:0)

  1. 否。 BIND与CONNECT是分开的。这是为了你想听,所以你告诉服务器代表你听,并告诉他你正在听什么端口。
  2. 通。
  3. 客户端和SOCKS服务器之间只有一个连接。从客户端到达的所有内容都会发送到所需的服务器'。从“所需服务器”到达的所有内容被发送给客户。没有什么可以混合的。您不希望将客户的发送回给他,是吗?