From bf97290263a33d42cc9995162f8cc18744735364 Mon Sep 17 00:00:00 2001 From: ElPaisano <113373882+ElPaisano@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:02:34 -0600 Subject: [PATCH] Add glossary entries --- content/concepts/appendix/glossary.md | 8 ++++++++ content/concepts/nat/dcutr.md | 9 +-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/content/concepts/appendix/glossary.md b/content/concepts/appendix/glossary.md index 6d51a1f9..8eecab22 100644 --- a/content/concepts/appendix/glossary.md +++ b/content/concepts/appendix/glossary.md @@ -41,6 +41,10 @@ A libp2p connection is a communication channel that allows peers to read and wri Connections between peers are established via [transports](#transport), which can be thought of as "connection factories". For example, the TCP transport allows you to create connections that use TCP/IP as their underlying substrate. +### DCUtR + +Direct Connection Upgrade through Relay (DCUtR) is a protocol for establishing direct connections between nodes via hole punching, without a [signaling server](#signaling-server). DCUtR synchronizes and opens connections to each peer's predicted external addresses. + ### Dial The process of opening a libp2p connection to another peer is known as "dialing", and accepting connections is known as ["listening"](#listen). Together, an implementation of dialing and listening forms a [transport](#transport). @@ -207,6 +211,10 @@ The implementation of the libp2p handshake is called For details, see the [protocol negotiation article]({{< relref "/concepts/fundamentals/protocols.md#protocol-negotiation" >}}). +### Signaling server + +A server or service that facilitates communication between nodes in a peer-to-peer network, specifically in context of setting up, maintaining and terminating a direct communication channel between two peers which are behind NATs. The server discovers the external IP address and port of the peers, and also relays messages between the peers to assist NAT traversal. + ### Stream TODO: Distinguish between the various types of "stream". Could refer to diff --git a/content/concepts/nat/dcutr.md b/content/concepts/nat/dcutr.md index 400f26cc..75aa213f 100644 --- a/content/concepts/nat/dcutr.md +++ b/content/concepts/nat/dcutr.md @@ -11,14 +11,7 @@ to scale and maintain, and may result in low-bandwidth, high-latency connections. [Hole punching]({{< relref "/concepts/nat/hole-punching.md" >}}) is another technique that enables NAT traversal by enabling two nodes behind NATs to communicate directly. However, in addition to relay nodes, it requires another piece of -infrastructure called signaling servers. - -> A signaling server is a server or service that facilitates communication -> between nodes in a P2P network, specifically in context of setting up, -> maintaining and terminating a direct communication channel between two peers -> which are behind NATs. It helps in discovering the external IP address and -> port of the peers and also in NAT traversal by relaying messages between the -> peers. +infrastructure called a [signaling server](../appendix/glossary.md#signaling-server). The good news is that libp2p offers a hole punching solution which eliminates the need for centralized signaling servers and allows the use of distributed