@node Chunked @unnumbered Chunked files There is ability to transfer huge files with splitting them into smaller chunks. Each chunk is treated like a separate file, producing separate outbound packet unrelated with other ones. This is useful when your removable storage device has smaller capacity than huge file's size. You can transfer those chunks on different storage devices, and/or at different time, reassembling the whole packet on the destination node. Splitting is done with @ref{nncp-file, nncp-file -chunk} command and reassembling with @ref{nncp-reass} command. Chunked @file{FILE} produces @file{FILE.nncp.meta}, @file{FILE.nncp.chunk0}, @file{FILE.nncp.chunk1}, ... files. All @file{.nncp.chunkXXX} can be concatenated together to produce original @file{FILE}. @file{.nncp.meta} contains information about file/chunk size and their hash checksums. It is @url{https://tools.ietf.org/html/rfc4506, XDR}-encoded structure: @verbatim +------------------------------+---------------------+ | MAGIC | FILESIZE | CHUNKSIZE | HASH0 | HASH1 | ... | +------------------------------+---------------------+ @end verbatim @multitable @columnfractions 0.2 0.3 0.5 @headitem @tab XDR type @tab Value @item Magic number @tab 8-byte, fixed length opaque data @tab @verb{|N N C P M 0x00 0x00 0x01|} @item File size @tab unsigned hyper integer @tab Whole reassembled file's size @item Chunk size @tab unsigned hyper integer @tab Size of each chunks (except for the last one, that could be smaller). @item Checksums @tab variable length array of 32 byte fixed length opaque data @tab BLAKE2b-256 checksum of each chunk @end multitable