الخلاصة
كان بروتوكول DNS مصممًا في الأصل للعمل عبر IPv4 + UDP، حيث يبلغ الحد الأقصى لحمولة UDP غير المجزأة 512 بايت. ويجب أن تتسع قائمة خوادم الجذر في حزمة استجابة UDP واحدة (لتجنب الرجوع إلى TCP، الذي يزيد زمن الاستجابة والتعقيد). وبالحساب العكسي انطلاقًا من بنية رسالة DNS، يتبين أن أقصى عدد من خوادم الجذر يمكن أن تتسع له الرسالة هو 13. لم يقع الاختيار على هذا الرقم لأنه «يكفي بالكاد» — بل هو سقف صارم يفرضه البروتوكول منذ 1995، وبقي دون تغيير حتى اليوم حفاظًا على التوافق مع مليارات الأجهزة الطرفية.
1. القيد الصارم في البروتوكول: 512 بايت
1.1 قيمة MTU في IPv4 وحزم UDP غير المجزأة
اشترطت شبكات ARPANET وIPv4 المبكرة حدًا أدنى لقيمة MTU قدره 576 بايت. وكان على كل مضيف أن يتمكن من استقبال حزم بهذا الحجم، وإلا فلا يمكن ضمان حتى إمكانية الوصول الأساسية (RFC 791).
Total Length is the length of the datagram, measured in octets,
including internet header and data. This field allows the length of
a datagram to be up to 65,535 octets. Such long datagrams are
impractical for most hosts and networks. All hosts must be prepared
to accept datagrams of up to 576 octets (whether they arrive whole
or in fragments). It is recommended that hosts only send datagrams
larger than 576 octets if they have assurance that the destination
is prepared to accept the larger datagrams.- الطول الكلي 576 بايت − ترويسة IP النموذجية بحجم 20 بايت − ترويسة UDP بحجم 8 بايت ≈ 548 بايت قابلة للاستخدام (مع خيارات IP قد تصل الترويسة إلى 60 بايت، فيتبقى أقل من ذلك)
- اعتمد RFC 1035 § 4.2.1 قيمة أكثر تحفظًا من قوى العدد 2، وهي 512 بايت، حدًا أقصى صارمًا لبروتوكول DNS عبر UDP — وهي آمنة حتى عندما تحمل ترويسة IP كامل خياراتها
- إذا تجاوزت استجابة UDP حجم 512 بايت، فيجب اقتطاعها مع تعيين العلامة TC، مما يجبر العميل على الرجوع إلى TCP — ومصافحة TCP الثلاثية تضاعف زمن الاستجابة عند أول تحليل عدة مرات
بعبارة أخرى، «يجب أن تتسع قائمة خوادم الجذر كاملة في حزمة UDP واحدة بحجم 512 بايت» — وإلا لكان على كل استعلام جذر في العالم أن يمر عبر TCP، وهو ما كان سيقترب من الكارثة على عتاد ثمانينيات القرن الماضي.
1.2 توزيع البايتات في رسالة DNS
البنية الكاملة للاستجابة على استعلام سجلات NS للنطاق . (يعيد الخادم جميع سجلات NS للجذر إضافة إلى سجلات glue من نوع A):
Header (12 بايت)صيغة الطول الكلي:
L(N) = 12 + 5 + 31 + 15(N-1) + 16N = 31N + 33بالتعويض بحد 512 بايت:
31N + 33 ≤ 512 ⇒ N ≤ 15.45نظريًا يسمح ذلك بما يصل إلى 15 مجموعة، لكن يلزم ترك هامش لتوقيعات DNSSEC وسجل EDNS0 OPT الزائف وحشو الحقول، فاستقر العدد عند 13 مجموعة — إذ وضع RFC 2010 (1996) المعايير التشغيلية لخوادم الجذر، ولم يتغير العدد منذ تشغيل M-root في العام التالي.
1.3 جربه بنفسك — <code>dig +noedns -t ns .</code> يعيد نحو 490–510 بايت
هذا من الناحية النظرية. والآن لنستعلم فعليًا من خادم الجذر باستخدام dig ونرى الحجم الحقيقي للاستجابة:
$ dig +noedns -t ns .
; <<>> DiG 9.10.6 <<>> +noedns -t ns .
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35973
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 15
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 430502 IN NS a.root-servers.net.
. 430502 IN NS b.root-servers.net.
… (13 سجل NS إجمالًا، حُذفت c إلى l)
. 430502 IN NS m.root-servers.net.
;; ADDITIONAL SECTION:
a.root-servers.net. 516909 IN A 198.41.0.4
b.root-servers.net. 562547 IN A 170.247.170.2
… (اتسعت جميع سجلات glue من النوع A وعددها 13)
m.root-servers.net. 516941 IN A 202.12.27.33
a.root-servers.net. 516930 IN AAAA 2001:503:ba3e::2:30
b.root-servers.net. 562547 IN AAAA 2801:1b8:10::b
↑ لم يتسع إلا سجلان AAAA — الحزمة ممتلئة
;; Query time: 8 msec
;; SERVER: 192.168.1.1#53
;; MSG SIZE rcvd: 492
السطر الأهم في النهاية — إجمالي الاستجابة نحو 490–510 بايت، أي دون 512 بهامش مريح (يعتمد الرقم الدقيق على خادم الجذر الذي تسأله وعدد سجلات glue من نوع IPv6 المعادة) — يطابق ميزانية البايتات أعلاه. لاحظ الخيار +noedns: يرسل dig امتداد EDNS0 افتراضيًا، فتتجاوز الاستجابة 800 بايت بكثير. ولهذا السبب تحديدًا لم تعد 512 بايت حدًا صارمًا بعد أن أصبح EDNS0 معتمدًا في كل مكان — لكن الرقم 13 كان قد ثبت قبل ذلك.
2. من أين جاء الرقم 13؟ لمحة تاريخية
لم يكن هذا الرقم ثابتًا منذ البداية. فقد مر عدد خوادم الجذر بعدة توسعات، وبعد تشغيل M-root (WIDE، اليابان) عام 1997 لم يتغير مطلقًا:
| السنة | العدد | الحدث الأبرز |
|---|---|---|
| 1984 | 4 | التصميم الأولي لبروتوكول DNS، وجميع الخوادم في الولايات المتحدة |
| 1991 | 7 | إضافة عقد أكاديمية وأخرى تابعة لوزارة الدفاع الأمريكية |
| 1995 | 9 | انضمام RIPE NCC (K-root) — أول خادم في أوروبا |
| 1997 | 13 | انضمام مشروع WIDE (M-root) — أول خادم في آسيا، وتثبيت العدد |
| 2007 | 13 | إضافة دعم IPv6 (المكدس المزدوج)، مع بقاء «عدد المجموعات» من حيث عناوين IP دون تغيير |
| 2023 | 13 | نقلت USC-ISI عنوان IP لخادم B-root إلى 170.247.170.2 (وأوقف العنوان القديم 199.9.14.201) |
بعد تثبيت العدد عند 13، لا تتغير أسماء الحروف من A إلى M أبدًا — بل يقتصر الأمر على ترقية الأجهزة وإضافة نسخ Anycast. فملف تلميحات الجذر للإنترنت (named.root) مدمج منذ زمن طويل في شيفرة مليارات من محللات DNS العودية والعملاء الطرفيين (stub)؛ وتغيير رقم واحد يعني ترقية الإنترنت بأكمله.
3. لكن هل توجد حقًا 13 آلة فقط في العالم؟
لا. هذا هو الاعتقاد الخاطئ الأكثر شيوعًا. فعبارة «13 مجموعة من خوادم الجذر» تشير إلى 13 اسمًا من أسماء NS (a–m.root-servers.net)، يقابل كل منها عنوان IPv4 واحدًا وعنوان IPv6 واحدًا — وليس 13 جهازًا فعليًا.
خلف كل عنوان IP عنقود Anycast — إذ تعلن مئات من مراكز البيانات حول العالم عن عنوان IP نفسه عبر BGP في الوقت ذاته، وتوجه الشبكة استعلام DNS الخاص بالمستخدم إلى أقرب نسخة بحسب RTT. وعندما «يتعطل» خادم جذر، فهذا يعني عادةً أن نسخة مدينة واحدة قيد الصيانة — ولا يتأثر التحليل على مستوى العالم.
حالة 13 مجموعة من خوادم الجذر في عام 2024
| الحرف | الجهة المشغلة | IPv4 | IPv6 | نسخ Anycast |
|---|---|---|---|---|
| A | Verisign, Inc. | 198.41.0.4 | 2001:503:ba3e::2:30 | 53 |
| B | Information Sciences Institute (USC) | 170.247.170.2 | 2801:1b8:10::b | 6 |
| C | Cogent Communications | 192.33.4.12 | 2001:500:2::c | 12 |
| D | University of Maryland | 199.7.91.13 | 2001:500:2d::d | 187 |
| E | NASA Ames Research Center | 192.203.230.10 | 2001:500:a8::e | 254 |
| F | Internet Systems Consortium | 192.5.5.241 | 2001:500:2f::f | 274 |
| G | US DOD Network Information Center | 192.112.36.4 | 2001:500:12::d0d | 6 |
| H | US Army Research Laboratory | 198.97.190.53 | 2001:500:1::53 | 17 |
| I | Netnod | 192.36.148.17 | 2001:7fe::53 | 75 |
| J | Verisign, Inc. | 192.58.128.30 | 2001:503:c27::2:30 | 168 |
| K | RIPE NCC | 193.0.14.129 | 2001:7fd::1 | 113 |
| L | ICANN | 199.7.83.42 | 2001:500:9f::42 | 218 |
| M | WIDE Project | 202.12.27.33 | 2001:dc3::35 | 12 |
| إجمالي نسخ Anycast (2024) | 1395 | |||
يستضيف البر الرئيسي الصيني (بكين وشنغهاي وشنتشن وقوانغتشو وخفي وغيرها) عقد نسخ Anycast لعدة خوادم جذر منها F / I / J / K / L؛ وتكون قيمة RTT المقيسة إلى خوادم الجذر من داخل الصين عادةً أقل من 20ms.
4. بعد EDNS0 لم تعد 512 بايت حدًا فعليًا
قد تسأل: حزم DNS بحجم 4KB أو أكثر شائعة اليوم، فلماذا لا «نتجاوز الرقم 13» ببساطة؟
- EDNS0 (RFC 2671 عام 1999، والمعتمد حاليًا RFC 6891) — يتيح التفاوض على حمولة UDP أكبر (4096 بايت عادةً)، وتدعمه جميع محللات DNS الحديثة
- يفرض DNSSEC استخدام EDNS0، لأن بيانات التوقيع وحدها تتجاوز 512 بايت بكثير
- الرجوع إلى TCP — أصبحت مصافحة TCP الثلاثية الحديثة مع TLS / cookies منخفضة التكلفة بالفعل
لكن قائمة خوادم الجذر أصبحت اليوم إجماعًا على مستوى الشبكة كلها: فكل محلل DNS عودي على وجه الأرض يحمل هذه المجموعات الثلاث عشرة مثبتة في ملف التلميحات (named.root)، وخلف هذه المحللات مليارات الأجهزة الطرفية. الحافز للتغيير معدوم، والمخاطر هي انقسام الإنترنت العالمي، لذا سيبقى هذا الرقم على الأرجح 13 إلى الأبد.
باختصار: عفا الزمن على «13 مجموعة» من الناحية المادية منذ أمد بعيد، لكن تغييرها مستحيل من الناحية الهندسية.
5. أهم الخلاصات
- السبب التاريخي: حد 512 بايت لبروتوكول DNS عبر UDP → سقف رياضي قدره 15 مجموعة → اختيار 13 مع هامش احتياطي، وتثبيت العدد بعد تشغيل M-root عام 1997
- جمود البروتوكول: تحديث ملفات التلميحات على مليارات الأجهزة الطرفية غير عملي، لذا لا يتغير الرقم أبدًا
- السعة الفعلية: 1395+ عقدة من نسخ Anycast، ما يجعل خطر التعطل في نقطة واحدة شبه معدوم
- إمكانية الوصول من الصين: لعدة خوادم جذر منها F / I / J / K / L نسخ في البر الرئيسي الصيني، بقيمة RTT مقيسة <؛ 20ms
قراءات إضافية
- Tencent Cloud: لماذا توجد 13 مجموعة فقط من خوادم الجذر في العالمالمرجع الذي اعتمدت عليه حسابات أطوال البايتات في هذا المقال
- القائمة الرسمية لخوادم الجذر من IANAالمصدر الموثوق للجهات المشغلة / عناوين IP / أعداد نسخ Anycast
- خريطة root-servers.org الحية لتوزيع النسخإحصاءات فورية لعدد النسخ حول العالم
- RFC 1035 § 4.2.1 — DNS UDP usage النص الأصلي لحد 512 بايت
- RFC 6891 — Extension Mechanisms for DNS (EDNS0) كيفية تجاوز حد 512 بايت