python - 도메인 이름 시스템

2499 단어

도메인 이름 시스템


DNS(Domain Name System)는 호스트 이름을 IP 주소로 변환하지 않는 분산 데이터베이스입니다.DNS와 관련 시스템이 존재하는 주요 원인은 두 가지입니다.
4
  • 사람들이 쉽게 이름을 기억할 수 있다

  • 4
  • 서버가 IP 주소를 변경할 수 있지만 원래의 이름을 사용합니다

  • DNS 질의 수행


    우선 프로그램은 운영체제 설정 파일이 지정한 로컬 이름 서버와 통신합니다.이 서버는 요청을 받고 문의하는 귀속 이름 서버입니다.com역, 그 중에서 내장된 최고급 도메인 이름 목록이 있습니다. 이 서버들은 세계 최고급 도메인 이름 정보를 나누어 주고, 필요한 이름 정보를 찾을 때까지 다른 이름 서버에 문의할 수 있습니다.
    운영 체제는 기본 DNS 검색 서비스를 제공합니다.python은 socket 모듈에서 이러한 기본 운영체제 서비스에 접근하는 인터페이스를 제공합니다.

    운영 체제 쿼리 서비스 사용


    운영체제는 대부분의 응용 프로그램의 수요를 충족시킬 수 있는 DNS 검색 기능을 자체로 가지고 있다.

    기본 질의 실행


    가장 기본적인 조회는 정방향 조회로 호스트 이름에 따라 IP 주소를 찾는다.우선 IP 주소를 찾아야 합니다. 정방향 조회는 이 작업을 완성하고 이름을 IP 주소로 번역합니다.
    python에서는 다음과 같이 정의합니다.
    getaddrinfo(host,port[,family[,socktypr[,proto[,flags]]]])
    host는 찾아야 할 도메인 이름입니다. 다른 매개 변수는 결과를 socket에 직접 전달하고 싶을 뿐입니다.socket() 또는 socket.connect ()일 때만 사용합니다.반환 값은 각각 다음 모양인 일련의 tuple입니다.
    (family,socktype ,proto,canonname ,sockaddr )
    sockaddr는 사실상 원격 기기의 주소로 검색을 실행할 때 찾는 데이터입니다.

    역조회 실행하기


    IP 주소를 확인하려면 호스트 이름을 확인해야 하는 경우가 있습니다.대부분의 경우 서버에서 어떤 클라이언트가 연결되어 있는지 알고 싶어 하는 경우가 있다.

    역방향 찾기 기초


    IP 주소의 경우 반전된 매핑이 전혀 없을 수 있습니다.따라서 모든 역방향 검색 행위를 포획하고 처리할 수 있도록 socket을 확보해야 한다.herror().다음은 명령줄에 제시된 IP 주소를 매개 변수로 하고 해당하는 도메인 이름을 반환하는 역방향 검색의 예입니다. 코드는 다음과 같습니다.
    #!/usr/bin/env python
    #Basic gethostbyadddr example
    
    import sys,socket
    
    try:
        result = socket.gethostbyaddr(sys.argv[1])
    
        print "Primary hostname:"
        print " " + result[0]
    
        print "
    Addresses:" for item in result[2]: print " " + item except socket.herror,e: print "Couldn't look up name:",e

    때때로 공격자가 역방향 검색 기록에 위조된 데이터를 삽입하는 것을 발견할 수 있다. DNS 구조에서는 이런 사기를 막을 수 없지만 프로그램에 제한을 넣을 수 있다.우선 정상적인 역방향 검색을 통해 도메인 이름을 얻은 다음에 이 도메인 이름에 따라 정방향 검색을 한다.만약 정상적이라면 IP 주소는 정방향 조회에서 얻은 목록에 있어야 한다. 그렇지 않으면 누군가가 위조된 반방향 정보를 제공하는 것이다.

    환경 정보 얻기


    프로그램을 실행하는 기계의 정보를 얻으려면 두 개의 새로운 함수를 사용해야 한다. 하나는 socket이다.gethostname (), 매개 변수를 포함하지 않고 문자열을 되돌려줍니다. 로컬 기기의 호스트 이름입니다. 보통 완전하지 않습니다.두 번째는 소켓입니다.getfqdn (), 호스트 이름으로 온전한 호스트 이름을 얻을 수 있는 인자가 있습니다.

    총결산


    DNS는 도메인 이름과 IP 주소 간의 변환에 사용됩니다.python은 socket 모듈을 통해 운영체제 자체의 DNS 기능에 접근하는 인터페이스를 제공하여 더욱 유연성을 위해 제3자 확장 DNS 패키지, 예를 들어 PyDNS를 사용할 수 있다.
    정방향 조회는 도메인 이름을 IP 주소로 번역하는 것이 원격 서비스를 연결하는 기본적인 부분이다.역방향 조회는 IP 주소를 호스트 이름으로 번역하지만, 역방향 조회에서 잘못된 데이터를 사용하지 않았는지 확인해야 합니다.

    좋은 웹페이지 즐겨찾기