Tor源码文件分析 -- Connection_OR

本文主要分析Tor中OR连接的源码,包括全局变量、控制函数、Cell处理、读写控制、连接管理和使用。OR连接是Tor系统的基础,负责节点间TLS连接、活动链接管理以及CELL的发送和接收。文章介绍了OR连接在整个Tor协议栈中的位置以及与其它连接类型的复用关系,并详细阐述了OR连接的关键操作和管理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  作为连接类型中最重要的一种连接,OR连接对OP与OR之间,OR与OR之间的通信负全责。也就是说,OR连接的存在,是解决底层两机之间通信的必要条件。所以,有必要对OR连接的源码文件进行深入分析,并对OR连接先做简要介绍。后期,在介绍Tor系统的全部连接之时,会更加详细地介绍各种连接及他们的作用。

  OR连接,即Onion Router连接,是用以连接Tor系统内两结点的连接。该连接的主要功能包括:管理结点间TLS连接;管理活动链接;管理CELL的发送和接收等。OR连接处于Tor系统的最底层,其下层即为TLS层。所以,OR连接负责的主要部分就是可靠的CELL传递以及与其上层链接层的交互。


                DIR连接……            应用层

              ------------------------

                AP连接,EXIT连接……

              ------------------

                Circuit链路……           Tor协议层

              ------------------

                OR连接……          

              ------------------------

                TLS连接              传输层


  同时,在此处值得一提的是,Tor系统的应用连接AP,链路Circuit,OR连接三者之间的复用情况:(多AP连接复用Circuit,多Circuit复用OR连接)


               AP Stream 1    -->

               AP Stream 2    -->    Circuit 1    ->

               ... ...   3    -->

                           Circuit 2   ->    OR Connection 1

                           Circuit 3   ->


0. 全局变量

  1)orconn_identity_map

/** Map from identity digest of connected OR or desired OR to a connection_t
 * with that identity digest.  If there is more than one such connection_t,
 * they form a linked list, with next_with_same_id as the next pointer. */
static digestmap_t *orconn_identity_map = NULL;
  该全局变量是个链地址法处理冲突的哈希表,哈希表的键为OR的ID摘要,哈希表的值为OR连接链表(可能有多个OR连接连往同一个OR,或不同的OR可能有相同的ID摘要)。该哈希表所能提供的功能便是插入删除OR键值对。其主要用途是为OP建立链路第一跳与OR建立链接下一跳服务。详细可见下列代码:
// OP建立链路第一跳时使用本地OR连接复用服务
/** Start es
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值