Fingerprinting is a technique used for determining which operating system is running on a remote computer.
Active fingerprinting: In this, we send the specially crafted packets to the target machine and based on its response and gathered data, we determine the target OS.
Passive fingerprinting: In this, based on the sniffer traces of the packets, we can find out the OS of the remote host.