Blocks are batches of transactions with a hash of the previous block in the chain. This links blocks together (in a chain) because hashes are cryptographically derived from the block data. This prevents fraud, because one change in any block in history would invalidate all the following blocks as all subsequent hashes would change and everyone running the blockchain would notice. (source)
The aspects of blocks and blockchain implementations are found here:
go-ethereum
+ core
+ rawdb
+ database.go
+ ...
+ types
+ block.go
+ ...
+ blockchain.go
+ genesis.go
+ ...