{% extends "common/base.j2" %} {% block body_content %}

{{ _("GNUnet System Architecture") }}

{{ _("Legend") }}:

house
application
circle
application
box
daemon
diamond
library
blackline
dependency
blue line
extension via plugin
red line
possibly useful
dashed
in planning

{{ _("Foundations") }}

{% trans %} The foundations of GNUnet are a distributed hash table (R5N), an SCTP-like end-to-end encrypted messaging layer (CADET), a public key infrastructure (GNS) and a pluggable transport system (TRANSPORT).
Using public keys for addresses and self-organized decentralized routing algorithms, these subsystems replace the traditional TCP/IP stack. {% endtrans %}

{{ _("Security") }}

{% trans %} GNUnet is implemented using a multi-process architecture. Each subsystem runs as a separate process, providing fault-isolation and enabling tight permissions to be granted to each subsystem. Naturally, the implementation is a GNU package, and will always remain free software. {% endtrans %}

{{ _("System architecture") }}

Read more about the system architecure in the respective section of our handbook.

{{ _("Subsystems") }}

Read more about the subsystems (or GNUnet services) in the respective section of our handbook.

{{ _("libgnunetutil") }}

libgnunetutil is the fundamental library that all GNUnet code builds upon. Ideally, this library should contain most of the platform dependent code (except for user interfaces and really special needs that only few applications have). Read more.

{{ _("APIs") }}

GNUnet offers variaty of APIs for accessing services (using IPC), running services, message queues, or cryptographic operations.

{% endblock body_content %}