SOCKS4 の USERID ワイヤフィールド
SOCKS4 の USERID ワイヤフィールドと、その解釈が SOCKS5 のユーザー名/パスワード認証ではなくサーバーに依存する理由を説明します。
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 のバージョン、要求した宛先、ユーザーポリシーを個別に確認してください。