]> Cypherpunks.ru repositories - nncp.git/blob - doc/chunked.texi
Small stylistical changes in documentation
[nncp.git] / doc / chunked.texi
1 @node Chunked
2 @unnumbered Chunked files
3
4 There is ability to transfer huge files with splitting them into smaller
5 chunks. Each chunk is treated like a separate file, producing separate
6 outbound packet unrelated with other ones.
7
8 This is useful when your removable storage device has smaller capacity
9 than huge file's size. You can transfer those chunks on different
10 storage devices, and/or at different time, reassembling the whole packet
11 on the destination node.
12
13 Splitting is done with @ref{nncp-file, nncp-file -chunk} command and
14 reassembling with @ref{nncp-reass} command.
15
16 Chunked @file{FILE} produces @file{FILE.nncp.meta},
17 @file{FILE.nncp.chunk0}, @file{FILE.nncp.chunk1}, ... files. All
18 @file{.nncp.chunkXXX} can be concatenated together to produce original
19 @file{FILE}.
20
21 @file{.nncp.meta} contains information about file/chunk
22 size and their hash checksums. This is
23 @url{https://tools.ietf.org/html/rfc4506, XDR}-encoded structure:
24
25 @verbatim
26 +------------------------------+---------------------+
27 | MAGIC | FILESIZE | CHUNKSIZE | HASH0 | HASH1 | ... |
28 +------------------------------+---------------------+
29 @end verbatim
30
31 @multitable @columnfractions 0.2 0.3 0.5
32 @headitem  @tab XDR type @tab Value
33 @item Magic number @tab
34     8-byte, fixed length opaque data @tab
35     @verb{|N N C P M 0x00 0x00 0x01|}
36 @item File size @tab
37     unsigned hyper integer @tab
38     Whole reassembled file's size
39 @item Chunk size @tab
40     unsigned hyper integer @tab
41     Size of each chunk (except for the last one, that could be smaller)
42 @item Checksums @tab
43     variable length array of 32 byte fixed length opaque data @tab
44     BLAKE2b-256 checksum of each chunk
45 @end multitable