dig +trace ทำงานโดยการแกล้งทำเป็นเซิร์ฟเวอร์ชื่อและใช้แผนผังเนมสเปซโดยใช้คำสั่งวนซ้ำเริ่มต้นที่รูทของทรีตามการอ้างอิงตามวิธี
สิ่งแรกที่ต้องทำคือถามเซิร์ฟเวอร์ DNS ระบบปกติสำหรับระเบียน NS สำหรับ "."
หลังจากได้รับการตอบกลับซึ่งจะเป็นรายชื่อเซิร์ฟเวอร์รูทปัจจุบันมันจะเลือกหนึ่งรายการจากนั้นขอบันทึก A สำหรับชื่อนั้นหากไม่ได้รับในส่วนระเบียนเพิ่มเติมในครั้งแรกดังนั้นจึงได้รับ ที่อยู่ IP เพื่อส่งข้อความค้นหาถัดไป สมมติว่ามันเลือก f.root-servers.net ซึ่งมีที่อยู่ IP คือ 192.5.5.241
ณ จุดนี้ลองใช้dig +trace www.google.co.uk.เป็นคำสั่งของเราด้วยชื่อโดเมนที่เราต้องการติดตามเส้นทางการแก้ปัญหาสำหรับ
การสืบค้นแบบเบื้องหลังเบื้องหลังคือ:
$ dig +norecurse @192.5.5.241 www.google.co.uk
   ; <<>> DiG 9.9.4 <<>> +norecurse @192.5.5.241 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8962
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 11, ADDITIONAL: 15
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.co.uk.              IN      A
;; AUTHORITY SECTION:
uk.                     172800  IN      NS      ns5.nic.uk.
uk.                     172800  IN      NS      ns6.nic.uk.
uk.                     172800  IN      NS      ns4.nic.uk.
uk.                     172800  IN      NS      nsc.nic.uk.
uk.                     172800  IN      NS      ns2.nic.uk.
uk.                     172800  IN      NS      ns3.nic.uk.
uk.                     172800  IN      NS      nsd.nic.uk.
uk.                     172800  IN      NS      nsa.nic.uk.
uk.                     172800  IN      NS      ns7.nic.uk.
uk.                     172800  IN      NS      nsb.nic.uk.
uk.                     172800  IN      NS      ns1.nic.uk.
;; ADDITIONAL SECTION:
ns1.nic.uk.             172800  IN      A       195.66.240.130
ns2.nic.uk.             172800  IN      A       217.79.164.131
ns3.nic.uk.             172800  IN      A       213.219.13.131
ns4.nic.uk.             172800  IN      A       194.83.244.131
ns5.nic.uk.             172800  IN      A       213.246.167.131
ns6.nic.uk.             172800  IN      A       213.248.254.130
ns7.nic.uk.             172800  IN      A       212.121.40.130
nsa.nic.uk.             172800  IN      A       156.154.100.3
nsb.nic.uk.             172800  IN      A       156.154.101.3
nsc.nic.uk.             172800  IN      A       156.154.102.3
nsd.nic.uk.             172800  IN      A       156.154.103.3
ns1.nic.uk.             172800  IN      AAAA    2a01:40:1001:35::2
ns4.nic.uk.             172800  IN      AAAA    2001:630:181:35::83
nsa.nic.uk.             172800  IN      AAAA    2001:502:ad09::3
;; Query time: 45 msec
;; SERVER: 192.5.5.241#53(192.5.5.241)
;; WHEN: Tue Feb 11 19:19:14 MST 2014
;; MSG SIZE  rcvd: 507
ว้าวดังนั้นตอนนี้เรารู้แล้วว่ามีเนมเซิร์ฟเวอร์สำหรับukและนั่นเป็นสิ่งเดียวที่รูทเซิร์ฟเวอร์รู้  นี่คือการอ้างอิงเพราะเราไม่ได้ขอการเรียกซ้ำ ( +norecurseปิด)
เยี่ยมมากเราล้างและทำซ้ำ ในครั้งนี้เราเลือกหนึ่งของukเซิร์ฟเวอร์และขอให้มันคำถามเดียวกัน
$ dig +norecurse @195.66.240.130 www.google.co.uk
; <<>> DiG 9.9.4 <<>> +norecurse @195.66.240.130 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 618
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.co.uk.              IN      A
;; AUTHORITY SECTION:
google.co.uk.           172800  IN      NS      ns1.google.com.
google.co.uk.           172800  IN      NS      ns3.google.com.
google.co.uk.           172800  IN      NS      ns2.google.com.
google.co.uk.           172800  IN      NS      ns4.google.com.
;; Query time: 354 msec
;; SERVER: 195.66.240.130#53(195.66.240.130)
;; WHEN: Tue Feb 11 19:22:47 MST 2014
;; MSG SIZE  rcvd: 127
เยี่ยมยอดตอนนี้เราพบแล้วว่าukเซิร์ฟเวอร์ชื่อระดับสูงรู้ว่ามีโซนที่ถูกเรียกgoogle.co.ukและบอกให้เราไปถามเซิร์ฟเวอร์เหล่านั้นกับคำถามของเรา นี่คือการอ้างอิงอื่น
ล้างซ้ำ
อย่างไรก็ตามเวลานี้เราไม่ได้รับระเบียน A ในส่วนระเบียนเพิ่มเติมของการตอบสนองดังนั้นเราจึงเลือกรายการหนึ่งพูด ns2.google.com และเราต้องไปหาที่อยู่ของมัน เราเริ่มการสืบค้นใหม่ (ที่รูทอีกครั้ง) และไล่ลงต้นไม้เพื่อค้นหาที่อยู่ IP สำหรับ ns2.google.com ฉันจะข้ามส่วนนั้นไปเพื่อความกะทัดรัด แต่เราเรียนรู้ว่า IP สำหรับมันคือ 216.239.34.10
ดังนั้นคำถามต่อไปของเราคือ:
$ dig +norecurse @216.239.34.10 www.google.co.uk
; <<>> DiG 9.9.4 <<>> +norecurse @216.239.34.10 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33404
;; flags: qr aa; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.co.uk.              IN      A
;; ANSWER SECTION:
www.google.co.uk.       300     IN      A       74.125.225.216
www.google.co.uk.       300     IN      A       74.125.225.223
www.google.co.uk.       300     IN      A       74.125.225.215
;; Query time: 207 msec
;; SERVER: 216.239.34.10#53(216.239.34.10)
;; WHEN: Tue Feb 11 19:26:43 MST 2014
;; MSG SIZE  rcvd: 82
และเราทำเสร็จแล้ว! (ในที่สุด) เราจะรู้ได้อย่างไรว่าเราทำเสร็จแล้ว? เราได้รับคำตอบสำหรับคำถามของเราซึ่งเป็นบันทึก A สำหรับ www.google.co.uk คุณสามารถบอกได้เพราะมันไม่ใช่การอ้างอิงอีกต่อไปaaบิตถูกตั้งค่าในการตอบกลับล่าสุดหมายความว่านี่เป็นคำตอบที่เชื่อถือได้สำหรับการสืบค้นของคุณ
dig +traceดังนั้นว่าสิ่งที่เกิดขึ้นในแต่ละขั้นตอนไปพร้อมกันเมื่อคุณใช้
โปรดทราบว่าถ้าคุณมีรุ่นขุด DNSSEC ทราบและคุณเพิ่ม+dnssecคำสั่งคุณอาจเห็นระเบียนเพิ่มเติม สิ่งที่บันทึกพิเศษเหล่านั้นถูกทิ้งไว้เป็นแบบฝึกหัดสำหรับผู้อ่าน ... แต่เข้าไปdig +sigchaseทำงานอย่างไร