คำขอ DNS มีลักษณะอย่างไร


32

ฉันเห็นว่าการแสดงข้อความของคำขอ HTTP คืออะไร แต่คำขอ DNS มีลักษณะเป็นอย่างไร ตำแหน่งของ URL ที่คุณพยายามค้นหาอยู่ที่ไหนในข้อมูล นอกจากนี้ยังมีการจัดรูปแบบการตอบสนองอย่างไร?


3
ทางออกที่ดีที่สุดของคุณคือการดาวน์โหลด wireshark และจับแพ็กเก็ตที่คุณสามารถรับภาพเต็มของสิ่งที่เกิดขึ้นเมื่อมีการร้องขอ DNS
mrdenny

1
ดูเหมือนคำถามการบ้าน
Jimsmithkka

2
@mydenny - ไม่มีทางออกที่ดีที่สุดที่จะทำอย่างนั้นกับสำเนาของ RFC1035มือ Wireshark จะไม่ให้ภาพ "เต็ม" แก่คุณ แต่สามารถแสดงให้คุณเห็นว่าแพ็คเก็ตเฉพาะที่คุณเห็นมีลักษณะเป็นอย่างไร
Alnitak

@ Jim- ไม่ใช่ @ mrdenny- ฉันใช้ Wireshark และไม่ทราบว่าคำขอดิบแปลเป็นสิ่งที่ฉันส่งไปอย่างไร
AMWJ

คำตอบ:


40

นี่เป็นดัมพ์ดิบจาก Wireshark ของเคียวรี DNS

ส่วน DNS เริ่มต้นด้วย 24 1a:

