DevSecOps

ما هو XMPP - بروتوكول المراسلة والحضور القابل للتوسيع؟

التسمية والتراسل المتوسع (XMPP) تدل على نظام رمزي شفاف يدعم التبادل التكاملي للرسائل والحالات بين التطبيقات الرقمية. شكلت الأساس الأولي لالية الرسائل الفورية للنشاط الإلكتروني، واليوم أصبح يحمل العديد من المزايا المُضافة.

استعراض لـ XMPP

XMPP الذي يرمز لـ "بروتوكول التراسل والوجود المُتوسع"، هو وسيلة رمزية مضبوطة تستعين بلغة الترميز المُتوسعة (XML) لتحقيق تدفق مفتوح للرسائل والبيانات بين النقاط المختلفة. يتميّز بقابليته للاستيعاب والإرتقاء لكي يتجاوب مع الطلبات المتغيرة للبرمجيات الرقمية.

جذور XMPP

جابر إنك Jabber Inc. كانت المنشأ لXMPP في عام 1999، ومنذ تلك الفترة، استُلم وتم تحسينه على يد مؤسسة معايير XMPP. في البداية، كان يعمل كأداة للتراسل الفوري والنشاط عبر الإنترنت، ولكنه تطور ليضمن العديد من التحسينات، بما في ذلك النشر والاشتراك، والتوجيه الأمني، والتحقق من الهوية.

طريقة عمل XMPP

XMPP يُنفذ التبادل المباشر للرسائل والبيانات بين النقاط المختلفة بمساعدة من علامات XML. الرسائل والبيانات تُرسل عبر الشبكات من خلال بروتوكولات النقل، مثل TCP/IP. تُعاد الرسائل والبيانات الحالية عند المراكز المستهدفة عبر الشبكة بإستخدام بروتوكولات التوجيه، مثل BGP.

القوائم المُضافة في XMPP

مقدرة XMPP على التطوير والتكيف مع التطورات في البرمجيات الرقمية تمثّل أحد أبرز ميزاته. XMPP يمنح البرمجيات الرقمية القدرة على تبادل الرسائل والبيانات بشكل موثوق وآمن. وكذلك يسمحم للتطبيقات بالنشر، الاشتراك, التوجيه الامني والتأكد من الهوية.

هندسة XMPP

تتكون بنية XMPP من ثلاثة مكونات رئيسية: العميل، الخادم، والخدمات الخارجية.

هندسة XMPP

العميل

العميل هو البرنامج الذي يستخدمه المستخدم للاتصال بالخادم. يمكن أن يكون العميل برنامج تشغيل على جهاز الكمبيوتر الشخصي للمستخدم، أو تطبيق على الهاتف المحمول، أو حتى واجهة ويب. يتواصل العميل مع الخادم عبر بروتوكول XMPP لإرسال واستقبال الرسائل.

الخادم

الخادم هو البرنامج الذي يتعامل مع الرسائل المرسلة والمستلمة من العملاء. يمكن للخادم أن يكون مستضافًا على جهاز الكمبيوتر الشخصي للمستخدم، أو على خادم في الإنترنت. يتعامل الخادم مع العديد من العملاء في نفس الوقت، ويمكنه توجيه الرسائل بينهم.

الخدمات الخارجية

الخدمات الخارجية هي برامج تقدم خدمات إضافية للعملاء والخادم. يمكن لهذه الخدمات أن تشمل الأشياء مثل الدردشة الجماعية، والنشر الشخصي، والتواجد. تتواصل الخدمات الخارجية مع الخادم عبر بروتوكول XMPP لتقديم هذه الخدمات.

تعتبر بنية XMPP مرنة وقابلة للتوسيع، مما يتيح للمطورين إضافة ميزات جديدة وخدمات إلى النظام بسهولة. بالإضافة إلى ذلك، يمكن لبروتوكول XMPP التعامل مع العديد من أنواع الرسائل، بما في ذلك النص، والصور، والفيديو، والصوت.

مثال على بنية XMPP

لنفترض أن لدينا ثلاثة مستخدمين: أليس، بوب، وتشارلي. تستخدم أليس وبوب عملاء XMPP على أجهزة الكمبيوتر الشخصية الخاصة بهم، بينما يستخدم تشارلي تطبيق XMPP على هاتفه المحمول. يتواصل الثلاثة عبر خادم XMPP مشترك.

