Tor源码 -- channel receive RELAY* cell

本文详细介绍了Tor中channel接收到RELAY* cell后的处理流程,包括circuit_get_by_circid_channel()、circuit_receive_relay_cell()、relay_decrypt_cell()等函数的作用,以及对不同cell方向和recognized值的处理策略。对于每个步骤,文章都清晰地解释了如何解密、加密payload,以及如何根据cell的方向和状态转发或处理细胞。
摘要由CSDN通过智能技术生成

这里阐述channel收到RELAY* cell后的处理过程。主机身份是user或者是OR
在这里插入图片描述

command_process_relay_cell():
channel收到RELAY cell,调取command_process_relay_cell()函数。
step 1: 调用circuitlist.c的circuit_get_by_circid_channel()函数,获取RELAY cell的circuit,并确认cell direction(CELL_DIRECTION_IN or CELL_DIRECTION_OUT)。
step 2: 调用relay.c的circuit_receive_relay_cell()函数,在circuit层处理cell。

circuit_receive_relay_cell():
step 1: 调用relay_crypto.c的relay_decrypt_cell()函数, 下面具体介绍这个函数处理过程。
在这里插入图片描述
step 1: 当cell direction是OUT时,调用relay_crypto.c的relay_crypt_one_payload()函数,对RELAY cell的payload进行解密。
step 2: 调用relay_header_unpack()函数,获取relay header的recognized变量值。(0代表发送的这个node的RELAY cell)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值