问:

SOCKS4和SOCKS5协议区别是什么?

答:
SOCKS4和SOCKS5都是socket代理协议,用于TCP应用客户端与服务器之间通信。两者的主要区别如下:
1. 支持的地址类型不同:SOCKS4只支持IPv4地址,SOCKS5同时支持IPv4和IPv6地址。
2. 认证机制不同:SOCKS4没有 username/password 认证机制,SOCKS5支持username/password认证,更安全。
3. 命令格式不同:SOCKS4和SOCKS5的请求格式不同,SOCKS5要复杂一些,包含更丰富的命令内容。
4. 支持UDP不同:SOCKS5支持UDP传输,可代理UDP应用。SOCKS4只支持TCP,不支持UDP。
5. 局限性不同:SOCKS4只支持CONNECT方法,只能代理TCP流程的第一步连接阶段。SOCKS5支持CONNECT,BIND,UDP方式,可以代理更丰富的网络流程。 
6. 连接方式不同:SOCKS5可以CONNECT和BIND两种方式连接,CLIENT可以主动发起TCP连接,也可以监听某个端口由SERVER主动连接。SOCKS4只支持CLIENT主动CONNECT方式。
总之,SOCKS5作为更新的代理协议标准,相比SOCKS4有一定的优势,支持UDP、安全认证、IPv6地址等,功能更加丰富全面。但是SOCKS4简单易用,对系统资源要求更少,在一定网络环境下仍然有其存在的意义。
对于普通用户来说,如果 only 对TCP的web访问进行代理,使用SOCKS4和SOCKS5都可以满足需求,区别不会很大。但是对于游戏、P2P等需要UDP支持的应用,则只能选择SOCKS5协议。一般来说,除非有特殊需求,否则推荐使用SOCKS5,因为它是功能更丰富的代理标准协议。