Blocks are downloaded in collection from a given peer, however a node can obtain blocks from a number of friends on the identical time, successfully downloading blocks in parallel. This parallel downloading shouldn’t be about downloading completely different components of the identical block from completely different friends, however quite downloading completely different blocks from completely different friends.
This design permits a node to obtain the blockchain extra shortly, as it’s not restricted by the add pace of a single peer. It additionally provides a layer of redundancy.
The precise implementation of this course of in Bitcoin Core is sort of complicated and entails varied elements like dealing with timeouts, validating blocks, and so forth. You possibly can evaluate the precise code within the Bitcoin Core GitHub repository to get a deeper understanding.
You might also test the P2P Community a part of Bitcoin Developer web site – see the reason for Block, GetBlocks, GetData, GetHeaders messages, which can be concerned when blocks are despatched between nodes.