NDIS (Network Driver Interface Specification) is a Windows specification for how communication protocol programs (such as TCP/IP) and network device driver should communicate with each other. NDIS specifies interfaces for:
1. The program that sends and receives data by constructing or extracting it from the formatted units called frame (and sometimes packet or datagram). This program, usually called a protocol stack, is layering and generally corresponds to layers 3 and 4 (the Network Addressing and Transport layers) of the Open Systems Interconnection (OSI) reference model. Examples are TCP/IP and Internetwork Packet Exchange.
2. The program, usually called a device driver, that interacts directly with the network interface card (NIC) or other adapter hardware, which sends or receives the data on the communications line in the form of electronic signals. The driver program and the NIC interact at the Media Access Control (MAC address) sublayer of layer-2 level of OSI, which is called Data-Link Control. (Putting the signal on the line is the layer-1 or the Physical layer of OSI.) Examples of MAC drivers are those for Ethernet, Fiber Distributed-Data Interface, and token ring.
3. A program called the Protocol Manager that assists the protocol stack program and the MAC driver program by telling each of them the computer location of the other when the operating system is started or, in some cases, when a new device is added to the computer. This is called bind. A system file called PROTOCOL.INI identifies which protocol stacks use which MAC drivers and where each is located. A protocol stack can be bound to more than one MAC driver where a computer is connected to multiple networks. And a single MAC driver can be bound to more than one protocol stack in a computer.