So. To understand how blocks in Bitcoin`s blockchain are linked, we should look into a structure of block itself. Let`s imagine, that each block is a text document with a set of fields. Now, we can say, that each block consists of 5 components (5 fields) :
Magic number (value always 0xD9B4BEF9)
Blocksize (number of bytes following up to end of block)
Blockheader (we`ll look into it below in details)
Transaction counter (a number)
Transactions (the list of transactions)
In our case, we are interested in 2 of them (except Blocksize, Transaction counter (I just don`t know what it`s used for
) and Magic number (last one is constant, as far as I know)). Though the most important magic lives in blockheader, we can say that list of transactions are making connection between blocks too (mostly, because one of the key fields of header is formed on the ground of this list). Also list of transaction contains info about who had an honor to generate this block, info about transaction fee etc. and a little bit of stuff,
nitrocryptonitro was writing above. It is very important field.
Let`s talk about header now. It contains of 6 fields:
Version (Block version number. it`s about software, don`t really interesting for us now)
hashPrevBlock (hash of the previous block header)
hashMerkleRoot (hash based on a list of block`s transactions)
Time (time of generating)
Bits Nonce (number, which value is set in a way, that hash of the block will contain a run of a leading zeros. As I understand, calculating this one is one of the most important things that miners do)
Anyway, we are more interested in those, painted red. As I understand, hashMerkleRoot of block #1 is becoming hashPrevBlock for the next one (#2) and it goes on and on. So, that`s how all blocks are chained one to another.
There is also Height of the block or it`s ordinal number. You can check current block`s Height here
http://blockexplorer.com/q/getblockcount. Height of the block is a number of blocks, that was generated before it.
Now, lets explain what a hash is a little bit, just so you can understand what does this word mean. In simple words, it`s a function that can take an input data of any size and with the help of mathematical operations return output data of a fixed size. It`s something like ZIP archives in world of math, if you remember those. Imagine, how much info a list of transactions contains, and you`ll undestand why Bitcoin needs a special tools to ZIP it.
Hope It`ll help somebody to understand a little bit this complicated stuff.
P.S.I`m not an expert in this matters, so feel free to fix my mistakes if you find any.