עודכן לפני חודש
כשהדפדפן שלך צריך למצוא את example.com, המחשב שלך שולח שאילתת DNS אחת וממתין לתשובה. שאלה אחת, תגובה אחת. אבל מאחורי הפשטות הזו, ה-resolver שלך מבצע שאילתות מרובות מסוג שונה לגמרי — עוקב אחרי הפניות משרתים שמסרבים לבצע את העבודה בעצמם.
שני סוגי שאילתות אלה, רקורסיביות ואיטרטיביות, פועלים יחד בכל חיפוש DNS. כשמבינים את ההבדל ביניהם, מתגלה כיצד DNS נשאר פשוט עבור מיליארדי מכשירים, תוך פיזור העבודה לרחבי היררכיה גלובלית.
שאילתות רקורסיביות: "מצא לי את זה"
שאילתה רקורסיבית היא האצלת אחריות: "תביא לי את התשובה. לא אכפת לי איך."
כשהמחשב שלך שואל resolver על example.com, הוא מבצע שאילתה רקורסיבית. שאלה אחת נכנסת, תשובה אחת יוצאת. המחשב שלך לא רוצה הפניות. הוא לא רוצה לשמוע "נסה לשאול מישהו אחר." הוא רוצה את כתובת ה-IP, או אישור שהדומיין לא קיים.
ה-resolver מקבל אחריות מלאה. הוא עשוי לשאול חמישה שרתים שונים כדי למצוא את התשובה, אבל המחשב שלך לא רואה דבר מכל זה. כך עובדים הטלפון, המחשב הנייד וה-thermostat החכם שלך — הם שולחים שאילתות רקורסיביות ובוטחים ב-resolver שלהם שיטפל בכל השאר.
שאילתות איטרטיביות: "שאל אותם במקומי"
שאילתה איטרטיבית מקבלת תגובה שונה: התשובה הטובה ביותר שיש לשרת כרגע — שעשויה להיות הפניה למישהו שיודע יותר.
כשה-resolver מקבל את השאילתה הרקורסיבית שלך ואין לו את התשובה שמורה במטמון, הוא מתחיל לשלוח שאילתות איטרטיביות לשרתי DNS מוסמכים:
כל שרת עונה רק על מה שהוא יודע. שרתי השורש יודעים מי מטפל ב-.com. שרתי ה-.com יודעים מי מוסמך ל-example.com. שרת השמות המוסמך יודע את כתובת ה-IP בפועל.
ה-resolver עוקב אחרי כל הפניה עד שמגיע לשרת שמחזיק את התשובה הסופית.
מדוע קיימת חלוקת עבודה זו
שאילתות רקורסיביות נוחות. שאילתות איטרטיביות — עמידות.
אילו שרתי השורש היו מסכימים ל"מצא לי את זה", הם היו שולחים שאילתות יוצאות בשם כל resolver בעולם. הם היו קורסים תוך שניות. במקום זאת, שרתי השורש מטפלים בעשרות אלפי שאילתות בשנייה על ידי שהם עושים כמעט כלום: "לא האזור שלי. שאל אותם."
לקוחות משתמשים בשאילתות רקורסיביות מפני ש:
- שאלה אחת, תשובה אחת — ללא מורכבות עבור המכשיר
- טלפונים ומחשבים ניידים לא בנויים לעקוב אחרי הפניות לרחבי היררכיית DNS
- שמירה במטמון מתרחשת ב-resolver ומועילה לכל מי שמשתמש בו
- מיליארדי מכשירים פשוטים נשארים פשוטים
Resolvers משתמשים בשאילתות איטרטיביות מפני ש:
- שרתים מוסמכים עונים רק על שאלות לגבי האזור שלהם
- אף שרת לא בוטח בשרת אחר שיבצע שאילתות בשמו
- עומס העבודה מתפזר באופן טבעי לרחבי ההיררכיה
- שרתי השורש שומרים על שפיותם בכך שהם מסרבים לעבוד בשם אחרים
זו לא מגבלה. כך DNS מצליח לשרת את האינטרנט כולו.
המסלול המלא
כשאתה מבקר ב-www.connected.app בפעם הראשונה:
- המחשב שלך → Resolver: שאילתה רקורסיבית ("מצא עבורי את www.connected.app")
- Resolver → שרת שורש: שאילתה איטרטיבית ← "שאל את שרת ה-.app"
- Resolver → שרת .app: שאילתה איטרטיבית ← "שאל את שרת השמות של connected.app"
- Resolver → שרת השמות של connected.app: שאילתה איטרטיבית ← "76.76.21.21"
- Resolver → המחשב שלך: "76.76.21.21"
המחשב שלך שלח שאילתה אחת. ה-resolver שלח שלוש. המחשב שלך בטח ב-resolver שיטפל במורכבות. ה-resolver לא בטח באף אחד — הוא אימת כל שלב בעצמו.
השלכות מעשיות
ההבחנה הזו חשובה כשדברים משתבשים:
- אין תגובה לשאילתות רקורסיביות: ה-resolver שלך מושבת או לא נגיש
- ה-resolver לא יכול להשלים שאילתות איטרטיביות: חומת אש חוסמת DNS יוצא, או שרתי upstream אינם נגישים
- התקפות הרעלת DNS: לעתים קרובות מכוונות לנתיב האיטרטיבי שבין resolvers לשרתים מוסמכים
- חיפושים איטיים: כל קפיצה בנתיב האיטרטיבי מוסיפה זמן אחזור; resolvers טובים ממזערים זאת בעזרת שמירה נרחבת במטמון
Resolvers ציבוריים כמו Cloudflare (1.1.1.1) ו-Google (8.8.8.8) פופולריים מפני שהם resolvers רקורסיביים בזמינות גבוהה עם ביצועי שאילתות איטרטיביות מצוינים. הם מקבלים את האצלת האמון שלך ומטפלים בה היטב.
שאלות נפוצות על שאילתות DNS רקורסיביות ואיטרטיביות
האם המחשב שלי יכול לבצע שאילתות איטרטיביות ישירות?
מבחינה טכנית — כן, אבל זה כמעט לא קורה. המחשב שלך יצטרך לדעת מאין להתחיל (שרתי השורש), לעקוב אחרי הפניות מרובות, ולטפל במורכבות של מעבר לרחבי היררכיית DNS. שאילתות רקורסיביות מאפשרות למחשב שלך להאציל את כל זה ל-resolver שנבנה בדיוק לשם כך.
מדוע שרתים מוסמכים לא מקבלים שאילתות רקורסיביות?
קנה מידה ואבטחה. שאילתה רקורסיבית אומרת למעשה "בצע שאילתות בשמי" — שרתים מוסמכים מסרבים לאחריות הזו. הם עונים על שאלות הנוגעות לאזור שלהם ומספקים הפניות לכל השאר. ללא שאילתות יוצאות, ללא מצב מורכב, וללא משטח תקיפה הנובע מפעולה בשם זרים.
מה קורה אם הפניה מצביעה על שרת שמושבת?
ה-resolver מנסה שרתי שמות אחרים, כשישנם מספר שרתים רשומים (לרוב האזורים יש לפחות שניים). אם כל השרתים המוסמכים אינם נגישים, ה-resolver מחזיר שגיאת SERVFAIL לשאילתה הרקורסיבית שלך. המחשב שלך רואה "חיפוש ה-DNS נכשל."
האם שמירה במטמון עובדת אחרת עבור כל סוג שאילתה?
Resolvers שומרים במטמון תשובות משני הסוגים, אך התועלת זורמת לשאילתות הרקורסיביות. כשהמחשב שלך שואל על דומיין שה-resolver בדק לאחרונה, הוא מחזיר את התשובה השמורה מיידית — ללא שאילתות איטרטיביות. שמירה במטמון מאיצה שאילתות רקורסיביות; שאילתות איטרטיביות הן שממלאות את המטמון מלכתחילה.
האם דף זה היה מועיל?