python网络编程【四】(域名系统)

  域名系统(DNS)是一个分布式的数据库,它主要用来把主机名转换成IP地址。DNS以及相关系统之所以存在,主要有以下两个原因:

  (1).它们可以使人们比较容易地记住名字.

  (2).它允许服务器改变IP地址,但是还用同样的名字.

 1.使用getaddrinfo

  getaddrinfo既支持IPv4又支持IPv6

  

1 #!/usr/bin/env python
2 
3 import socket
4 
5 socket.getaddrinfo("www.baidu.com",None)

返回值是一个元组
2.反向查询域名

1 #!/usr/bin/env python
2 
3 import socket
4 
5 host=socket.gethostbyaddr("116.214.12.74")
6 
7 print host[0]

3.获取环境信息

为了得到完整的域名和IP地址,我们首先可以使用gethostname()获取主机名,接着使用getfqdn()获取完整信息,最后使用getaddrinfo()获取该域名对应的ip地址。

 1 #!/usr/bin/env python
 2 
 3 import socket
 4 
 5 hostname= socket.gethostname()
 6 
 7 f = socket.getfqdn(hostname)
 8 
 9 addr = socket.getaddrinfo(f,None)
10 
11 for i in addr:
12     print i[4]

这个例子中,IP地址不是非常有用,因为它只是回查的接口地址,大多数机器都有回路和至少一个配置的网络设备,您会得到IP地址和可能是二者其一。所以这个例子结果中最有用的信息是本地主机名。还要记住的是,很多系统是在私有网络上的,在公众的Internet上既得不到主机名,也得不到完整的名称。

原文地址:https://www.cnblogs.com/vipitsoft/p/5647433.html