SOCKS4:s USERID-trådfält
Förklarar SOCKS4:s USERID-trådfält och varför dess tolkning beror på servern i stället för på SOCKS5-autentisering med användarnamn/lösenord.
SOCKS4 innehåller en USERID-sträng med variabel längd som avslutas av en nollbyte. Servern tolkar den identifieraren enligt sin policy; protokollet följer den inte med SOCKS5-underförhandling av användarnamn/lösenord.
En SOCKS4 CONNECT-förfrågan till dokumentationsadressen 203.0.113.8, port 443, med en tom USERID är:
04 01 01 bb cb 00 71 08 00
Den nionde byten, 0x00, avslutar det tomma fältet. Det är inte tecknet 0, vars ASCII-värde är 0x30. Utelämnas det förblir USERID oavslutat.
Vad servern förväntar sig
En tom identifierare kan vara lämplig när tjänsten inte kräver någon. Om den kräver en viss identifierare eller en annan åtkomstmekanism, följ dess dokumenterade policy. Ett angivet namn etablerar identitet endast om servern validerar det.
SOCKS4a utökar hanteringen av destinationsvärdnamnet; det lägger inte till SOCKS5-autentisering. En tjänst som kräver ett SOCKS5-konto behöver en kompatibel klient och metod. Att sätta ett lösenord i SOCKS4 USERID kan inte ersätta det utbytet och kan avslöja en orelaterad autentiseringsuppgift.
Vid ett avslag, kontrollera SOCKS-versionen, den begärda destinationen och användarpolicyn var för sig.