Just changing the nonce of a block to be mined is not enough to cover enough hashes to solve it. What are the most common tricks used by the mining software and pools in order to create enough getwork variants to solve the block? Which can be done only by the pool, and which can be performed by the miner?
The generation transaction has an extraNonce value in the coinbase field, which is the default value to change to get a new getwork. This is generally done by the pool but can also be done by the miner if he gets the relevant Merkle branch.
The timestamp also can be changed by the miner, and the entire list of transactions changes occasionally on the pool's end.