python实现dns协议_python dns请求

本文介绍了DNS系统的作用,并通过Python的socket模块展示了如何进行DNS正向和反向查询。示例代码包括了针对域名www.baidu.com的正向查询,以及IP地址127.0.0.1的反向查询。
摘要由CSDN通过智能技术生成

一、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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值