Very much as the others have said here. You MUST understand and agree what it is you are going to work on. Further to that the client MUST understand it also.
Additional work is usually due to the client not understanding the scope of what you have quoted or, often they start asking for this and that to be done because it comes into their head as you are there, simply because you are there and they will ask you questions...usually starting with 'how do I..' or 'Can you just..."
This can be easily countered with a fairly standard 'Yes I can but it is outside of the scope of this job, would you like me to book it in / look at it after I have finished this job?'
Another classic that I have come across with my techs is the rework that in actual fact has nothing to do with the original job. remember you work with computers and are therefore guilty by association if something goes wrong.
Example - tech goes to site to resolve printing issue. Clears print error and printing now works. Leaves site and 2 hours later call from client again - internet down, your guy must have done something and we want him back to fix it (and we do not want to pay is what they mean).
I drilled into my guys that no matter what people will want to do the following:
print
email
internet
create / open Office documents.
At the end of each visit spend 5 minutes talking to the clients - ask them to go through a typical day and open an email - maybe send an email to themselves - open a web page, write a word doc and print it.
2 things happen - the client feels you care about them
You have a get out clause to the rework issue as you have proven it all works prior to leaving site and they know that because you got THEM to actually do it. Never do it yourself, let the client feel it working.