- 博客(10)
- 收藏
- 关注
原创 Connection, Channel
connection是TCP连接。数据:inbuf, outbuf操作:enable/disable: connection_{start,stop}_{reading,writing}read/write: conn_{read,write}_callback()类型:edge connection: entry and exit connection是outside the tor networkor connection: 基于TLS,发送接收Celldirectory conn
2022-05-31 09:21:10
327
原创 Tor源码 -- channel received DESTROY cell
channel收到DESTROY cell调用command_process_destroy_cell()函数进行处理。step 1: circuit_get_by_circid_channel() 获取cell对应的circuit。step 2:如果DESTROY cell came from behind, 设置circuit,并关闭这个circuit。circuit_set_p_circid_chan(TO_OR_CIRCUIT(circ), 0, NULL);circuit_mark_f.
2021-08-30 15:23:28
282
原创 Tor源码 -- relay receive CREATED* cell
step 1: 当收到 CREATED* cell后,command_process_cell()函数调用command_process_created_cell()函数。step 2: 调用circuit_get_by_circid_channel()函数,获取cell对应的circuit。step 3: 判断circuit是否时origin circuit(user使用origin circuit)如果origin circuit时TRUE,调用circuit_finish_handshake(.
2021-08-28 14:56:42
258
原创 Tor源码 -- channel receive RELAY* cell
这里阐述channel收到RELAY* cell后的处理过程。主机身份是user或者是OR(有时候写relay也是指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(IN or OUT)。
2021-08-25 08:49:13
281
原创 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
2021-08-20 14:40:03
423
原创 Channel
Comand.c: 包含处理incoming cell的函数。void command_process_cell(channel_t *chan, cell_t *cell);command_process_cell()函数根据cell->command的类型,分别调用4中不同的函数。 switch (cell->command) { case CELL_CREATE: case CELL_CREATE_FAST: case CELL_CREATE2:
2021-08-17 09:24:13
144
原创 Tor -- circuit结构体分析
citcuit是Tor协议的核心,洋葱路由算法的层层加密,三次转发都是在circuit层上进行。所以重点查看circuit层的代码。circuit_tstruct circuit_t {// magic number, ORIGIN_CIRCUIT_MAGIC or OR_CIRCUIT_MAGICuint32_t magic;/** Handle entry for handle-based lookup */HANDLE_ENTRY(circuit, circuit_t);/** The
2021-08-11 16:08:07
446
原创 Tor源码 -- core分析
tor coreor connectioncircuitstreamor connectionor connection负责op与or或者or与or的连接(两个主机之间的连接)。包括TLS连接,handshake等等。到目前为止, tor有3种握手方式:certificate up-front, renegotiation, in-protocol.or_connection_st.h声明了or connection数据类型,connection_or.c文件有操作函数。circuitstre
2021-08-10 16:16:20
851
原创 Tor源码 -- 启动模块
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-08-05 18:09:42
739
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人