new sock5 diagram, minor client docs tweaks

This commit is contained in:
mfahampshire
2024-10-11 10:53:45 +02:00
parent 9e8f0434a4
commit 4ff6dcfce1
3 changed files with 40 additions and 46 deletions
@@ -1,5 +1,5 @@
# Types of Nym clients
At present, there are three standalone Nym clients. These are built as standalone binaries when building our codebase, but are most easily accessed through one of our SDKs:
At present, there are three Nym clients. These are built as standalone binaries when building our codebase, but are most easily accessed through one of our SDKs:
- the websocket (native) client - most easily accessed via the [Rust SDK](./rust) and [Go/C++ FFI](./rust/ffi).
- the SOCKS5 client - most easily accessed via the [Rust SDK](./rust) and [Go/C++ FFI](./rust/ffi).
@@ -0,0 +1,5 @@
{
"socks5": "Socks5 (standalone)",
"webassembly-client": "Webassembly Client",
"websocket": "Websocket (standalone)"
}
@@ -1,56 +1,45 @@
# Socks5 Client
# Socks5 Client (Standalone)
## What is this client for?
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:
```
External Systems:
+--------------------+
|------>| Monero blockchain |
| +--------------------+
| +--------------------+
|------>| Email server |
| +--------------------+
| +--------------------+
|------>| RPC endpoint |
| +--------------------+
| +--------------------+
|------>| Website |
| +--------------------+
| +--------------------+
+----------------------------------+ |------>| etc... |
| Mixnet: | | +--------------------+
| * Gateway your client is | |
| connected to | +--------------------+ |
| * Mix nodes 1 -> 3 |<-------->| Network requester |<------+
| * Gateway that network | +--------------------+
| requester is connected to |
+----------------------------------+
^
|
|
|
|
v
+-------------------+
| +---------------+ |
| | Nym client | |
| +---------------+ |
| ^ |
| | |
| | |
| | |
| v |
| +---------------+ |
| | Your app code | |
| +---------------+ |
+-------------------+
Your Local Machine
```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.
> 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.