]> Cypherpunks.ru repositories - nncp.git/blob - doc/comparison.texi
Add various documentation indices
[nncp.git] / doc / comparison.texi
1 @node Comparison
2 @cindex comparison
3 @cindex SMTP
4 @cindex FTN
5 @cindex FidoNet
6 @cindex UUCP
7 @unnumbered Comparison with existing solutions
8
9 Here is comparison with @url{https://en.wikipedia.org/wiki/UUCP, UUCP}
10 (Unix to Unix copy), FTN (@url{https://en.wikipedia.org/wiki/FidoNet,
11 FidoNet} Technology Networks) and @url{https://en.wikipedia.org/wiki/SMTP, SMTP}
12 (because it is also store-and-forward solution).
13
14 @multitable @columnfractions 0.40 0.15 0.15 0.15 0.15
15 @headitem @tab UUCP @tab FTN @tab NNCP @tab SMTP
16
17 @item Ease of setup            @tab Medium        @tab Hard          @tab Easy          @tab Hard
18 @item Mail transmission        @tab @strong{Yes}  @tab @strong{Yes}  @tab @strong{Yes}  @tab @strong{Yes}
19 @item News transmission        @tab @strong{Yes}  @tab @strong{Yes}  @tab @strong{Yes}  @tab No
20 @item File transmission        @tab @strong{Yes}  @tab @strong{Yes}  @tab @strong{Yes}  @tab No
21 @item Multicast transmission   @tab No            @tab @strong{Yes}  @tab @strong{Yes}  @tab No
22 @item Chunked files            @tab No            @tab @strong{Yes}  @tab @strong{Yes}  @tab No
23 @item Remote command execution @tab @strong{Yes}  @tab No            @tab @strong{Yes}  @tab No
24 @item Resumable downloads      @tab @strong{Yes}  @tab @strong{Yes}  @tab @strong{Yes}  @tab No
25 @item Packets prioritizing     @tab @strong{Yes}  @tab No            @tab @strong{Yes}  @tab No
26 @item Mail compression         @tab No            @tab @strong{Yes}  @tab @strong{Yes}  @tab No
27 @item SMTP integration         @tab @strong{Yes}  @tab No            @tab @strong{Yes}  @tab N/A
28 @item Push/poll                @tab @strong{Both} @tab @strong{Both} @tab @strong{Both} @tab Push
29 @item DTN                      @tab @strong{Yes}  @tab @strong{Yes}  @tab @strong{Yes}  @tab No
30 @item Intended network size    @tab Dozens        @tab Global        @tab Dozens        @tab Global
31 @item Routing                  @tab Manual/static @tab Federated     @tab Manual/static @tab Federated
32 @item PSTN support             @tab @strong{Yes}  @tab @strong{Yes}  @tab Possible      @tab No
33 @item Anonymous peers          @tab @strong{Yes}  @tab No            @tab No            @tab @strong{Yes}
34 @item Peers authentication     @tab PAP           @tab PAP/CHAP      @tab public-key    @tab No
35 @item Packets encryption       @tab No            @tab No            @tab @strong{Yes}  @tab No
36 @item Metadata privacy         @tab No            @tab No            @tab @strong{Yes}  @tab No
37 @item Packets integrity check  @tab No            @tab No            @tab @strong{Yes}  @tab No
38 @item Sneakernet friendliness  @tab No            @tab Partially     @tab @strong{Yes}  @tab No
39
40 @end multitable
41
42 @table @strong
43
44 @item Ease of setup
45     UUCP can be setup rather easily with few configuration files
46     and few lines in each of them. But you have to add some encryption
47     and authentication overlay for securing you data transmission.
48
49     FTN is hard to setup because it is totally different world of
50     software comparing to Unix one. Even mail editor will be something
51     like GoldEd, not an ordinary email client. Moreover, there is no
52     out-of-box encryption and strong authentication involved.
53
54     NNCP requires editing of single Hjson @ref{Configuration,
55     configuration file}.
56
57 @item File transmission
58     SMTP could transfer files only Base64-encoding them -- this is very
59     inefficient.
60
61 @item Chunked files
62     FTN software can automatically split huge files on smaller chunks,
63     to reassemble it on the destination node. NNCP also supports
64     @ref{Chunked, that feature}, especially important when dealing with
65     small capacity removable storage devices.
66
67 @item Packets prioritizing
68     UUCP and NNCP will push higher priority ("grade" in UUCP
69     terminology) packets first. You mail will pass, even when many
70     gigabytes files are queued in parallel.
71
72 @item SMTP integration
73     Mail servers like @url{http://www.postfix.org/, Postfix} and
74     @url{http://www.exim.org/, Exim} offers documentation and
75     configuration file examples how to use it with UUCP.
76     @url{http://www.sendmail.com/sm/open_source/, Sendmail} could be
77     integrated with UUCP rather easily too. For using NNCP, just replace
78     UUCP commands with NNCP ones.
79
80 @item Push/poll
81     With SMTP, you have to wait online when remote peers will push you
82     the messages. There are extensions to the protocol allowing
83     poll-model, but they are not used everywhere. This is very important
84     to be independent from specified model and be able to exchange the
85     data with possibility you have.
86
87 @item @url{https://en.wikipedia.org/wiki/Delay-tolerant_networking, DTN} (delay tolerant networking)
88     SMTP will drop messages that can not be delivered for a long time
89     (several days). Others are tolerant for the long delays.
90
91 @item Routing
92     UUCP and NNCP does not known nothing about routing. You have to
93     explicitly tell how to send (what hops to use) packets to each node.
94
95 @cindex PSTN
96 @item PSTN support
97     UUCP and FidoNet always have been working with modems out-of-box.
98     Only many years later they gained support for working over TCP/IP
99     connections. SMTP works only over TCP/IP. NNCP currently has only
100     TCP daemon, but nothing prohibits using of another 8-bit aware
101     online transport.
102
103 @cindex anonymity
104 @cindex Sybil attack
105 @item Anonymous peers
106     NNCP and FTN are friend-to-friend networks exclusively. This is very
107     secure and mitigates many possible man-in-the-middle (MitM) and
108     @url{https://en.wikipedia.org/wiki/Sybil_attack, Sybil} attacks.
109
110 @cindex sneakernet
111 @cindex floppynet
112 @item Sneakernet friendliness
113     No one, except NNCP, supports data exchanging via removable storages
114     likes flash drives, CD-ROMs, tapes and hard drives out-of-box. It
115     can be emulated for many FTN software, by manually copying files in
116     its inbound/outbound directories. But UUCP and SMTP software
117     requires more manual work to do so.
118
119 @end table
120
121 @cindex UUCP commands
122 Also there is
123 @url{https://changelog.complete.org/archives/10165-asynchronous-email-exim-over-nncp-or-uucp, copy of}
124 comparable commands of UUCP and NNCP, just for the interest:
125
126 @multitable @columnfractions 0.5 0.25 0.25
127 @headitem Purpose @tab UUCP @tab NNCP
128
129 @pindex uucico
130 @pindex uupoll
131 @pindex uux
132 @pindex uucp
133 @pindex uuxqt
134 @item Connect to remote system
135     @tab @command{uucico -s}, @command{uupoll}
136     @tab @command{nncp-call}, @command{nncp-caller}
137 @item Receive connection (pipe, daemon, etc)
138     @tab @command{uucico} (@option{-l} or similar)
139     @tab @command{nncp-daemon}
140 @item Request remote execution, @code{stdin} piped in
141     @tab @command{uux}
142     @tab @command{nncp-exec}
143 @item Copy file to remote machine
144     @tab @command{uucp}
145     @tab @command{nncp-file}
146 @item Copy file from remote machine
147     @tab @command{uucp}
148     @tab @command{nncp-freq}
149 @item Process received requests
150     @tab @command{uuxqt}
151     @tab @command{nncp-toss}
152 @item Move outbound requests to dir (for USB stick, airgap, etc)
153     @tab N/A
154     @tab @command{nncp-xfer}
155 @item Create streaming package of outbound requests
156     @tab N/A
157     @tab @command{nncp-bundle}
158
159 @end multitable