NETWORK · CH11

UDP 실용 예제: DNS 클라이언트

DNS 질의는 작은 요청/응답을 빠르게 주고받기 때문에 UDP 53번 포트를 기본으로 사용합니다.

핵심 분해

프로토콜 흐름
질의 생성도메인 이름과 레코드 타입을 DNS 메시지 형식으로 인코딩합니다.
UDP 전송대부분의 일반 질의는 53번 UDP 포트로 보냅니다.
응답 파싱응답 코드와 A/AAAA 같은 레코드를 읽어 주소를 얻습니다.
예외 처리응답이 잘리거나 크면 TCP로 재시도할 수 있습니다.

흐름으로 읽기

flow
질의 메시지도메인+타입
UDP 53빠른 전송
DNS 응답레코드 파싱
실무 포인트

UDP 자체는 신뢰성을 보장하지 않으므로 타임아웃, 재시도, TCP fallback이 함께 필요합니다.

query = build_dns_query("example.com")
sock.sendto(query, (dns, 53))
data, _ = sock.recvfrom(512)