I couldn't find the relevant documentation for this on the Tor and was hoping for some clarification here. I understand the process of how Tor works, but I'm looking for information on the client side. Using this picture:

enter image description here

This picture is for onion routing in general, as I could not find a Tor specific version.

  1. Is the Tor process the same as this? User makes web request > SOCKS > Tor/Onionproxy...

  2. Why is the SOCKS necessary, couldn't the user make a request directly to the Onion Proxy?

  3. What stage from the picture is the onion routing protocol done (e.g. exchanging keys, encryption...). Perhaps the onion proxy stage?

1 Answer 1


The "Onion Proxy" is a name for a Tor client, it is the entire client process. The SOCKS interface is just a way for a client to utilise the onion proxy. The SOCKS server is provided by the Tor process itself, when it receives a request it attaches the connection to an existing or new Tor circuit.

SOCKS is necessary because applications more commonly speak SOCKS, they don't tend to speak the Tor protocol. While it's possible for them to, it's far easier (and safer) to use the existing proxy interface. SOCKS is a good choice because it's a simple protocol. SOCKS4a and SOCKS5 also both support connecting directly to a hostname which reduces the likelihood of DNS leaks.

Yes, the Onion Proxy is the client process that speaks the Tor protocol. This is where the key exchanges, circuit creation, consensus and descriptor fetching all take place. It interfaces between the Tor network and the client application.

Note that Tor also provides a TransPort for "Transparent Proxying", which is a different approach to proxying into the Tor Network but is also a potential "Application Proxy".

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .