فیلد USERID در SOCKS4
فیلد USERID در SOCKS4 را توضیح میدهد و اینکه چرا تفسیر آن به سرور بستگی دارد نه به احراز هویت نام کاربری/رمز عبور SOCKS5.
SOCKS4 یک رشته USERID با طول متغیر دارد که با یک بایت صفر پایان مییابد. سرور آن شناسه را بر اساس سیاست خود تفسیر میکند؛ پروتکل پس از آن مذاکره فرعی نام کاربری/رمز عبور SOCKS5 انجام نمیدهد.
یک درخواست SOCKS4 CONNECT به نشانی مستندات 203.0.113.8، پورت 443، با USERID خالی چنین است:
04 01 01 bb cb 00 71 08 00
بایت نهم، 0x00، فیلد خالی را پایان میدهد. این نویسه 0 نیست که مقدار ASCII آن 0x30 است. حذف آن USERID را ناتمام میگذارد.
سرور چه انتظاری دارد
شناسه خالی میتواند زمانی مناسب باشد که سرویس هیچ شناسهای نمیخواهد. اگر شناسه خاصی یا سازوکار دسترسی دیگری میخواهد، سیاست مستند آن را دنبال کنید. نام ارائهشده تنها زمانی هویت را اثبات میکند که سرور آن را اعتبارسنجی کند.
SOCKS4a مدیریت نام میزبان مقصد را گسترش میدهد؛ ولی احراز هویت SOCKS5 را اضافه نمیکند. سرویسی که حساب SOCKS5 میخواهد به کارخواه و روش سازگار نیاز دارد. گذاشتن رمز عبور در USERID در SOCKS4 جایگزین آن تبادل نمیشود و ممکن است اعتبارنامهای نامرتبط را افشا کند.
برای رد شدن، نسخه SOCKS، مقصد درخواستی و سیاست کاربر را جداگانه بررسی کنید.