Skip to content

Commit

Permalink
FAQ section added
Browse files Browse the repository at this point in the history
  • Loading branch information
TudbuT committed Aug 20, 2022
1 parent 47114cd commit 7a18273
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ here as an indicator that no more data will be exchanged between the "previously
- You can add a number to the end of both of your commands (after the filename) to
boost transfer speeds (higher = faster), but a too large number might cause unreliability
due to local network conditions or VPNs. The maximum possible is 65532 (65535 - 3).
- You can run a helper yourself, as the "helper" mode argument suggests. This helper should simply
be run on a server which is reachable from all over the web (a cheap VPS will definitely do).
- Helpers don't **have to** be run on a public server, they work in LAN too, but that way, only
computers in the same LAN will be able to use them.
- You can allow streaming (for example when you want to transmit from /dev/stdin) by setting
Expand Down Expand Up @@ -119,3 +121,29 @@ peer-to-peer.
## [Relevant XKCD](https://xkcd.com/949)

![Relevant XKCD Image](https://imgs.xkcd.com/comics/file_transfer.png)

## FAQ

#### What is a helper?

As explained above, it is used to establish the connection between the two partners.

#### Why is a helper needed?

Your router uses a thing called **N**etwork **A**ddress **T**ranslation. It is required because
otherwise, there would be way too many IP addresses in use and the internet would cease to work
during busy times. This NAT is also a problem however, because it is a layer between your PC and the
open internet. When there is a new incoming connection, the NAT won't know which PC in your LAN to
forward the connection to, so the connection is simply rejected. Any Peer-to-Peer software therefore
needs a helper server (also called "STUN" server) which both peers will ask for the other's IP
address and port. Both peers can then send a bunch of outgoing connections to eachother. If
everything goes well, both peers have sent an outgoing with the right timing, causing both NATs to
*think* they are outgoing connections, when actually, they are a sort of combination of incoming and
outgoing ones.

TL;DR: P2P networking is impossible without a helper server, because of Routers. Port-forwarding
would be required otherwise, which can be hard to set up.

#### How to make a public/private helper?

Read the 2nd bullet point in the Tips 'n Tricks section.

0 comments on commit 7a18273

Please sign in to comment.