Tor源码 -- incoming cell处理过程(Circuit层 cell)

cell是Tor协议里最小数据单位。
下面阐述node接收incoming cell后的处理过程。这里不写通信双方的建立TLS 握手过程。
connection_or模块采用connection_or_process_inbuf() 函数查询是否收到cell。一旦有incoming cell,调用channeltls.c模块的channel_tls_handle_cell()函数。
channeltls模块是处理通信两端TLS连接的模块,收到CREATE*, CREATED*, RELAY, DESTROY cell,这个模块调用 channel.c模块的cell_handler()函数。
channel.c模块是一个框架(这个表述不知道正不正确?),cell_handler()函数其实是指针函数,这个函数的回调函数是command.c模块的command_process_cell()。
command模块是处理incoming cell模块,到command模块的cell都是circuit层处理的cell
command根据cell->command类型分别调用onion.c, circuitbuild.c relay.c模块。具体如下:

  1. cell->command是CREATE,CREATE2,CREATE_FAST时,调用onion.c模块。
  2. cell->command是CREATED,CREATED2,CREATED_FAST时,调用circuitbuild.c模块。
  3. cell->command是RELAY时,调用relay.c模块
  4. cell->command是DESTROY是,command模块处理。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值