SOCKS4의 USERID 와이어 필드
SOCKS4의 USERID 와이어 필드와 그 해석이 SOCKS5 사용자 이름/비밀번호 인증이 아니라 서버에 따라 달라지는 이유를 설명합니다.
SOCKS4에는 0 바이트로 끝나는 가변 길이 USERID 문자열이 포함됩니다. 서버는 해당 식별자를 자체 정책에 따라 해석합니다. 프로토콜은 그 뒤에 SOCKS5 사용자 이름/비밀번호 하위 협상을 수행하지 않습니다.
문서용 주소 203.0.113.8, 포트 443으로 보내는, 빈 USERID를 가진 SOCKS4 CONNECT 요청은 다음과 같습니다:
04 01 01 bb cb 00 71 08 00
아홉 번째 바이트 0x00가 빈 필드를 끝냅니다. 이것은 문자 0가 아니며, 그 ASCII 값은 0x30입니다. 이를 생략하면 USERID가 미완성으로 남습니다.
서버가 기대하는 것
서비스가 식별자를 요구하지 않을 때는 빈 식별자가 적절할 수 있습니다. 특정 식별자나 다른 접근 방식을 요구하면 문서화된 정책을 따르십시오. 제공된 이름은 서버가 검증할 때만 신원을 확립합니다.
SOCKS4a는 대상 호스트 이름 처리를 확장하지만 SOCKS5 인증을 추가하지는 않습니다. SOCKS5 계정이 필요한 서비스에는 호환되는 클라이언트와 방식이 필요합니다. SOCKS4 USERID에 비밀번호를 넣는 것은 그 교환을 대체할 수 없으며 관련 없는 자격 증명을 노출할 수 있습니다.
거부된 경우 SOCKS 버전, 요청한 대상, 사용자 정책을 각각 확인하십시오.