So, you've explained to me that the Bitcoin network is made of thousands of computer, each computer is called a node. These computers run a software that is compatible with the Bitcoin network. Ok, it would be like if someone wants to download a file from Torrent network. That person would need to run Torrent software or a software that is compatible with the Torrent network protocol.
I don't fully understand when you say... "When a node has new information". From what part that information is coming from?
It's a peer-to-peer mesh network. Peers relay information to each other. For example, if you create a transaction to spend your coins, you will broadcast that to your peers, and they will first validate it and then relay it to their peers, and this process repeats until all nodes in the network have your transaction in their memory pool. Note that being in the memory pool does NOT make your transaction confirmed. It needs to be mined to be confirmed.
A confirmation is when a miner finds a block. A block is broadcast in the same way as transactions are. The miner who discovered the block sends it to his/her peers, then those peers first validate it and then forward it, until everyone sees the new block.
Another question I've about the mechanism of finding the correct hash is...
How the mining software knows that it has created the winning hash? As far I know the mining software looks for the correct hash, but when the software knows that the last hash created is the correct/incorrect one?
So to mine, you first construct a candidate block for the next block in the chain. This will consist of a block header including a reference to the previous block, a timestamp, plus a merkle root referring to the transactions you include in the block. You can read more about the specific data structure here:
https://en.bitcoin.it/wiki/BlocksYou can include whatever transactions you want in the block (eg. the unconfirmed ones taken from your memory pool) so long as they are valid. You also include a coinbase transaction to pay yourself the 25 BTC reward.
In order to make the block valid and accepted by the rest of the network, you need to satisfy the proof-of-work criteria. That is, the block header, when double-sha256-hashed, must result in a number below the current target. In order to keep attempting new hashes, you have to slightly vary the block header, which is why there is a nonce field. When the none field overflows, you can try vary the merkle root by changing the coinbase transaction.
So, to answer your question, you know you've found a valid block when you find one that hashes to a low enough number. Everyone knows what the target is because it's derived directly from the chain you are working on.
Take a look at the latest block hashes on blockchain.info, eg:
http://blockchain.info/block-index/404079/00000000000000006fae4d3d108cfdbb0d29f3e1e611061e40e267a6f7d1607eAs you can see, the block's hash is a *very* low number relative to the 256-bit hashing space (lots of leading zeros). You can verify it for yourself by hashing the block header (80 bytes) twice and confirming that you get the same number. The fact that the miner produced that block with such a low hash, proves that they put a lot of work into finding it.