网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5
简介
存在即是合理,SOCKS5的出现是为了解决SOCKS4中不支持身份认证的大问题而出现的,毕竟大家对网络中的安全越来越重视了。没有认证的网络就好像是生活在摄像头下的人生,毫无隐私可言,实在是太可怕了。
今天给大家深入讲解一下SOCKS5和它的应用。
为什么要使用SOCKS
SOCKS是一种代理服务协议,为什么会要有代理服务协议呢?
因为在现代网络中,很多情况下,由于网络或者防火墙的原因,我们很难直接去访问对方的网络,所以需要一种代理机制来充当本地网络和大型网络之间的网关。
代理服务器通过拦截发送方和接收方之间的连接来工作。 所有传入的数据都通过一个端口进入,并通过另一个端口转发到目标网络中。
当然流量转发是代理服务器的最基本的功能,代理服务器还可以通过隐藏客户端或者服务器端的IP地址,从而实现网络访问的安全性。另外因为代理服务器充当了目标服务器的代理,所以可以将代理服务器作为目标服务器的缓存服务器,从而提高网络访问效率。
另外代理服务器还可以通过对数据进行拦截,从而进行一些特殊的操作,比如对数据进行加密,从而保证数据传输的安全性。另外代理服务器还可以对客户端的访问进行控制,比如可以阻止客户端访问某个IP地址或者网站。
而SOCKS就是一种代理协议的标准,通过这种协议,可以实现标准的代理服务。
在企业级网络中,为了保证企业网络的安全性,通常会有安装上防火墙,这样虽然保证了企业网络的安全,但是也阻止了客户端对外界网络的访问。所以需要一个SOCKS 代理服务器来代替客户端和目标网站之间建立连接和进行数据通信。
SOCKS代理可以绕过防火墙来中继用户的TCP和UDP会话。
SOCKS5
因为SOCKS是运行在OSI七层协议中的第五层会话层,所以它可以处理包括HTTP、HTTPS、POP3、SMTP 和 FTP等多种请求类型,所以可以使用SOCKS协议来进行邮件发送、网页浏览、文件传输等。
相对于SOCK4来说,SOCKS5加入了认证机制,所以可以通过身份验证建立完整的TCP连接,SOCKS5通常和SSH一起使用,通过使用SSH加密隧道方法来中继流量。
那么为什么我们需要使用SOCKS5呢?
首先我们可以通过SOCKS5来访问防火墙后面的服务。
一般来说,为了安全起见,服务器都放在防火墙后面,但是外部的人想要访问该服务器的话,有两种办法。第一种就是去掉防火墙,向公众开放该服务,但是这样会带来安全的风险。第二种就是通过设置客户端的IP白名单,来过滤非法的访问请求。但是客户端的IP地址通常是会发送变化的,所以这种做法也是不可行的。
如果使用SOCKS5的SSH代理,就可以通过代理服务器来访问防火墙后面的服务,从而保证服务的安全性。
另外,通过建立SSH隧道,在其中使用SOCKS5协议将各种TCP和UDP流量路由到各自的服务,那么只需要使用SSH,而不需要使用其他VPN网络。所以使用起来比较简单。
最后,因为SOCKS5只是对数据进行转发,所以出错的可能性更小,性能会更高。
SOCKS5的使用
上面我们介绍了SOCKS5的各种优点,那么SOCKS5到底该如何使用呢?接下来向大家介绍一个使用ssh命令搭建一个简单的SOCKS5代理服务器。
先看下SSH建立SOCKS服务的命令:
ssh -f -C -N -D bindaddress:port name@server
-f 表示SSH作为守护进程进入后台执行。
-N 表示不执行远程命令,只用于端口转发。
-D 表示是端口上的动态转发。这个命令支持SOCKS4和SOCKS5。
-C 表示发送前压缩数据。
bindaddress 本地服务器的绑定地址。
port 表示本地服务器的指定侦听端口。
name 表示ssh服务器登录名。
server表示ssh服务器地址。
上面命令的意思是,在本机建立端口绑定,然后将其转发到远程的代理服务器上。
比如我们可以在本机开一个2000的端口,将其转发到远程168.121.100.23这台机子上:
ssh -f -N -D 0.0.0.0:2000 root@168.121.100.23
有了代理服务器之后,就可以使用了,首先介绍一个怎么在curl命令中使用SOCKS代理。
我们想通过代理服务器,访问www.flydean.com,该怎么做呢?
curl -x socks5h://localhost:2000 -v -k -X GET http://www.flydean.com:80
要想检测SOCKS的连接,还可以使用netcat命令如下:
ncat –proxy 127.0.0.1:2000 –proxy-type socks5 www.flydean.com 80 -nv
总结
SOCKS5是一个非常有用的代理协议,你可以在需要的时候用上它。你懂的!
本文已收录于 http://www.flydean.com/10-socks5-more/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5的更多相关文章
- web网络协议
一.OSI七层模型 OSI参考模型是国际标准化组织ISO(International Standards Organization )制定的模型,把计算机与计算机之间的通信分成七个互相连接的协议层 ...
- 网络协议 18 - CDN:家门口的小卖铺
[前五篇]系列文章传送门: 网络协议 13 - HTTPS 协议:加密路上无尽头 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - D ...
- 网络协议 10 - Socket 编程(上):实践是检验真理的唯一标准
系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网 ...
- 【转】为什么 MQTT 是最适合物联网的网络协议
初识 MQTT 为什么 MQTT 是最适合物联网的网络协议 Michael Yuan2017 年 6 月 14 日发布 WeiboGoogle+用电子邮件发送本页面 0 物联网 (IoT) 设备必须连 ...
- 【OSI】网络协议模型
一.网络相关概念 IP地址: 主机 用于 路由寻址 用的数字标识 域名: 便于IP地址记忆 DNS: 通过注册的 域名 指向 ip 的服务 DDNS: 将用户的动态IP地址映射到一个固定的域名解析服 ...
- TCP/IP网络协议基础
实验楼学习网络协议传送门 一.TCP/IP简介 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电 ...
- PHP网络协议相关考点
HTTP状态码 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. HTTP状态码主要有5种,代表5种不同类型的响应: 1xx:信息性状态码,代表接 ...
- 网络协议 18 - CDN
到现在为止,我们基本上已经了解了网络协议中的大部分常用协议,对于整个 HTTP 请求流程也较为熟悉了.从无到有后,我们就要考虑如何优化“有”这个过程,也就是我们常见的请求优化.而现在的技术栈中,CDN ...
- 网络协议之:一定要大写的SOCKS
目录 简介 SOCKS的故事 SOCKS的历史 SOCKS协议的具体内容 SOCKS4 SOCKS4a SOCKS5 总结 简介 很久很久以前,人们还穿的是草鞋,草鞋虽然穿着舒服,但是不够美观.然后人 ...
随机推荐
- Typora常用操作
Typora常用操作 目录 Typora常用操作 1. 标题 2.子标题 3. 区块 4.代码 5. 表格 6. 超链接 7.单选框 8.数学公式 9.流程图 10.生成目录 11.字体设置 12. ...
- JDBC操作多张表一
一.操作一对多情况开发步骤1创建对象 //代码部门的对象public class Department { private String id; private String name; privat ...
- [atARC077F]SS
(以下字符串下标从0开始,并定义$2s=s+s$) 考虑$f(S)$,即令$l=\max_{2i<|S|且S[0,i)=S[|S|-i,|S|)]}i$,则$f(S)=S+S[l,|S|-l)$ ...
- [loj3347]有趣的旅途
考虑求出重心,以0为根建树,求出第 $i$个点的子树大小$sz[i]$($a(0,i)$),则满足$n-sz[i]\le \lfloor\frac{n}{2}\rfloor$的$sz[i]$中的最小值 ...
- 5、使用ZSetOperations(有序)操作redis(Zset有序集合)
文章来源:https://www.cnblogs.com/shiguotao-com/p/10564454.html 方法 c参数 s说明 void set(K key, V value); ke ...
- 千呼万唤,web人脸识别登录完整版来了,这样式我爱了
大家好,我是小富~ 在我最开始写文章的时候曾经写过一篇文章 基于 Java 实现的人脸识别功能,因为刚开始码字不知道写点什么,就简单弄了个人脸识别的Demo. 但让我没想到的是,在过去的一年里有好多好 ...
- 关于前端项目cookie的获取
最近项目在做切换,2.0要升级到3.0,遇到跨域问题,使用的是nginx 进行对端口拦截请求其他地址,另外有的服务还要登录权限,之前没看到有这个,后来加上获取cookie的请求 var v3_toke ...
- 痞子衡嵌入式:深扒IAR启动函数流程之段初始化函数__iar_data_init3实现
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR启动函数流程里的段初始化函数__iar_data_init3实现. 本篇是 <IAR启动函数流程及其__low_level_ ...
- 重新整理 .net core 实践篇——— 权限中间件源码阅读[四十六]
前言 前面介绍了认证中间件,下面看一下授权中间件. 正文 app.UseAuthorization(); 授权中间件是这个,前面我们提及到认证中间件并不会让整个中间件停止. 认证中间件就两个作用,我们 ...
- SpringCloud升级之路2020.0.x版-45. 实现公共日志记录
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们这一节在前面实现的带有链路信息的 Publisher 的工厂的基础上,实现公共日志记录 ...