How does nmap do second-generation active OS fingerprinting?

a) By analyzing packet content
b) By querying WHOIS databases
c) By using machine learning algorithms
d) By scanning for specific services