What is the precise nonce finding protocol?
This mining simulator is a good visual of what is being hashed. 

http://www.yogh.io/#mine:last

People are correct you don't have to change the Nonce it's just the fastest way to get a different hash output.  You could very well keep the nonce at 1 and change the timestamp, or the list of included transactions, which would change the merkelroot.

What's being hashed is version + previous block hash + merkel root + time + bits (target) + nonce.  This gets hashed twice sha256(sha256(blockheader))

The code and description here is pre
https://en.bitcoin.it/wiki/Block_hashing_algorithm