Check-Host.cc

فحص سجل SRV العالمي

في حين إن سجلات A و AAAA العادية بتقتصر على ترجمة اسم الدومين لـ IP Address، سجل SRV (Service) معقد أكتر بكتير. السجل ده متحدد في RFC 2782، وبيأسس طريقة قياسية لتحديد الـ Hostname الدقيق، والبروتوكول، ورقم البورت (Port) بالظبط لتطبيقات شبكة معينة. السجلات دي بتعتبر العمود الفقري لاكتشاف الخدمات في الشركات، وبتستخدم بكثافة في حاجات زي Microsoft Active Directory، وتوجيه الـ SIP/VoIP، والمراسلة الفورية XMPP، ومعماريات سيرفرات الألعاب الضخمة (زي لما تعمل Resolve لـ _minecraft._tcp.example.com).

الـ Syntax وربط البورتات (Port Binding)

تقدر تميز سجل SRV فوراً من خلال هيكل الفورمات الصارم بتاعه. اسم السجل لازم يبدأ بـ Underscore بيمثل الخدمة، وبعده Underscore بيمثل بروتوكول النقل، ومضاف عليهم الدومين الأساسي (زي _sip._tls.example.com). الـ Payload الناتج بيبعت 4 نقط بيانات محددة للعميل اللي بيتصل: الأولوية (Priority)، الوزن (Weight)، البورت الهدف (Target Port)، والـ Hostname الهدف الأساسي. ده بيسمح للـ Admins إنهم يشغلوا خدمات مختلفة على نفس الـ IP باستخدام بورتات مش قياسية، من غير ما يحتاجوا يخلوا المستخدم النهائي يحفظ أرقام البورتات ويكتبها في جهازه.

الـ Native Failover والـ Weighted Load Balancing

أقوى ميزة في سجل SRV هي منطق التوجيه الأصلي بتاعه اللي بيتكون من كذا مستوى. رقم الأولوية (Priority) بيشتغل بالظبط زي سجل MX؛ العملاء اللي بيتصلوا هيحاولوا دايماً يعملوا Handshake مع السيرفر صاحب أقل أولوية الأول. ده بيعمل فوراً ميكانيزم للـ Failover. لو فيه كذا سجل عندهم نفس الأولوية بالظبط، رقم الوزن (Weight) بيتدخل. ده بيشتغل كـ Load Balancer نسبي. لو سيرفر A وزنه 75 وسيرفر B وزنه 25، تطبيق العميل هيوجه 75% من الاتصالات الجديدة لسيرفر A. ده بيسمح للمهندسين إنهم يوجهوا الترافيك بذكاء عبر Clusters بقدرات هاردوير مختلفة.

ليه الـ HTTP بيتجاهل سجلات SRV

سؤال شائع بيطرحه المطورين المبتدئين: ليه ترافيك الويب (HTTP/HTTPS) مبيستخدمش سجلات SRV عشان يعمل Load Balancing أصلي؟ الإجابة تاريخية بحتة. على الوقت اللي تم فيه توحيد معايير سجلات SRV، كانت الأعراف المعمارية إن HTTP يشتغل على بورت 80 و HTTPS يشتغل على بورت 443 محفورة (Hardcoded) كمعيار عالمي في كل متصفحات الويب. إنك تحول الويب للوكاب (Lookups) بتاعت SRV كان هيضيف عقوبة Resolution ضخمة (لأنه بيحتاج Round-trips إضافية) مقابل فايدة بسيطة. عشان كده، الـ HTTP بيعتمد على Application-layer Load Balancers وتوجيه Anycast IP.