3.12 常见问题
下面是一些常见的问题,由作者给出了解答,可以用于检验大家对本章中的概念的理解程度,也能为大家在实际应用这些概念时提供帮助。如需就本章中的问题向作者提问,可以浏览www.syngress.com/solutions网页,并单击Ask the Author,也可以在ITFAQnet.com上查看到许多其他的常见问题。
问题:进行BSD套接字编程时,怎样查看更多的出错信息?
回答:在UNIX平台上,可以通过全局变量errno查看详细的出错信息。如果某个BSD套接字函数返回一个错误值全局变量errno将被赋予一个整型值指示错误类型。程序可以通过查看这个值,找出错误的原因。errno.h头文件中定义了errno的可能取值,该头文件的位置通常为/usr/include/errno.h。要使用errno,只需在源程序前面载入errno.h头文件即可,如#include <errno.h>。
问题:BSD套接字的编程接口在所有UNIX平台上都相同吗?
回答:在很大程度上,BSD套接字编程接口在各个UNIX平台之间是兼容的,但也存在一些差别,在进行移植时需要进行一些特别的处理。主要的差别在于常量值、头文件和一部分函数。比如,BSD套接字平台提供了getifaddrs()函数,用于枚举系统上的本地网络接口,Linux平台上却没有提供,要实现同样的功能,必须使用ioctl()函数。
问题:现在有哪些使用BSD套接字API实现安全相关功能的程序可供学习?
回答:在网络安全方面,使用了BSD套接字API的最流行网络扫描程序有NMAP和Nessus。 NMAP用来扫描TCP/IP网络上的活动主机和服务。Nessus是一个开源的免费安全扫描工具,它可以扫描网络上的活动主机和服务,还可以发现远程主机上可能被黑客探测到的安全漏洞。
这两个项目都是开源的,是BSD套接字应用于编写信息安全、黑客与反黑客工具的优秀范例。
● NMAP: http://www.insecure.org/nmap/
● Nessue: http://www.nessus.org/
问题:在哪里可以学习到更多关于TCP/IP协议簇和BSD套接字的细节?
回答:要获得关于TCP/IP和BSD套接字的更详细的信息,这里极力推荐下面两本书:
● TCP/IP Illustrated, Volume 1 (W.R. Stevens)
● UNIX Network Programming, Volume 1: The Sockets Networking API(W.R. Stevens)






