Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add dcutr glossary entries #353

Merged
merged 1 commit into from
Feb 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions content/concepts/appendix/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down Expand Up @@ -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
Expand Down
9 changes: 1 addition & 8 deletions content/concepts/nat/dcutr.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down