홍카나의 공부방

[컴퓨터 네트워크] 2-3. Python을 이용한 DNS 질의/응답 본문

Computer Network

[컴퓨터 네트워크] 2-3. Python을 이용한 DNS 질의/응답

홍문관카페나무 2022. 12. 21. 18:02

Python을 이용하여 구글의 DNS와 패킷을 보내 질의/응답하는 코드를 작성해 보자.

 

DNS 란?

더보기

www.google.com에 접속을 하고자 하면

DNS가 domain name을 IP주소로 바꿔주면서 비로소 웹 사이트에 접속을 할 수 있게 된다.

 

이처럼 웹 사이트에 도메인 이름으로 접속하기 위해서는

도메인 이름을 IP주소로 바꿔주는 DNS의 주소와 포트 번호를 알아야 한다.

DNS Example // 출처 - https://www.geeksforgeeks.org/working-of-domain-name-system-dns-server

 

DNS의 포트번호는 IANA에 의해서 well-known-service로 표준 포트번호인 53번이 정해져 있다.

그리고 구글의 public DNS 주소는 8.8.8.8이므로, 해당 DNS와 통신해서 google.com의 IP주소를 알아내보겠다.

 


 

 

import dns.query
import dns.resolver

# 질의할 도메인 주소 입력
domain = 'google.com'

# 사용할 DNS Server 주소 입력
dns_server = '8.8.8.8'

# 도메인의 A record에 대한 DNS 쿼리 생성
query = dns.message.make_query(domain, 'A')

# DNS 서버로 쿼리 전송 및 응답 받기
response = dns.query.udp(query, dns_server)

# 응답 출력
print(response)

 

dns.query와 dns.resolver 라이브러리를 이용했으며,

간단한 A record 타입의 도메인 주소 해석을 요청해 본다.

 

이렇게 하면 구글 웹 사이트의 IP 주소가 출력될 것이다.

출력된 주소를 입력해서 구글에 접속해 보자.

반응형