a70e68c7bd
* Smolmix documentation * Add smolmix docs: landing page, tutorials, and developer page links * Add Exit Gateway services page (NR vs IPR) and link from existing docs * Update auto-generated command and API outputs * Reorg of tutorials and architecture pages * License information + remove TODO from docs.rs visibile comment + reorg readme * Add versions file for doc-wide versioning * Relative -> absolute links * Relative -> absolute links * Update license + add old tutorial code as examples * Streamline smolmix docs * Clippy * Clean up doc comments * Last pass * Add larger file download to list * set new versions * Clippy * Remove blake pin from docs + add version range to root Cargo.toml * Format example logging * Remove crate blocked component * Loose whitespace * Add doc verification script for inline mdx * Formatting * Components regen * Reorg + tighten text * Voicing cohesion pass + remove bloated examples * Voicing cont. * Reduce max download size * Small suggested clarifications * Max/docs voicing consistency (#6769) * Reduce max download size * voicing consistency across docs * New landing order w smolmix * Tweaks * Final tweaks
51 lines
2.1 KiB
Plaintext
51 lines
2.1 KiB
Plaintext
# Socks5 Client (Standalone)
|
|
|
|
> This client can also be utilised via the [Rust SDK](/developers/rust).
|
|
|
|
Many existing applications are able to use either the SOCKS4, SOCKS4A, or SOCKS5 proxy protocols. If you want to send such an application's traffic through the mixnet, you can use the `nym-socks5-client` to bounce network traffic through the Nym network, like this:
|
|
|
|
```mermaid
|
|
---
|
|
config:
|
|
theme: neo-dark
|
|
layout: elk
|
|
---
|
|
flowchart TB
|
|
subgraph Local Machine[Local Machine]
|
|
A[Application Logic]
|
|
B[Nym Socks5 Client]
|
|
end
|
|
A <-->|Bytes| B
|
|
B <-->|Sphinx Packets| EG
|
|
|
|
subgraph Mixnet Nodes[Mixnet Nodes]
|
|
EG[/Entry Gateway/]
|
|
M{Mix Nodes 1..3}
|
|
ExG[\Exit Gateway\]
|
|
end
|
|
EG <-->|Sphinx Packets| M
|
|
M <-->|Sphinx Packets| ExG
|
|
|
|
subgraph External Systems
|
|
C[Blockchain RPC]
|
|
D[Mail Server]
|
|
E[Message Server]
|
|
F[etc]
|
|
end
|
|
C <-->|Bytes| ExG
|
|
D <-->|Bytes| ExG
|
|
E <-->|Bytes| ExG
|
|
F <-->|Bytes| ExG
|
|
```
|
|
|
|
There are 2 pieces of software that work together to send SOCKS traffic through the mixnet: the `nym-socks5-client`, and a `nym-node` running as an Exit Gateway.
|
|
|
|
> The functionality performed by the Exit Gateway was previously performed by the `nym-network-requester`: this functionality has been migrated into the Exit Gateway mode of the `nym-node`.
|
|
|
|
The `nym-socks5-client` allows you to do the following from your local machine:
|
|
* Take a TCP data stream from a application that can send traffic via SOCKS5.
|
|
* Chop up the TCP stream into multiple Sphinx packets, assigning sequence numbers to them, while leaving the TCP connection open for more data
|
|
* Send the Sphinx packets through the Nym Network. Packets are shuffled and mixed as they transit the mixnet.
|
|
|
|
The `nym-node` then reassembles the original TCP stream using the packets' sequence numbers, and makes the intended request. It chops up the response into Sphinx packets and sends them back through the mixnet to your `nym-socks5-client`. The application receives its data without noticing that it wasn't talking to a "normal" SOCKS5 proxy.
|