不同版本的windows对一些网络数据包的反应是不一样的, 像张兄指出的一样, 你可通过
port number 来判断OS version. the list of open ports is often enough to identify most
operating systems.
email header 也可用来判断 os version.
如果你只是想知道target host os version, 最简单办法使用一些第三方软件, 例如:nmap
你可以从 http://www.eeye.com/html/Research/Tools/nmapNT.html 下载
如果你想自己编的话, 你需要发一些“坏tcp"数据包, 每个数据包有着不同的tcp flags.
such as, 一个数据包有SYN, FIN, PUSH,flag set up, or SYN, FIN, PUSH, URG.
你也可以发 icmp 数据包。 请参照:http://www.networkmagazine.com/article/NMG20000829S0003
建议选前者。