zoukankan      html  css  js  c++  java
  • 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
    

     

  • 相关阅读:
    浅谈协方差矩阵
    Android开发之Http通信HttpClient接口
    Android开发之XML文件的解析的三种方法
    Android开发之Http通信HttpURLConnection接口
    [Android] SurfaceView使用实例
    Android开发之初识Camera图像采集
    Android开发之SurfaceView
    基于android的远程视频监控系统
    Android编程9:蓝牙测试
    Android--PendingIntent 实现发送通知notification
  • 原文地址:https://www.cnblogs.com/csms/p/10154701.html
Copyright © 2011-2022 走看看