- It is a piece of software that actually programs the NIC (Network Interface Card) hardware to send and receive data through a network interface.
- It acts as the interface between applications (that need to send and receive data) and the NIC (that actually transmits and receives data via. a wired or wireless interface)
- It primarily consists of Four parts, namely
a) Init – used to initialize the NIC with configurable settings like transmit buffer size, receive buffer size, pointers to sender/receiver buffers in main memory etc.
b) Transmit – consists of code used to send data out of the network interface
c) Receive – consists of code used to receive data via. a network interface
d) Statistics Collection – consists of routines to collect statistics from the NIC like count of transmitted/received frames, count of errored frames etc.
- It exposes external APIs to the application for initialization, send and receive functionality
- It is usually packaged as part of the OS (Operating System)
- There is a separate piece of device driver code for each unique type of NIC (For e.g. one for 100 Mbps wired interface, one for 802.11a wireless interface etc.)
- The same piece of device driver code is used for multiple instances of the same NIC type within a box.