• python dns请求


    一、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/python
    2 import sys,socket
    3 
    4 result=socket.getaddrinfo(sys.argv[1],None)
    5 print(result[1][4])

    1.2结果

    [root@csm testpython]# python FLdnsQuery.py www.baidu.com
    ('14.215.177.38', 0)
    

    2.dns反向查询

    2.1代码

    #!/usr/bin/env python
    import sys,socket
    try:
     result=socket.gethostbyaddr(sys.argv[1])
     print "hostname is "+result[0]
    except socket.herror,e:
     print "can't look up"
    

    2.2结果

    [root@csm testpython]# python RLdnsQuery.py 127.0.0.1
    hostname islocalhost
    

     

  • 相关阅读:
    MFC Windows 程序设计>WinMain 简单Windows程序 命令行编译
    AT3949 [AGC022D] Shopping 题解
    CF643D Bearish Fanpages 题解
    CF643C Levels and Regions 题解
    CF241E Flights 题解
    CF671C Ultimate Weirdness of an Array 题解
    CF1592F Alice and Recoloring 题解
    GYM 102452E 题解
    CF494C Helping People 题解
    P5556 圣剑护符
  • 原文地址:https://www.cnblogs.com/csms/p/10154701.html
Copyright © 2020-2023  润新知