unix网络编程-第十一章-小结

出于可靠和冗余的目的,必须要设置多个名字服务器

解析器使用UDP向本地名字服务器发出查询。如果答案太长,超出了UDP消息的承载能力,本地名字服务器和解析器会自动切换到TCP。

不适用DNS也能获取名字和地址信息,用hosts文件。

鼓励用getaddrinfo函数替代gethostbyname

有些端口号在TCP上面用一种服务,在UDP上面用完全不同的另一种服务。

getaddrinfo能处理名字到地址以及服务到端口的这两种转换。

如果我们为某个给定端口创建了一个IPv6监听套接字,那么就没有必要为同一个端口再创建一个IPv4套接字。

POSIX声称如果调用者指定了AF_UNSPEC,那么getaddrinfo函数返回的是适用于指定主机名和服务名且适合任意协议族的地址。

NI_NUMERICHOST标志告诉getnameinfo不要调用DNS,而是以数值表达格式以字符串的形式返回IP地址。

gethostbyname,gethostbyaddr,getservbyname和getservbyport这四个函数是不可重入的,因为它们都返回指向同一个静态结构的指针。

inet_pton和inet_ntop总是可重入的。

getaddrinfo可重入的前提是由它调用的函数都可重入。

不应该从信号处理函数中调用标准的I/O函数,因为大部分I/O函数都是不可重入的。

如果调用gethostent,那么它仅仅读取/etc/hosts文件并避免访问DNS。

处理服务名和端口号的常用函数是getservbyname,这种映射关系通常包含在一个文本文件中。

你可能感兴趣的:(unix网络编程-第十一章-小结)