NIC driver guide

Hi

I need to know how a driver for a network interface card works, I want to learn the basic principles since I know that every driver has its specific implementation.
For example when we speak about the scheduler, we can read an operating system book and learn general design concepts e.g. multilevel feedback, round robin schedule, etc. Then if we look at linux's scheduler we can learn its specific implementation for one of the general scheduler studied form the operating system book.
I'd like to do the same thing with the NIC driver.
Thank you in advance.