自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 268

原创 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 234

原创 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 203

原创 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 224

原创 Tor源码 -- relay receive CREATE* cell

2021-08-23 11:19:41 105

原创 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 324

原创 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 113

原创 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 364

原创 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 659

原创 Tor源码 -- 启动模块

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-08-05 18:09:42 635

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除