kubo/net
Juan Batiz-Benet f354fa849e mocknet: FullMesh connects to self too.
@maybebtc thoughts on this? dialing self should be
**possible**, so we should in general test that we do
consider that case, but not sure if this is good to expose
to clients. thoughts?

Btw, on why dialing self should be possible, we may create
little protocols which we may have a node connect to self,
say across its interfaces to test connectivity, etc...
think of it like:

> server localhost:1234 &
> curl localhost:1234
2014-12-17 23:25:40 -08:00
..
conn make vendor 2014-12-17 23:25:38 -08:00
handshake style(logging) demote some statements to Debug (from info) 2014-12-08 15:07:33 -08:00
mock mocknet: FullMesh connects to self too. 2014-12-17 23:25:40 -08:00
swarm moved net/swarm2 -> swarm 2014-12-17 23:25:40 -08:00
interface.go mock2/ connections 2014-12-17 23:25:39 -08:00
mux_test.go net: better protocol headers 2014-12-16 14:47:29 -08:00
mux.go Lots of fixes. DHT tests pass 2014-12-17 23:25:38 -08:00
net.go moved net/swarm2 -> swarm 2014-12-17 23:25:40 -08:00
README.md net: README. 2014-12-09 02:12:43 -08:00

Network

The IPFS Network package handles all of the peer-to-peer networking. It connects to other hosts, it encrypts communications, it muxes messages between the network's client services and target hosts. It has multiple subcomponents:

  • Conn - a connection to a single Peer
    • MultiConn - a set of connections to a single Peer
    • SecureConn - an encrypted (tls-like) connection
  • Swarm - holds connections to Peers, multiplexes from/to each MultiConn
  • Muxer - multiplexes between Services and Swarm. Handles Requet/Reply.
    • Service - connects between an outside client service and Network.
    • Handler - the client service part that handles requests

It looks a bit like this:

![](https://docs.google.com/drawings/d/1FvU7GImRsb9GvAWDDo1le85jIrnFJNVB_OTPXC15WwM/pub?h=480)