15

私はsocks5の初心者ですが、socks5サーバーを作成して学習しようとしています。

RFC 1928を読んで、SocksV5に関する多くの情報を入手しました。

サーバーへの接続を確立し、リモート接続を要求し、バインドするためにクライアントとサーバーに送信する必要のあるパケットについて説明します。また、UDPの使い方についても説明しています。

私が理解していないのは、接続が確立された後に何が起こるかです。

例えば、

Client: <sends method identifiers>
Server: <responds with the method identifier to use>
...authentication is complete....
Client: Sends a connection request to 192.168.1.1:2321
Server: Acknowledges Packet
Server: Acknowledges successful connection to 192.168.1.1:2321
Client: ????

実際にデータを宛先に転送するためにクライアントからサーバーに送信されるパケットの形式は何ですか?

クライアントがプロキシサーバーに3つの接続を確立するように要求するとします。クライアントがデータを接続1に転送する場合は、そのためのプロトコルが必要です。それ以外の場合、サーバーは送信先の接続をどのように認識しますか?RFCドキュメントに情報が見つかりません。

もう一つの質問は、これは可能ですか?クライアントは複数の接続を要求できますか、それとも一度に1つずつ実行するか、転送する接続ごとにサーバーへの個別のソケット接続を確立する必要がありますか?

助けてくれてありがとう!

4

1 に答える 1

20

RFCをもう一度注意深く読んでください、それはあなたが何を求めているかを教えてくれます。

クライアントは、データがTCPであるかUDPであるかに関係なく、データを交換するサーバーごとにSOCKSプロキシとの個別のTCP接続を確立する必要があります。

クライアントがTCPデータを交換している場合、プロキシが成功応答を送信した後、プロキシと確立したのと同じ接続を介してデータを読み取り/送信するだけです。

クライアントがUDPデータを交換している場合、TCP接続は、プロキシがデータを前後に転送するために使用する関連するUDPリレーを確立するために使用されます。クライアントはプロキシにインバウンドUDPパケットの送信先を通知し、プロキシの成功応答はクライアントにアウトバウンドUDPパケットの送信先を通知します。クライアントとプロキシ間のTCP接続がアクティブである限り、UDP再生はアクティブです。

いずれの場合も、必要なパラメータが確立されると、プロキシはクライアントとサーバー間のすべての転送を透過的に処理します。

于 2011-10-04T20:37:55.627 に答える