عندما ترسل أليس رسالة إلى بوب، يتم إرسال الرسالة أولاً إلى الخادم عبر بروتوكول XMPP. يتعرف الخادم على أن الرسالة موجهة إلى بوب، ويقوم بتوجيه الرسالة إليه. يتلقى بوب الرسالة على جهاز الكمبيوتر الشخصي الخاص به، ويمكنه الرد على أليس بنفس الطريقة.

إذا أراد تشارلي الانضمام إلى المحادثة، يمكنه القيام بذلك بسهولة. يتواصل تطبيق XMPP الخاص به مع الخادم، ويمكنه استلام الرسائل من أليس وبوب وإرسال الرسائل إليهم.

هذا هو الأساس الذي يعتمد عليه بروتوكول XMPP. بالطبع، يمكن أن تكون البنية أكثر تعقيدًا من ذلك، مع العديد من الخوادم والخدمات الخارجية، ولكن هذا يعطي فكرة عامة عن كيفية عمل النظام.

How does XMPP protocol work?

يعمل بروتوكول XMPP على أساس نموذج الاتصالات القائم على العميل / الخادم. في هذا النموذج، يتصل العميل بالخادم ويبقى متصلاً به طوال فترة الجلسة. يتم تبادل الرسائل والبيانات الأخرى بين العميل والخادم باستخدام بروتوكول XMPP.

كيف يعمل بروتوكول XMPP؟

الاتصال بالخادم

عندما يقوم العميل بالاتصال بالخادم، يتم تبادل معلومات التوثيق بين العميل والخادم. يتم تشفير هذه المعلومات باستخدام تقنيات التشفير القوية لضمان أمان البيانات. بمجرد التحقق من صحة التفاصيل، يقوم الخادم بإنشاء جلسة للعميل.

تبادل الرسائل

بعد إنشاء الجلسة، يمكن للعميل بدء إرسال الرسائل إلى الخادم. تتضمن هذه الرسائل معلومات مثل نص الرسالة والمستلم. يقوم الخادم بتوجيه الرسائل إلى العملاء المستهدفين.

الحضور والحالة

يمكن للعميل أيضًا تحديث حالته ومعلومات الحضور باستخدام بروتوكول XMPP. يمكن أن تتضمن هذه المعلومات الحالة مثل "متصل" أو "غير متصل" أو "غير مرئي". يتم تحديث هذه المعلومات في الخادم ويتم توزيعها إلى العملاء الآخرين.

الاشتراكات والمجموعات

يمكن للعملاء الاشتراك في تحديثات من العملاء الآخرين أو الانضمام إلى مجموعات باستخدام بروتوكول XMPP. يتم تحديث هذه المعلومات في الخادم ويتم توزيعها إلى العملاء الآخرين.

القدرات والميزات

يمكن للعملاء أيضًا الإعلان عن قدراتهم وميزاتهم باستخدام بروتوكول XMPP. يمكن أن تتضمن هذه المعلومات القدرات مثل القدرة على دعم الرسائل النصية أو الدردشة الصوتية أو الفيديو. يتم تحديث هذه المعلومات في الخادم ويتم توزيعها إلى العملاء الآخرين.

في الختام، يعمل بروتوكول XMPP عن طريق تبادل الرسائل والبيانات الأخرى بين العميل والخادم. يتم تشفير هذه البيانات وتوثيقها لضمان الأمان، ويتم توزيعها إلى العملاء الآخرين عبر الخادم.

`

 

`

مميزات XMPP

تتميز بروتوكول XMPP بمجموعة من الميزات التي تجعله خيارًا مثاليًا للتواصل في الوقت الحقيقي. فيما يلي بعض الميزات الرئيسية لبروتوكول XMPP:

الرسائل الفورية

تعتبر الرسائل الفورية أحد أبرز ميزات بروتوكول XMPP. يمكن للمستخدمين إرسال واستلام الرسائل في الوقت الحقيقي، مما يجعله خيارًا مثاليًا للتطبيقات التي تتطلب تواصلًا سريعًا وفعالًا.

الوجود

