Node の socks パッケージは、UDP のために SocksClient インスタンスを command: 'associate' 付きで使います。便利な SocksClient.createConnection() ファクトリは、代わりに TCP CONNECT を扱います。

プロジェクトの アソシエーションの例 は、SOCKS クライアントを別個のローカル UDP ソケットと組み合わせます:

  1. UDP ASSOCIATE を確立し、その TCP 制御接続を保持します。
  2. サーバーが返すリレーのホストとポートを読み取ります。
  3. createUDPFrame() を使って、送信ペイロードを宛先アドレスとともにフレーム化します。
  4. データグラムをリレーに送信し、ペイロードをアプリケーションに渡す前に、受信したリレーのフレームに parseUDPFrame() を使います。

Node の dgram ソケットは UDP トランスポートを提供しますが、SOCKS URL を解釈しません。アソシエーションとフレーミングが、これらのデータグラムの周りにプロキシプロトコルを提供します。

サーバーは UDP をサポートしている必要があり、リレーのエンドポイントに到達できる必要があります。初期プロキシポートへの TCP 接続の成功は、その経路を検証しません。アソシエーションが不要になったら、制御と UDP のリソースを閉じます。

関連記事