0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00   ........ ......E.
0010  00 3c 51 e3 40 00 40 11  ea cb 7f 00 00 01 7f 00   .<Q.@.@. ........
0020  00 01 ec ed 00 35 00 28  fe 3b 24 1a 01 00 00 01   .....5.( .;$.....
0030  00 00 00 00 00 00 03 77  77 77 06 67 6f 6f 67 6c   .......w ww.googl
0040  65 03 63 6f 6d 00 00 01  00 01                     e.com... ..      

และนี่คือรายละเอียด:

Domain Name System (query)
    [Response In: 1852]
    Transaction ID: 0x241a
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 0
    Queries
        www.google.com: type A, class IN
            Name: www.google.com
            Type: A (Host address)
            Class: IN (0x0001)

และการตอบกลับเริ่มต้นที่ 24 1a อีกครั้ง:

0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00   ........ ......E.
0010  00 7a 00 00 40 00 40 11  3c 71 7f 00 00 01 7f 00   .z..@.@. <q......
0020  00 01 00 35 ec ed 00 66  fe 79 24 1a 81 80 00 01   ...5...f .y$.....
0030  00 03 00 00 00 00 03 77  77 77 06 67 6f 6f 67 6c   .......w ww.googl
0040  65 03 63 6f 6d 00 00 01  00 01 c0 0c 00 05 00 01   e.com... ........
0050  00 05 28 39 00 12 03 77  77 77 01 6c 06 67 6f 6f   ..(9...w ww.l.goo
0060  67 6c 65 03 63 6f 6d 00  c0 2c 00 01 00 01 00 00   gle.com. .,......
0070  00 e3 00 04 42 f9 59 63  c0 2c 00 01 00 01 00 00   ....B.Yc .,......
0080  00 e3 00 04 42 f9 59 68                            ....B.Yh         

ทำให้พังถล่ม:

Domain Name System (response)
    [Request In: 1851]
    [Time: 0.000125000 seconds]
    Transaction ID: 0x241a
    Flags: 0x8180 (Standard query response, No error)
        1... .... .... .... = Response: Message is a response
        .000 0... .... .... = Opcode: Standard query (0)
        .... .0.. .... .... = Authoritative: Server is not an authority for domain
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... 1... .... = Recursion available: Server can do recursive queries
        .... .... .0.. .... = Z: reserved (0)
        .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
        .... .... .... 0000 = Reply code: No error (0)
    Questions: 1
    Answer RRs: 3
    Authority RRs: 0
    Additional RRs: 0
    Queries
        www.google.com: type A, class IN
            Name: www.google.com
            Type: A (Host address)
            Class: IN (0x0001)
    Answers
        www.google.com: type CNAME, class IN, cname www.l.google.com
            Name: www.google.com
            Type: CNAME (Canonical name for an alias)
            Class: IN (0x0001)
            Time to live: 3 days, 21 hours, 52 minutes, 57 seconds
            Data length: 18
            Primary name: www.l.google.com
        www.l.google.com: type A, class IN, addr 66.249.89.99
            Name: www.l.google.com
            Type: A (Host address)
            Class: IN (0x0001)
            Time to live: 3 minutes, 47 seconds
            Data length: 4
            Addr: 66.249.89.99
        www.l.google.com: type A, class IN, addr 66.249.89.104
            Name: www.l.google.com
            Type: A (Host address)
            Class: IN (0x0001)
            Time to live: 3 minutes, 47 seconds
            Data length: 4
            Addr: 66.249.89.104

แก้ไข:

โปรดทราบว่าหากคำถามจริงของคุณคือ "ฉันจะเขียนเซิร์ฟเวอร์ DNS ได้อย่างไร" มีคำตอบที่เหมาะสมสองข้อ:

แก้ไข (2):

คำขอถูกส่งโดยใช้hostบนกล่อง linux:

host www.google.com

หากคุณใช้ Windows คุณสามารถใช้งานได้ nslookup

nslookup www.google.com

2
ไม่ต้องถอนการติดตามสายโดยไม่มีการอ้างอิงถึงข้อมูลจำเพาะจริง ฟา DNS มากเกินไปทำงานร่วมกันของปัญหาที่เกิดขึ้นมีสาเหตุมาจากคนเชื่อว่าพวกเขาสามารถย้อนกลับวิศวกรจากร่องรอยลวดและหายไปความแตกต่างที่ลึกซึ้ง ไม่ว่าในกรณีใด ๆ การถ่ายโอนข้อมูลนี้ไม่เพียงพอ - มันไม่แสดงให้เห็นถึงวิธีการเข้ารหัสฉลากและ RRs
Alnitak

7
@Alnitak: ฉันอ่านคำถามว่า "อะไรคือตัวอย่างของคำขอ DNS / การตอบสนอง" แทนที่จะเป็นคำขอที่เป็นไปได้ทั้งหมด อัปเดตในกรณีที่ไม่ถูกต้อง
ngoozeff

คุณส่งคำขอเพื่อรับสิ่งนี้ได้อย่างไร
AMWJ

1
ฉันต้องการทราบว่ามีการส่งพารามิเตอร์ URL ที่ใช้ในเบราว์เซอร์ด้วยหรือไม่หรือเป็นเพียงชื่อโดเมน ดังนั้นสำหรับคำถามนี้/questions/173187/what-does-a-dns-request-look-likeรวมอยู่ในคำขอหรือไม่
SPRBRN

1
@SPRBRN DNS ไม่ได้จัดการกับ URL เพียงชื่อโดเมนเท่านั้น
Håkan Lindqvist

7

DNS รูปแบบคำขอข้อมูลที่อธิบายไว้ในRFC 1035 ฉันคิดว่ามันไม่มีประโยชน์ที่จะคัดลอกข้อความที่นี่ ...


5

การค้นหาและตอบสนอง DNS นั้นดูดีที่สุดโดยใช้เครื่องมือวิเคราะห์โปรโตคอล - Wiresharkเป็นเครื่องมือข้ามแพลตฟอร์มที่ดีที่สามารถจับภาพและแยกแยะคำขอและการตอบสนองออกเป็นส่วนต่างๆ มีการแนะนำที่ดีกับโครงสร้างของการร้องขอ DNS และคำตอบที่เป็นFirewall.cx ที่นี่

คำขอ DNS มีคำถามที่ระบุชื่อ (หรืออาจเป็นฟิลด์ข้อความที่กำหนดเอง) และประเภทบันทึก - เนื้อหาของการตอบสนองจะแตกต่างกันไปตามประเภท คำขอส่วนใหญ่เป็นการค้นหาโดยตรงอย่างง่าย ๆ ของชื่อเซิร์ฟเวอร์ที่กำลังมองหาที่อยู่ ip ในการตอบสนอง (ประเภท A) แต่บางคนจะมองหาข้อมูลเพิ่มเติมเกี่ยวกับเซิร์ฟเวอร์ชื่อตัวเอง (Type NS), บันทึกจดหมาย (Type MX) และบริการอื่น ๆ (ประเภท SRV ที่จะส่งคืนชื่อพอร์ตน้ำหนักและลำดับความสำคัญ) การตอบกลับ DNS มีคำตอบสำหรับคำถามเหล่านี้ซึ่งอาจมีมากกว่าหนึ่งคำขอหากคำขอนั้นต้องการและไม่ใช่แค่ที่อยู่ IP เสมอไป

การชี้แจงอื่น ๆ - DNS ไม่สามารถแก้ไข URL - ในสถานการณ์ส่วนใหญ่ที่เกี่ยวข้องกับ URL DNS ใช้เพื่อเปิดใช้งานระบบฝั่งไคลเอ็นต์เพื่อค้นหาที่อยู่ IP ของส่วนเซิร์ฟเวอร์ของ URL ทุกอย่างอื่นจัดการโดยโปรโตคอลอื่น


3

หากคุณสามารถเข้าสู่เครื่อง Linux คุณสามารถเรียกใช้คำสั่งdigเพื่อทำการค้นหา DNS ยูทิลิตีนี้ทำการค้นหาและส่งคืนสิ่งที่เซิร์ฟเวอร์ชื่อตอบกลับด้วย ตัวอย่างเช่น:

; <<>> DiG 9.6.1-P2 <<>> serverfault.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32383
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;serverfault.com.               IN      A

;; ANSWER SECTION:
serverfault.com.        55961   IN      A       69.59.196.211

;; Query time: 21 msec
;; SERVER: 68.87.64.150#53(68.87.64.150)
;; WHEN: Sun Aug 22 09:21:35 2010
;; MSG SIZE  rcvd: 49

ทุกอย่างที่เริ่มต้นด้วยส่วน "HEADER" คือสิ่งที่ได้รับคืนจากเซิร์ฟเวอร์ชื่อ ฉันสมมติว่านี่คือสิ่งที่คุณอ้างถึงในรูปแบบข้อความเพราะนี่ไม่ใช่รูปแบบของแพ็กเก็ตจริง แต่เป็นข้อความที่ได้รับคืน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.