توفر ميزة الوجود في بروتوكول XMPP القدرة على رؤية ما إذا كان المستخدمين الآخرين متصلين أو غير متصلين. يمكن للمستخدمين أيضًا تحديد حالتهم، مثل "متاح" أو "مشغول"، مما يوفر مزيدًا من السياق للتواصل.

الروابط الغنية

يدعم بروتوكول XMPP الروابط الغنية، مما يتيح للمستخدمين إرسال الصور والفيديو والملفات الأخرى. هذا يجعله خيارًا مثاليًا للتطبيقات التي تتطلب تبادل المحتوى الغني.

الأمان

يوفر بروتوكول XMPP مستويات عالية من الأمان. يتم تشفير جميع الرسائل والبيانات الأخرى التي تتم مشاركتها عبر البروتوكول، مما يحميها من الوصول غير المصرح به.

القدرة على التوسع

يتميز بروتوكول XMPP بقدرته على التوسع لدعم مجموعة واسعة من التطبيقات والخدمات. يمكن للمطورين إضافة ميزات ووظائف جديدة بسهولة، مما يجعله خيارًا مرنًا ومتكيفًا.

الاتصالات الجماعية

يدعم بروتوكول XMPP الاتصالات الجماعية، مما يتيح للمستخدمين إرسال الرسائل إلى مجموعات من الأشخاص في الوقت نفسه. هذا يجعله خيارًا مثاليًا للتطبيقات التي تتطلب التواصل الجماعي، مثل الدردشة الجماعية أو الاجتماعات الافتراضية.

التوافق

يتوافق بروتوكول XMPP مع مجموعة واسعة من الأنظمة والأجهزة، مما يتيح للمستخدمين الوصول إلى الخدمات من أي مكان وفي أي وقت.

في النهاية، تجعل هذه الميزات بروتوكول XMPP خيارًا قويًا ومرنًا للتواصل في الوقت الحقيقي. سواء كنت تبحث عن حل للرسائل الفورية، أو تحتاج إلى دعم الاتصالات الجماعية أو الروابط الغنية، يمكن أن يكون بروتوكول XMPP الحل المثالي لك.

مثال على بروتوكول XMPP

في هذا التوجيه، سنتعاون في استخدام أداة غير تقليدية لبناء بوابة للتفاعل والتواصل مع وظائف مميزة، تدور حول لغات البرمجة Python، SleekXMPP، و XMPP.

أداة XMPP هي من مشروعاتنا المتعددة حول الأدوات العملية والمفيدة. سوف نستعين بأداة SleekXMPP هذه المرة، فهي تتفاعل جيداً مع لغة البرمجة Python.

خطوات الجمع بين SleekXMPP و Python

ستتضمن أول خطوة التركيز على طريقة الجمع بين SleekXMPP و بيئة البرمجة Python التي نعمل بها. لعمل ذلك، سنستعين بإدارة حزم Python من خلال pip:


pip تثبيت sleekxmpp

تأليف واجهة التواصل بين SleekXMPP و XMPP

المرحلة الثانية ستتعلق بتكوين واجهة للتواصل بين SleekXMPP وخادم XMPP. هذا يمكن التحقق منه عبر استخدام هيئة وربطها بالخادم بمساعدة الفئة ClientXMPP:

من sleekxmpp استيراد ClientXMPP

class XMPPTalkBot(ClientXMPP):
    def __init__(self, mjid, passkey):
        ClientXMPP.__init__(self, mjid, passkey)

تأسيس التفاعل بين الرسائل

إذا كنا قد أكدنا الربط، سنبدأ في التواصل الدقيق مع الشبكة. سنحاول زيادة قدرات السيطرة عبر تنشيط أحداث معينة للرسائل والوجودات:


من sleekxmpp استيراد ClientXMPP

class XMPPTalkBot(ClientXMPP):
    def __init__(self, mjid, passkey):
        ClientXMPP.__init__(self, mjid, passkey)

        self.add_event_handler("engage_session", self.begin_session)
        self.add_event_handler("msg", self.ctrl_message)

    def begin_session(self, event):
        self.send_presence()
        self.get_roster()

    def ctrl_message(self, msg):
        if msg['type'] in ('chat', 'normal'):
            msg.reply("Echo: %s" % msg['body']).send()

