一、DNS
dns(domain name system)域名系统 ,主要用来把主机名转换成ip地址。其至今能存在的原因有两个:
能使人们记住名字,而不是ip地址;
允许服务器改变地址,但使用相同的名
二、socket.getaddrinfo(host,port,family=0,socketype=0,proto=0,flags=0)
参数host为域名,以字符串形式给出一个ipv4/ipv6地址或者none;
参数port,字符串形式就代表服务名,比如“ftp,http,https”,或者数字,或者none
参数family为地址簇,AF_INET(IPV4)、AF_INET6(ipv6)、AF_UNIX
参数socketype可以为socket.SOCK_STREAM(tcp),socket.SOCK_DGRAM(udp)
参数proto通常为0可以直接忽略,就是指定协议。套接口所用的协议。如调用者不想指定,可用0。常用的协议有,IPPROTO_TCP(=6)和IPPTOTO_UDP(=17),它们分别对应TCP传输协议
参数flags为AI_*的组合,比如AI_NUMERICHOST,它会影响函数的返回值
三、dns查询
以www.baidu.com为例
1.dns正向查询
1.1代码
1 #!/usr/bin/python2 import sys,socket3
4 result=socket.getaddrinfo(sys.argv[1],None)5 pri