socks (sockets)是一种网络传输协议。 【主要是用于客户端和服务器之间通讯的中间传递】
当防火墙后的客端要访问外部的服务器时,就跟socks代理服务器连接。这个代理服务器控制客户端访问外网的资格,允许的话,就将客户端的请求发往外部的服务器。(这样就实现了代理服务,经常用来实现翻墙)
最新协议是版本5,比版本4增加了支持UDP、验证、以及IPv6.
OSI(7层结构)模型,socks基于表示层与传输层之间的会话层。
对于各种基于 TCP/IP的应用层协议都能够适应,几乎是万能的。
(ps:也就是OSI 结构是在会话层,TCP/IP层是在应用层,所以,ping不会经过这层协议,也就是到达不到)
socks5####
socks5 是一个代理协议,它在使用tcp/ip 通讯的前端机器和服务器之间扮演一个中间的角色(中间媒介)。
使内部网中的前端机器能够访问Internet网中的服务器。(SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为)【前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务器将请求转发给真正的服务器】
或者使通讯更加安全。
通讯过程的特点:(sock5)
SOCKS5 协议对于处在内部网络中的机器, 需要透过网络中某些可以联通外部 Internet 的机器访问外部时,有用。
SOCKS5服务器在将通讯请求发送给真正服务器的过程中,对于请求数据包本身不加任何改变。
SOCKS5服务器接收到真正服务器的响应后,也原样转发给前端。
《http代理协议》###
http 代理协议与socks5协议不同,http代理是通过http协议进行的,http代理服务器软件了解通讯包的内部结构,在转发过程中还要对通讯进行某种程序的修改和转换。
socks5 协议:
和HTTP代理协议不同,SOCKS5实际上是一个传输层的代理协议。我们可以想象,如果每个具体的应用层协议都要设计对应的代理协议表达办法,一个特定的代理服务器无论如何也支持不过来那么多新出现的协议。
可以说SOCKS5的出现缓解了各种具体协议需要专门设计代理协议的困难局面。不过,并不是凡是使用基于TCP/IP协议的应用协议的软件,都可以无条件地透过SOCKS5服务器进行通讯,还要求前端软件本身具有SOCKS5的接口,才能利用SOCKS5代理服务器。
运行状态
一个支持SOCKS5协议的前端,通常具有两种运行状态:
1)直接通讯状态,不使用SOCKS5接口。这时的通讯是针对最终服务器进行
的。
2)SOCKS5 状态。 使用 SOCKS5 接口将本来要发送给最终服务器的请求发
送给 SOCKS5 服务器。在前端和 SOCKS5 服务器进行初始化会话的时候,前端
告诉了 SOCKS5 服务器关于最终服务器的 IP 地址和端口信息,所以 SOCKS5
服务器能够忠实按照前端的要求启动和最终服务器的通讯过程。
SOCKS这个名词并不是一组英文字头的缩写,而是一个和 TCP/IP的Socket端口有关的安全标准,一般防火墙系统通常是象网关(Gateway)一样是作用在OSI模型的第七层也就是应用层上,对 TCP/IP的高级协议,如Telnet、FTP、HTTP和SMTP加以管制,而SOCKS作用在OSI模型的第五层也就是会话层上,象一个代理一样对客户端到服务器端或服务器和服务器之间的数据联系提供安全上的服务。
由于SOCKS作用在会话层上,因此它是一个提供会话层到会话层间安全服务的方案,不受高层应用程序变更的影响。
Socks代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求),所以Socks代理服务器比应用层代理服务器要快。
ps: 代理还是没有理解好socks5协议和http代理协议的区别?