SOCKS4 には、ゼロバイトで終端される可変長の USERID 文字列が含まれます。サーバーはその識別子を独自のポリシーに従って解釈します。プロトコルはその後ろに SOCKS5 のユーザー名/パスワードのサブネゴシエーションを続けません。

ドキュメント用アドレス 203.0.113.8、ポート 443 への、空の USERID を持つ SOCKS4 CONNECT リクエストは次のとおりです:

04 01 01 bb cb 00 71 08 00

9 番目のバイト 0x00 が空のフィールドを終端します。これは文字 0 ではなく、その ASCII 値は 0x30 です。これを省略すると USERID は未完了のままになります。

サーバーが期待するもの

サービスが識別子を必要としない場合、空の識別子は適切です。特定の識別子や別のアクセス方式が必要な場合は、その文書化されたポリシーに従ってください。提供された名前が ID を確立するのは、サーバーがそれを検証した場合だけです。

SOCKS4a は宛先ホスト名の扱いを拡張するもので、SOCKS5 認証を追加するものではありません。SOCKS5 アカウントを必要とするサービスには、対応するクライアントと方式が必要です。SOCKS4 の USERID にパスワードを入れてもそのやり取りの代わりにはならず、無関係な資格情報を漏らすおそれがあります。

拒否された場合は、SOCKS のバージョン、要求した宛先、ユーザーポリシーを個別に確認してください。

関連記事