1.Methods包含以下含义:
00 -> 无需要验证
01 -> GSSAPI验证
02 -> USERNAME/PASSWORD验证(这是最常用的验证方法
03 到 0x7F IANA ASSIGNED
0x80 到 0xFE RESERVED FOR PRIVATE METHODS
0xFF -> NO ACCEPTABLE METHODS2.如果步骤1返回0x05 0x00,那就是表示支持匿名验证;如果返回0x05 0x02,那就是支持"用户名/密码"模式验证,然后你就要发送用户名和密码到服务器端,如果用户名和密码没错,服务器会返回0x05 0x00给客户端(0x00表示验证通过)3.你说的第三步,这里并不是数据通信.这一步就有几种模式了
A.CONNECT模式,这里客户端要将要访问的目标地址,端口发送给代理服务器,DST.ADDR DST.PORT就是目标服务器地址,端口等.代理服务器连接上目标服务器后,会返回成功值给你,然后代理服务器才进行数据的转发功能(客户端<->代理服务器<->目标服务器) 
B.BIND模式,这里客户端要本地绑定一个TCP端口,然后告诉代理服务器,DST.ADDR DST.PORT就是客户端的IP以及绑定的端口,等待代理服务器去连接.
C.UDP ASSOCIATION模式,前两种都是TCP协议的,只有这种是UDP协议的.这时客户端要在本地绑定一个UDP端口,然后告诉代理服务器,DST.ADDR DST.PORT就是客户端的IP以及绑定的端口,然后代理服务器也会在本地绑定一个UDP端口,然后将代理服务器IP和绑定的端口发送给客户端.当客户端接收到这个消息后,就可以将UDP数据发送给代理服务器绑定的UDP端口中,然后数据通信开始.

解决方案 »

  1.   

    2.如果步骤1返回0x05 0x00,那就是表示支持匿名验证;如果返回0x05 0x02,那就是支持"用户名/密码"模式验证,然后你就要发送用户名和密码到服务器端,如果用户名和密码没错,服务器会返回0x05 0x00给客户端(0x00表示验证通过) 问下各位,这里的发送用户名和密码,用户名和密码是在数据域里的吗?那用户名在前还是密码在前呢?请指点下,谢谢了。
      

  2.   

    1.第一个问题:
    METHODS表示你客户端支持的方法类型,一般情况下,客户端只需支持身份验证和匿名访问,即方法序列里只需填0x0,0x02即可2.第二个问题:
    是的 0x0 表示匿名,0x2,表示身份验证3.第三个问题:
    分几种情况。
    CMD=CONNECT时,发送目标地址和端口,成功返回0,以后就直接在这个套接字收发信息即可
    CMD=BIND,实际上这个应用的很少,通常只在FTP等少数软件上用。
    CMD=UDP,发送IP和端口,如果IP是零,即表示本机IP,如果端口也为零,则不在客户端建立接收套接字,服务器不会把返回数据传递回来。4.你的新问题:
    没有遇到这种情况,如果真的有封包,也只有ICMP包,在一般情况是代理服务器是不可能给目标服务器发送除ICMP包之外的数据。