Python程序通常都需要将主机名转换为可以实际连接的套接字地址。
多数主机名查询都应该通过socket模块的getaddrinfo()函数来完成,这是因为该函数的智能性通常是由操作系统提供的。它不仅知道如何使用所有可用的机制来查询域名,还知道本地IP栈配置支持的地址类型(IPv4或IPv6)。
传统的IPv4仍然是互联网上最流行的,但是v6在变得越来越常见。通过使用getaddrinfo()进行主机名和端口号的查询,python程序能够将地址看成单一的字符串,而无需担心如何解析或者解释地址。
DNS是多数名称解析方法背后的原理,它是一个分布在世界各地的数据库,用于将域名查询直接指向拥有相应域名的机构的服务器。尽管在Python中直接使用原始DNS查询的频率不高,但是它在基于电子邮件地址中@符号后的域名直接发送电子邮件时还是很有帮助的。