DeepLearning

Tor源码分析二 — 目录结构

Tor由于经过了长年的开发,版本到现在已经有很多。笔者选用的是tor-0.2.3.25版本。关于版本变迁和更新说明,请大家自行查看: https://gitweb.torproject.org/tor.git (需翻墙) 1. 源码目录关系图 Tor的源码目录中包括doc, contrib, src等一些列很莫名的文件。其实,在这些所有的文件中,除了src文件夹,其他都可以在初期暂时不去理会。所以,这里我们就谈src文件夹下的目录结构,也是Tor源码核心的目录结构。 上面两图已经基本给出了各个子目录之间的关系和引用次数。总的来说,src目录下包括下列这样的目录: 1)win32:用于Windows的目录,内部只含有一个orconfig.h文件。主要用于Tor源码的跨平台编译。 2)common:Tor源码中基本通用函数的封装目录。包括:OpenSSL,Libevent的封装,TLS的封装,链表和哈希表的实现等。 3)tools:Tor使用工具目录。包括:密钥验证,证书生成,域名解析和防火墙辅助的实现。 4)or:Tor核心程序逻辑目录。(Tor系统所有核心协议的实现目录)包括:客户端身份核心代码,路由身份核心代码,目录服务器身份核心代码等。 5)test:Tor源码各功能模块的测试代码目录。 6)config:配置文件模板目录 2. or目录下的各文件 or目录是Tor源代码的核心,有必要简要介绍下该目录下的文件的主要作用:(细节部分后期会逐个文件分别进行分析) 以下部分同时用于OP与OR:(Onion Proxy, Onion Router) 1)Buffers:缓冲区相关结构体及处理函数; a generic interface buffer. Buffers are fairly opaque string holders that can read to or flush from: memory, file descriptors, or TLS connections. 2)Circuitbuild:链路建立相关函数; The actual details of building circuits. 3)Circuitlist:链路列表及链路控制相关函数; Manage the global circuit list. 4)Circuituse:链路获取或使用相关函数; Launch the right sort of circuits and attach streams to them.

Tor源码分析一 — 使用工具集

Tor系统是用于匿名通信的一个系统,源代码的维护到今天已经快10年。笔者从今年3月份开始陆陆续续研究Tor系统的源码,由于源码量大,也有很多需要总结的地方,所以特地在这里开辟个Tor源码分析的系列文章,供自己总结,也供大家共同探讨。 1. 源码查看工具 — SourceInsight 本来Tor源码在Linux下分析和调试都可以比在Windows下更专业些,但是因为笔者本身大部分时间需要在Windows下工作,所以选择了Windows下的源码分析软件。SourceInsight是个非常好的源码分析软件,用于查看各种开源代码工程都非常方便。这里选用SourceInsight作为Tor源码的基本浏览和修改工具。 2. 文档生成工具 — Doxygen 关于Doxygen的基本介绍大家可以在网上找到很多。简单的说,Doxygen就是将源码内的信息进行总结,生成包括函数调用关系,函数介绍等信息。这对于宏观查看代码非常重要。Tor源码内很多函数都连续嵌套非常多层,靠人为记住是非常困难的。利用Doxygen的函数调用图,能帮助我们更好的查看函数之间的调用关系。这里不介绍Doxygen如何使用,百度上有许多。注:使用Doxygen时定要打开函数调用图的生成功能。 3. 编译工具 — MinGW MSYS msyDTK 为了在Windows上完成对Tor的编译,需要使用到下面一些列套件。好在这些部分在Tor的FAQ中已经很详细地说明如何使用,这里就仅仅将Tor中关于如何在WIndows下编译Tor源码的部分复制于此,请大家自行查看。 ## ## Instructions for building Tor with MinGW (http://www.mingw.org/) ## Stage One: Download and Install MinGW. --------------------------------------- Download mingw: http://prdownloads.sf.net/mingw/MinGW-5.1.6.exe?download Download msys: http://prdownloads.sf.net/ming/MSYS-1.0.11.exe?download Download msysDTK: http://sourceforge.net/projects/mingw/files/MSYS%20Supplementary%20Tools/msysDTK-1.0.1/msysDTK-1.0.1.exe/download Install MinGW, msysDTK, and MSYS in that order. Make sure your PATH includes C:\MinGW\bin. You can verify this by right clicking on "My Computer", choose "