过年的时候抽了点时间了解了下ss的协议。整理了一点笔记,一直没有时间发。今天发一下,免得忘了。

SS的结构本身比较简单,他的基本结构如下:

  1. ss通常分为client和server两部分
  2. client是一个sock5代理服务器,本地需要代理的流量先将其发往客户端
  3. server也是一个代理服务器,它们之间走的协议不是sock5或http,是一套私有的密文传播的协议。
  4. ss client基于ss proxy协议协议,将转发的流量加密,发送给ss server。ss server将数据包解密,发送给实际服务器。响应过程流程则相反。

  

有了这些知识,我们可以得出如下结论。

  1. ss server本身也只是一个代理服务器,它的协议并不是sock5或http,而是自己的一个私有协议(本文暂且将其称为ss proxy协议)。它主要的功能是将流量加密传输,从而躲避被方校长识别,它不具有加速网络的能力。
  2. ss client本身并不是必要的,ss server本身也是一个代理服务器,如果浏览器本身支持ss proxy协议,是可以不需要ss client的。
  3. ss client的作用是将sock5协议转换为ss proxy协议,对于应用来说,它是一个sock5的代理服务器。从而使得支持sock5协议的应用都可以使用 ss。有的ss client也支持将http代理转换为ss proxy协议

有兴趣的朋友可以看一下ss proxy 协议,本身并不复杂,相信有网络编程基础的人应该可以很快编写一个ss client和server。也可以通过调试ss client的代码加速自己的开发。

另外,需要说明的是:虽然内容被加密了,但ss协议本身也不是不可被检测的,即使加密算法不可攻破,也可以通过ss协议特征判断出是否是ss协议。特别是早期的协议,还是比较脆弱的,感兴趣的朋友可以看下这篇文章为何 shadowsocks 要弃用一次性验证 (OTA)

最后,提几个关于ss防检测的几个方法。

  1. 启用AEAD加密算法,不要使用不安全的早期协议
  2. 不要过度使用,异常的流量还是比较容易检测出来的。
  3. Server端: ss server到目的服务器这一部分的流量是没有加密的。检测服务器是否运行ss server是非常容易的。因此不要在国内厂商的服务器上搭建ss server。
  4. client端: 正所谓家贼难防,一些国产管家会向方校长主动上报本机的ss client配置,上报后服务器ip基本上就加入黑名单了。
  5. 最好不要组合openvpn和ss一起使用,因为open vpn还是比较容易检测的,以免殃及池鱼。
  6. 改造ss client和ss server,使用自己的私有协议。这个方式实际上工作量并不大,并且也很有效,不过涉及到生态的问题。 ss client除了在pc上,往往还在手机,路由器等上面也有涉及,每种环境都要自己开发还是有点累的。

