So lets say I connected to xyz.onion

I use this route

me > node 1 > node 2 > node 3 > rendezvous > node 4 > node 5 > node 6 > website

I understand that it uses layers to encrypt the path so each node only knows the next destination and not the full path.

But how does the website send it back? if it sends some random data to node 6, how does node 6 know where this goes?

I know that node 6 remembers the sender route so would know to send it to node 5 but how does it identify where the data the website is sending wants it to go. e.g. node 6 is used by this website for 3 different connections as the exit node. how does node 6 know where each bit of data is meant to be sent if there are 3 paths (because of 3 connections example) and the website only knows node 6's address and nothing else?

So essentially

website sends data saying "example" to node 6 website sends data saying "example2" to node 6 website sends data saying "example3" to node 6

how does node 6 know the path the website wants this data to be sent? does it use a secret code or something?

Hope that makes sense

1 Answer 1


It uses a secret code, more or less.
Each path has a circuit id and each connection has a stream id. When relay 6 receives something from the website, it reads the circuit id and sends it back to the corresponding relay on this circuit.
Rendezvous Point has a table, so that it can know which server circuit connects to a client circuit (and vice versa).


You must log in to answer this question.