Am I right that LevelDB stores information like number_of_block -> name_of_file_for_that_block and it's done for downloading blocks in parallel? If so, then what is the format of data in LevelDB for blocks? And why data of blocks are not sent like block_data + block_num so the receiver can save the file with the got number and we don't need a database?
The block index database tells you where to find a certain block. Those are stored as
blk*.dat files on disk, which do contain the block number (in the header) and subsequently the block data.
The whole
blk*.dat file structure is found here:
https://learnmeabitcoin.com/technical/blkdatThe Bitcoin wiki has a
whole page about Bitcoin Core's data storage setup.
Basically, if you were to save each block as an individual file with the block number as filename, it would be extremely inefficient for a multitude of reasons.