关于SS的一点笔记的更多相关文章

  1. 关于最小生成树,拓扑排序、强连通分量、割点、2-SAT的一点笔记

    关于最小生成树,拓扑排序.强连通分量.割点.2-SAT的一点笔记 前言:近期在复习这些东西,就xjb写一点吧.当然以前也写过,但这次偏重不太一样 MST 最小瓶颈路:u到v最大权值最小的路径.在最小生 ...

  2. [转&精]IO_STACK_LOCATION与IRP的一点笔记

    IO_STACK_LOCATION和IRP算是驱动中两个很基础的东西,为了理解这两个东西,找了一点资料. 1. IRP可以看成是Win32窗口程序中的消息(Message),DEVICE_OBJECT ...

  3. pyhon的yileld的一点笔记

    yield感觉很神秘,感觉也不好理解,学习pyhon最后终归是要学习这个东西,研究了一段时间,把自己的笔记写下来 说简单点就是遇到yield就停止往下执行代码,也包括不执行yield这条语句,然后返回 ...

  4. 关于在VB.NET中调用使用VC++编写的类库dll的一点笔记

    前言 结对作业要求一出来,我就立刻想到了把“计算核心”封装成dll,然后使用vb.net编写UI调用dll的思路.然而在实现过程中却遇到了很多的问题. 我在这个过程中是负责使用vb.net编写UI并调 ...

  5. 阅读xtrabackup代码的一点笔记

    xtrabackup binary最重要的两个过程是backup和prepare,对应的函数分别是xtrabackup_backup_func()和xtrabackup_prepare_func(), ...

  6. c#委托----我的一点笔记

    public partial class ucBloodLabs { public delegate void ShowBloodEvent(); public ShowBloodEvent Show ...

  7. 看的oracle数据库视频 记的一点笔记

    3个默认的用户    sys          //网络管理员  权限由上到下降低 [最后加上 as sysdba]    system  //本地管理员    scott     //普通用户  默 ...

  8. cookie随便写的一点笔记(抄书的)

    cookie是保存在客户端的文本,能够在一定程度上提高用户体验.Servlet API 中提供了Cookie类,可以创建Cookie对象,并通过响应中的addCookie方法,将cookie保存到客户 ...

  9. 关于异或(Xor)的一点笔记

    因为博弈论里,尤其实在求sg函数时,经常会用到异或运算,所以我就把网上搜到的一些相关知识和自己的一些理解记下来. 如果出现差错,还请指出,谢谢! 异或:可以简称Xor,可以用数学符号⊕表示,计算机就一 ...

随机推荐

  1. STM32应用实例八:与多台MS5803压力传感器I2C通讯

    MS5803压力传感器支持SPI和I2C总线通讯,拥有24位AD转换.能够同时获得压力值和温度值,其中压力测量范围为10-1100mbar,温度的测量范围是-40-85摄氏度.各引脚功能及参数如下: ...

  2. php-fpm 配置文件检测

    用过 Nginx 的兄弟都知道,修改 Nginx 配置文件之后,可以使用 nginx -t 来检测配置文件是否有语法错误. 今天配置 opcache 的时候,发现 php-fpm 也可以检测 php- ...

  3. 性能测试六:jmeter进阶之Cookie与header管理器

    一.http cookie管理器 可以在浏览器中抓取到cookie信息,然后通过http cookie管理器为http请求添加cookie信息 添加cookie管理器后,Jmeter可以自动处理coo ...

  4. python 全栈开发,Day141(flask之应用上下文,SQLAlchemy)

    一.flask之应用上下文 由于时间关系,详细过程略... 草稿图 参考链接: http://www.cnblogs.com/zhaopanpan/p/9457343.html 总结: 上下文管理(应 ...

  5. python 全栈开发,Day66(web应用,http协议简介,web框架)

    一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

  6. DDD领域模型查询方法实现(八)

    在DDD.Domain工程文件夹Repository下创建RequestPage类: public class RequestPage { public RequestPage(int pagesiz ...

  7. ELK - MAC环境搭建

    ELK - MAC环境搭建 本文旨在记录elasticsearch.logstash.kibana在mac下的安装与启动. 写在前面 ELK的官方文档对与它们的使用方法已经讲的非常清楚了,这里只对相关 ...

  8. openstack安装-计算节点-nova计算服务安装

    一.基础服务安装 先安装基础工具 yum install net-tools vim telnet wget lrzsz 1.添加hosts解析 cat << EOF >/etc/h ...

  9. devexpress控件之ASPxCallback

    ASPxCallback主要是通过注册客户端事件与服务器端事件来相互通信完成任务.ASPxCallback控件为我们封装了大量的Ajax操作,使用起来非常的方便,如果页面中遇到需要局部刷的操作而又不想 ...

  10. BZOJ1195 [HNOI2006]最短母串 AC自动机 bfs

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 传送门 - BZOJ1195 题意概括 给出一堆串,然后求一个包含这些串的所有串的最短的中的字典序最小的. 题解 先造一个AC ...