keks/multiaddr

The network address multiformat

★ 0Forks 0GitHub ↗Compare

README

multiaddr

The network addresses multiformat

Table of Contents

What is multiaddr?

Multiaddr is a standard way to represent addresses that:

  • Support any standard network protocols.
  • Self-describe (include protocols).
  • Have a binary packed format.
  • Have a nice string representation.
  • Encapsulate well.

Specification

Normally, addresses have been represented using string addresses, like:

tcp4://127.0.0.1:1234
udp4://10.20.30.40:5060
ws://1.2.3.4:5678
tcp6://[1fff:0:a88:85a3::ac1f]:8001

This isn't optimal. Instead, addresses should be formatted so:

Binary format:

(<1 byte proto><n byte addr>)+
<1 byte ipv4 code><4 byte ipv4 addr><1 byte udp code><2 byte udp port>
<1 byte ipv6 code><16 byte ipv6 addr><1 byte tcp code><2 byte tcp port>

String format:

(/<addr str code>/<addr str rep>)+
/ip4/<ipv4 str addr>/udp/<udp int port>
/ip6/<ipv6 str addr>/tcp/<tcp int port>

Protocols

See protocols.csv.

Originally from here: jbenet/random-ideas#11

Implementations

Maintainer

Captain: @jbenet.

Contribute

Contributions welcome. Please check out the issues.

Check out our contributing document for more information on how we work, and about contributing in general. Please be aware that all interactions related to multiformats are subject to the IPFS Code of Conduct.

License

MIT © Protocol Labs Inc.

Contributors

jbenetRichardLittdaviddiasianopolousbasile-henryjohnytiagowanderer

Issues