Each node that joins the blockchain network needs to update its local copy of the blockchain to synchronize its state with the global state of the rest of the network. This is achieved by block synchronization. A node that needs to update its blockchain sends a message consisting of blockchain height information. Any peer that has a longer blockchain sends an inventory consisting of metadata about the fixed number of blocks that needs to be added to the host node. Now the node makes a request to all its peers to fetch individual blocks by referring to the inventory it received. The node should make sure not to flood the network with block requests by maintaining a cap on the number of block requests it sends.
Block synchronization is a long process for a newly-joined node. However, once all the blocks are up to date, it can verify the information in the block...