My understanding is that nodes maintain a mempool of unexecuted transactions. They use a bloom filter to query other nodes for transactions they do not currently have in their own mempool... thus synchronizing the state of the mempool for each node in the network.
I don't understand why this is necessary -- can't all the nodes just be sent the winning block (along with the transactions inside of it) once it is received by one of the nodes? They can then just verify the transactions within that block. What am I missing here?