الرسائل المستلمة تتم إرجاعها للمرسل بإضافة "Echo:" قبل الرسالة.

تشغيل التطبيق

بعد الانتهاء من الخطوات السابقة، يمكننا البدء في تفعيل التطبيق لنختبر أداءه في العالم الحقيقي. سنتمكن من تنفيذ ذلك عن طريق الحصول على هيئة من نوع XMPPTalkBot ثم تنفيذ الأوامر connect و process:


إذا كان __name__ == '__main__':
    xmpp = XMPPTalkBot('User_ID@Server', 'Password')
    xmpp.connect()
    xmpp.process(block=True)

هذه العملية ستستمر حتى يتم التوقف اليدوي. القيم العائدة للأمر process يمكن أن تعدل بسهولة للحصول على نتائج مختلفة.

هذا التطبيق المبتكر يهدف إلى تعميق فهمك لبروتوكول XMPP بممارسة الدردشة الفعلية. إضافة ميزات متقدمة أخرى مثل الدردشة الجماعية والرسائل الخاصة ستمكن التطبيق من تقديم قيمة مضافة.

فوائد XMPP

تتمتع بروتوكول XMPP بالعديد من المزايا التي تجعله خيارًا مثاليًا للتواصل في الوقت الحقيقي. إليك بعض الفوائد الرئيسية لاستخدام بروتوكول XMPP:

1. القدرة على التوسع:

يتميز بروتوكول XMPP بقابليته للتوسع، مما يعني أنه يمكن تكييفه لتلبية احتياجات الأعمال المتغيرة. يمكن للمطورين إضافة وظائف جديدة إلى بروتوكول XMPP دون الحاجة إلى إعادة تصميم النظام بأكمله.

2. الأمان:

يوفر بروتوكول XMPP ميزات أمان قوية، بما في ذلك التشفير والمصادقة، مما يضمن أن البيانات تبقى آمنة أثناء النقل. كما يمكن للمستخدمين تحديد مستوى الخصوصية الذي يرغبون فيه، مما يعني أنهم يمكنهم التحكم في من يمكنهم الوصول إلى معلوماتهم.

3. القدرة على الاتصال بين الأنظمة:

يتيح بروتوكول XMPP للمستخدمين الاتصال بين الأنظمة المختلفة. هذا يعني أن المستخدمين يمكنهم الاتصال مع الأشخاص الذين يستخدمون نظامًا مختلفًا، مما يجعل الاتصال أكثر سلاسة وكفاءة.

4. القدرة على الاتصال في الوقت الحقيقي:

يتيح بروتوكول XMPP للمستخدمين الاتصال في الوقت الحقيقي، مما يعني أن الرسائل يمكن أن ترسل وتستقبل على الفور. هذا يجعل الاتصال أكثر فعالية ويمكن أن يزيد من الإنتاجية.

5. القدرة على الاتصال متعدد النقاط:

يتيح بروتوكول XMPP للمستخدمين الاتصال مع العديد من الأشخاص في نفس الوقت. هذا يعني أن المستخدمين يمكنهم إرسال رسائل إلى مجموعات من الأشخاص، مما يجعل الاتصال أكثر فعالية.

في النهاية، يعد بروتوكول XMPP خيارًا مثاليًا للتواصل في الوقت الحقيقي بسبب قابليته للتوسع، وميزات الأمان القوية، والقدرة على الاتصال بين الأنظمة، والقدرة على الاتصال في الوقت الحقيقي، والقدرة على الاتصال متعدد النقاط.

`

 

`

FAQ

في هذا القسم، سنجيب على بعض الأسئلة الشائعة حول بروتوكول XMPP.

ما هو الفرق بين XMPP و HTTP؟

XMPP و HTTP هما بروتوكولان للاتصالات على الإنترنت، لكنهما يختلفان بشكل كبير في الطريقة التي يتعاملان بها مع الرسائل. HTTP هو بروتوكول غير مستمر، مما يعني أنه يتم إرسال الطلب واستلام الرد، ثم يتم إغلاق الاتصال. من ناحية أخرى، XMPP هو بروتوكول مستمر، مما يعني أن الاتصال يبقى مفتوحًا ويمكن للرسائل أن تتدفق في كلا الاتجاهين بشكل مستمر.

