python이 DNS 정방향 조회, 역방향 조회를 실현하는 예

1566 단어
1. DNS 쿼리 프로세스:
www.baidu를 참조하십시오.com 예
(1) 컴퓨터가 로컬 도메인 이름 서버에 분석 www.baidu를 보냅니다.com의 요청 (2) 로컬 도메인 이름 서버가 요청을 받은 후 로컬 캐시를 조회하고 검색 결과를 직접 되돌려줍니다. 이 기록이 없으면 로컬 도메인 이름 서버는 www.baidu를 사용합니다.com의 요청을 루트 도메인 서버에 보냅니다. (3) 루트 도메인 서버에서 요청을 받은 후.com 도메인의 서버 IP 주소는 로컬 도메인 이름 서버 (4) 로컬 도메인 이름 서버 연결로 돌아갑니다.com 서버, 도메인 이름 확인 요청 www.baidu.com, .com 서버에서 baidu를.com 서버의 IP 주소는 로컬 DNS 서버로 돌아갑니다. (5) 로컬 DNS 서버는baidu로 돌아갑니다.com 서버에서 도메인 이름 확인 요청,baidu를 보냅니다.com 서버는 www.baidu.com의 IP 주소를 로컬 DNS 서버에 반환 (6) 로컬 DNS 서버는 www.baidu.com의 IP 주소를 컴퓨터로 되돌려줍니다.
2. 도메인 이름과 IP 주소의 관계:
하나의 도메인 이름은 여러 개의 IP 주소에 대응하지만, 같은 시간에 하나의 도메인 이름은 하나의 IP 주소만 있을 수 있고, 하나의 IP 주소는 여러 개의 도메인 이름에 대응할 수 있다.
3. DNS 조회
Python은 DNS의 정방향 및 역방향 질의를 수행할 수 있습니다.다음은 정방향 조회 코드입니다.
 
  
#!/usr/bin/env python
import sys,socket
result=socket.getaddrinfo(sys,argv[1],None)
print result[0][4]

도메인 이름에 여러 개의 IP 주소가 있을 수 있기 때문에 상기 프로그램이 두 번 실행한 결과는 다를 수 있습니다.
실행 프로그램:

   ./test.py www.baidu.com 
 

결과는 다음과 같습니다.

   (‘111.13.100.91',80) 
 

역방향 질의:
 
  
#!/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"

실행 프로그램

   ./test2  127.0.0.1 
 

결과는 다음과 같습니다.

   hostname is localhost 
 

좋은 웹페이지 즐겨찾기