这几天在博客园上跟一个也是最近才开始研究TOR的大佬聊了聊交换了信息,才发现自己确实还有很多技术功底需要积累。从前面我写的内容看,很多东西都没有挖掘太过底层,个人来说还是理论学习多于实践的多,大佬长我14岁,14年间的工程经验可以使他阅读开源项目的时候更敏锐更灵敏地嗅探到作者做法背后对性能,对逻辑,对跨平台编译,对系统架构方面的影响。可以很直接地做出一定的推论,可以比较有依据地判断“行”还是“不行”。作为一个刚开始进入计算机世界的人来说,一度总是认为什么都有得做,而忽略了这背后带来的“成本”和“难度”。诚然,什么都是可以实现的,比如说改一下LINUX内核啊,比如说黑进某某大厂的主机啊等等。但可以是可以,并不现实。大佬的出现给了我很多建议和思路,让我一开始很多想法得到了支持,也有一些想法被证实不可行。我也希望跟在别人后面去学习,去实践,而不用自己去踩过每一条路上的坑。
TOR的源码确实很简洁很优美,曾经认为源码阅读是一件很费神的事,毕竟怎么可以做到对那么大的系统一个总体的感知呢。但其实只要有一定的计算机理论基础,随着不停地看见新的模块不停地发现新的内容,新问题会不断地出现,也会不断地被解决,在解决的过程中脑海会逐渐织出这个源码的模型,哪个部分会做什么,哪个部分具体会怎么做,加上Doxygen生成的文档可以很直接地找到函数的调用链及函数的解释,所以我越读越轻松,越读越惊讶于开发者的成熟老练。
至于真正要做的,我认为还是要大胆尝试一下,TOR里面有个连接填充的功能,里面的填充数据元好比HELLO确认报文一样,大多数情况下是用作确认和保持连接活性,我决定用一定量的padding数据元来完成通道流量的填充。似乎我也逐渐找到了进行