XMPP HTTP
بروتوكول مستمر بروتوكول غير مستمر
يمكن للرسائل أن تتدفق في كلا الاتجاهين بشكل مستمر يتم إرسال الطلب واستلام الرد، ثم يتم إغلاق الاتصال

هل يمكن استخدام XMPP للدردشة الجماعية؟

نعم، يمكن استخدام XMPP للدردشة الجماعية. يتم ذلك من خلال ما يسمى بـ "غرف الدردشة"، حيث يمكن للمستخدمين الانضمام إلى غرفة دردشة والتواصل مع بعضهم البعض في الوقت الحقيقي.

هل XMPP آمن؟

XMPP يدعم التشفير والمصادقة، مما يجعله خيارًا آمنًا للاتصالات عبر الإنترنت. ومع ذلك، مثل أي بروتوكول آخر، فإن مستوى الأمان يعتمد على كيفية تنفيذه واستخدامه.

هل يمكن استخدام XMPP في الأجهزة المحمولة؟

نعم، يمكن استخدام XMPP في الأجهزة المحمولة. هناك العديد من التطبيقات المحمولة التي تدعم XMPP، مما يتيح للمستخدمين الاتصال والتواصل من خلال أجهزتهم المحمولة.

ما هي بعض الاستخدامات الشائعة لـ XMPP؟

XMPP يستخدم في مجموعة متنوعة من التطبيقات، بما في ذلك الدردشة الفورية، الرسائل الجماعية، الرسائل الصوتية والفيديو، والألعاب المتعددة اللاعبين. كما يمكن استخدامه لإرسال الإشعارات والتحديثات في الوقت الحقيقي.

ما هو الفرق بين XMPP و MQTT؟

XMPP و MQTT هما بروتوكولان للرسائل، لكنهما يختلفان في الطريقة التي يتعاملان بها مع الرسائل. XMPP يستخدم نموذج الدفع، حيث يتم دفع الرسائل إلى المستلمين. من ناحية أخرى، MQTT يستخدم نموذج النشر/الاشتراك، حيث يتم نشر الرسائل ويمكن للمستخدمين الاشتراك لتلقيها.

XMPP MQTT
نموذج الدفع نموذج النشر/الاشتراك
يتم دفع الرسائل إلى المستلمين يتم نشر الرسائل ويمكن للمستخدمين الاشتراك لتلقيها

مراجع

  1. "مؤسسة معايیر XMPP"، متوفر عبر الإنترنت على: https://xmpp.org/about/standards-process.html. تم الاطلاع عليه في 20 أكتوبر 2021.

  2. من الكتب المرجعية التي تعتبر مرجعًا هامًا في هذا الموضوع، كتاب "XMPP: الدليل النهائي"، من تأليف بيتر سانت-أندري، وكيفن سميث، وريمكو ترونكون، وصدر عن دار O'Reilly Media في عام 2009 برقم الطبعة ISBN 978-0-596-52126-4.

  3. بالإضافة إلى ذلك، يوجد وثيقتين RFC رئيسيتين تتعلقان ببروتوكول XMPP وهما:

    • RFC 6120: الرسائل الموسعة وبروتوكول الوجود XMPP: النواة. يمكن الاطلاع عليه عبر الإنترنت على: https://tools.ietf.org/html/rfc6120.

    • RFC 6121: الرسائل الموسعة وبروتوكول الوجود XMPP: الرسائل الفورية والوجود. يمكن الاطلاع عليه عبر الإنترنت على:
      https://tools.ietf.org/html/rfc6121.

  4. يستفيد العديد من الباحثين والمطورين من الكتاب المرجعي "XMPP: الدليل النهائي"، ولذا فإنه يستحق الإشادة مرارا وتكرارا بسبب محتواه الغني والمفيد الذي يغطي جميع جوانب البروتوكول XMPP.

  5. وأخيرا وليس آخرا، يجب التذكير بالدور الهام الذي يلعبه الكتاب المرجعي "XMPP: الدليل النهائي"، في التعريف بالبروتوكول XMPP، وذلك بفضل المعلومات والبيانات المفصلة والدقيقة التي يقدمها.

See Wallarm in action
“Wallarm really protects our service and provides good visibility and user-friendly control.”