This article refers to link below!
First, the proposer choose and propose a new block, then announce it with message.
Second, protocol is 'pre-prepare' state with sending 'prepare' message when validators receive a message from proposer. This process makes every validators notice that they're in same state.
Third, when validators get more than 2F+1 of messages, protocol is 'prepare' state and send 'commit' message.
This protocol makes peers notice that proposed blocks are permitted, and connects those to the chain. When they receive more than 2F+1 of messages, protocol should be 'commit' state, then blocks are connected to chain.
Image above shows the whole algorithm, when consensus is failed, go to 'Round change' and then restart over again.
Consensus process is composed of three state, Success insertion of block means finality. Simply put, there's no way to change it at all.
Therefore, it cannot be forked and valid block must be on the main blockchain.