# Protocols

Earendil presents a pretty simple interface (basically a virtual IPv6-like network device with some convenience methods), but under the hood is many layers of protocols.

This is illustrated by the following picture. **Note that A->B means A depends on B**, not that A somehow sends data unidirectionally to B!

{% @mermaid/diagram content="flowchart TB
subgraph network\["Network layer"]
socket\["Unified socket abstraction"]
haven\["Haven protocol"]
dht\["Rendezvous DHT"]
forward\["Haven forwarding"]
rpc\["GlobalRPC"]
mixnet\["Mixnet protocol"]
onion\["Onion routing"]
end
subgraph lownet\["LowNet"]
link\["Link transport"]
end
socket --> haven
haven --> dht & forward
dht --> rpc
forward --> mixnet
rpc --> mixnet
mixnet --> onion
socks\["SOCKS5 interface"] --> sosistab\["Optionally reliable streams (sosistab2)"]
tcp\["TCP port forwarding"] --> sosistab
sosistab --> socket
tun\["tun-based VPN interface"] --> socket
onion --> link & routegraph\[("Route graph")]" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.earendil.network/wiki/protocols.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
