User Datagram Protocol UDP
بروتوكول بيانات المستخدم UDP
سنتعرف في هذا الدرس على بروتوكول بيانات المستخدم UDP وخصائصه التي تميزه، واستخداماته، وكيفية عمله، والفرق بينه وبين بروتوكول النقل الآخر TCP، وأخيرًا سنتعرف على كيفية استغلاله في هجمات رفض الخدمة الموزعة Distributed Denial of Service [DDoS].
التاريخ
الدروس
المستوى
اللغة
المشاهدات
المواضيع
الشروحات chevron_left User Datagram Protocol UDP chevron_left Web Technology
User Datagram Protocol UDP
بروتوكول بيانات المستخدم UDP
</>
User Datagram Protocol
بروتوكول بيانات المستخدم
بروتوكول بيانات المستخدم UDP: هو أحد البروتوكولات الأساسية في مجموعة بروتوكولات الإنترنت. يعمل بروتوكول UDP في طبقة النقل، ويتميز بسرعة نقل البيانات دون الحاجة إلى إنشاء اتصال مسبق بين الأجهزة؛ مما يجعله خيارًا مثاليًا للتطبيقات التي تتطلب سرعة نقل عالية وتأخيرًا منخفضًا، مثل بث الفيديو المباشر والألعاب عبر الإنترنت.
بروتوكول UDP لا يضمن ترتيب أو تسليم البيانات بالكامل، وهذا يعني أنه إذا فقدت بعض الحزم datagrams أثناء النقل بسبب الازدحام في الشبكة، فإن UDP لن يحاول إعادة إرسالها. بهذا الشكل، يوفر UDP نقلًا سريعًا وفعالًا للبيانات، لكنه يترك مسؤولية التحقق من البيانات وإعادة الإرسال عند الضرورة للتطبيق نفسه. لذلك، يعتبر UDP مناسبًا للتطبيقات التي تتحمل فقدان بسيط للبيانات أو التي لا تحتاج إلى تحقق شامل، مثل البث المباشر للفيديو والصوت وعمليات البحث في نظام اسم المجال DNS، حيث يكون فقدان بعض الحزم أفضل من التأخير الناتج عن إعادة الإرسال.
عند استخدام بروتوكول UDP، لا يقوم المستقبل بإنشاء أي إقرار بالحزمة التي أرسلها، وبالتالي فإن المرسل لا ينتظر أي إقرار بالحزمة التي أرسلها؛ مما يجعل البروتوكول أقل دقة في تتبع الحزم لكنه يساهم في تسريع عملية النقل.
Datagrams
- رأس البيانات Header: هو الذي يحتوي على معلومات التحكم والتوجيه الأساسية، ويتكون من 4 حقول كل منها بطول 2 بايت أي 16 بت؛ وهي: منفذ المصدر source port، منفذ الوجهة destination port، طول الحزمة length، والمجموع الاختباري checksum.
- البيانات Data: وهي البيانات الفعلية المراد نقلها بين الأجهزة.
</>
Features of UDP
خصائص UDP
- لا يدعم المصافحة No handshaking: لا يقوم بروتوكول UDP بإقامة اتصال بين المرسل والمستقبل قبل بدء نقل البيانات؛ مما يجعله مناسبًا للتطبيقات التي تتطلب نقل البيانات بسرعة وبدون تأخير، مثل بث الفيديو أو الألعاب عبر الانترنت، ولكنه أيضًا يعني أن البيانات قد تُفقد أو تصل بترتيب غير صحيح.
- لا يتضمن آلية تأكيد إرسال واستلام الحزم No acknowledgment mechanism: يعمل بروتوكول UDP دون تأكيد إرسال الحزم أو استلامها حيث لا يحصل المرسل على أي إشعار من المستقبل عما إذا كانت الحزم قد وصلت بنجاح أم لا؛ مما يجعله مناسبًا للتطبيقات التي لا تتطلب تبادل التأكيد مثل VoIP.
- لا يقوم بتصحيح الأخطاء No error recovery: لا يحتوي UDP على آليات لإعادة إرسال الحزم المفقودة، أو التعامل مع ترتيبها؛ مما يعني أن التطبيقات يجب أن تكون قادرة على التعامل مع هذه الحالات أو تحملها.
- البساطة Simplicity: يعتبر UDP هو أبسط بروتوكول اتصال يعمل في طبقة النقل حيث يقوم بتوصيل حزم البيانات بدون تعقيدات مقارنة ببعض البروتوكولات الأخرى.
- الحمل القليل Low overhead: يتميز UDP بصغر حجم رأس الحزمة التي تبلغ 8 بايت فقط؛ مما يجعله مناسبًا لنقل البيانات الصغيرة، مثل استعلامات DNS.
- عديم الحالة أو غير معتمد على الحالة Stateless: لا يحتفظ UDP بأي معلومات عن جلسات الاتصال السابقة أو حالة الاتصال بين المرسل والمستقبل بعد انتهاء عملية إرسال الحزمة أي أن كل حزمة بيانات تعتبر مستقلة بذاتها، ويتم معاملتها بشكل منفصل، ولا يعتمد إرسالها أو استقبالها على جلسات الاتصال السابقة.
- السرعة Speed: يتميز UDP بنقل البيانات بسرعة عالية لأنه لا يشمل إجراءات إقامة الاتصال أو التأكيد لإرسال البيانات؛ لذلك فهو مناسب للتطبيقات التي تتطلب زمن فعلي مثل الألعاب عبر الانترنت والبث المباشر.
- لا يحتوي على آلية للتحكم في الازدحام No congestion control: لا يوفر UDP آليات للتحكم في ازدحام الشبكة؛ مما يجعله يرسل البيانات دون مراعاة لحالة الشبكة. وهذا يمكن أن يؤدي إلى فقدان البيانات في الشبكات المزدحمة أو تأخرها.
- دعم البث العام والموجه Broadcast and multicast support: يدعم UDP إرسال الحزم عبر البث العام لجميع الأجهزة في الشبكة المحلية وكذلك البث الجماعي لمجموعة محددة؛ مما يجعله مناسبًا لأنواع أكثر من التطبيقات، مثل تطبيقات مؤتمرات الفيديو التي تعتمد على البث الجماعي.
Broadcast & Multicast
</>
?How does the UDP work
كيف يعمل UDP؟
Checksum
المجموع الاختباري Checksum: هو قيمة محسوبة تستخدم للتحقق من سلامة البيانات أثناء عملية النقل حيث يستخدم للتأكد من أن البيانات لم تتعرض لأي تلف أو تغيير أثناء مرورها من المصدر إلى الوجهة.
يتم حساب المجموع الاختباري في الجهاز المرسل بناءً على محتوى البيانات نفسها، ويتم إرساله مع البيانات، ثم يتم حساب المجموع الاختباري مرة أخرى للمحتوى المُستَقبَل في جهاز المستقبل ليتم مقارنته مع المجموع الاختباري المرفق. إذا كانت القيمتان متطابقتين، فهذا يعني أن البيانات وصلت كما هي دون تغيير، وإن لم تكن متطابقتين فهذا يشير إلى وجود خطأ أو تلف في البيانات أثناء النقل.
يجب ملاحظة أن المجموع الاختباري يضمن سلامة البيانات عند النقل، لكنه لا يضمن وصولها أو وصولها بنفس الترتيب.
</>
TCP vs. UDP
الفرق بين TCP و UDP
- نوع الاتصال Type of Connection: بروتوكول UDP يعد من النوع الـ connectionless أي أنه لا يقوم بإقامة اتصال موثوق بين المرسل والمستقبل قبل بدء نقل البيانات، بينما بروتوكول TCP فهو من النوع الـ connection-oriented أي أنه يقوم بإقامة اتصال بين المرسل والمستقبل لنقل البيانات.
- الموثوقية Reliability: يعتمد بروتوكول التحكم في النقل TCP على آليات تضمن وصول البيانات إلى الجهة المستقبلة [مثل آلية الإقرار]، بينما يُعتبر بروتوكول UDP أقل موثوقية؛ لأنه لا يحتوي على تلك الآليات التي تضمن تسليم البيانات.
- التحقق من الأخطاء Error checking: يحتوي بروتوكول TCP على آليات للتحقق من الأخطاء، تشمل التحكم في تدفق البيانات والتأكيد على استلامها، بينما يكتفي بروتوكول UDP بفحص الأخطاء عن طريق المجموع الاختباري ولكنه يتجاهل الحزم التي لم تصل ولا يحاول معالجة الأخطاء عند وقوعها.
- الإقرار Acknowledgment: يحتوي بروتوكول TCP على مقاطع الإقرار acknowledgment segments التي يرسلها المستقبل للمرسل؛ لإعلام المرسل بأن البيانات قد تم استلامها بنجاح، بينما لا يتضمن بروتوكول UDP هذه المقاطع.
- الترتيب Ordering: يضمن بروتوكول TCP أن البيانات يتم استلامها بالترتيب الصحيح الذي أرسلت به بفضل استخدام أرقام التسلسل sequence numbers، بينما يمكن لبروتوكول UDP إرسال البيانات بتسلسل مختلف؛ لأنه لا يستخدم أي آليات لترتيب حزم البيانات أثناء نقلها.
- السرعة Speed: يتميز بروتوكول UDP بسرعة أعلى في نقل البيانات مقارنة ببروتوكول TCP، وذلك بسبب طبيعة عمل UDP التي تتجنب بعض الخطوات مثل إقامة اتصال بين المرسل والمستقبل وتجنب آليات التحقق من الأخطاء وتأكيد استلام البيانات. في المقابل، يتطلب بروتوكول TCP إجراء خطوات إضافية لضمان الترتيب الصحيح والموثوقية في نقل البيانات؛ مما يستهلك وقتًا أكبر.
- إعادة الإرسال Retransmission: في حال فقدان حزمة بيانات خلال النقل، يقوم بروتوكول TCP بإعادة إرسالها بشكل تلقائي لضمان وصول البيانات كاملة إلى المستقبل، وهو ما لا يتوافر في بروتوكول UDP.
- البث Broadcasting: يدعم بروتوكول TCP نمط البث الأحادي Unicast حيث يتم إنشاء اتصال مباشر بين مرسل واحد ومستقبل واحد، بينما لا يدعم البث broadcasting ولا البث المتعدد multicasting؛ لأنه مصمم للاتصالات الموثوقة بين نقطتين محددتين. على عكس بروتوكول UDP الذي يدعم جميع أنواع البث؛ لأنه لا يتطلب إنشاء اتصال ثابت بين المرسل والمستقبل.
- تدفق البيانات Flow of Data: يوفر بروتوكول TCP تدفق البيانات في كلا الاتجاهين، أي أنه يمكن للجهاز [أ] أن يرسل بيانات إلى الجهاز [ب] ويستقبل بيانات منه في نفس الوقت. في المقابل، يُعتبر بروتوكول UDP ملائمًا أكثر لتدفق البيانات في اتجاه واحد، حيث يُركز على إرسال البيانات بسرعة من المرسل إلى المستقبل، وليس بالضرورة أن يحدث تبادل البيانات في كلا الاتجاهين في نفس الوقت.
- التحكم في التدفق Flow Control: يتبع بروتوكول TCP آلية التحكم في التدفق؛ لضمان عدم إرسال كمية كبيرة من الحزم في وقت واحد إلى المستقبل بشكل يفوق قدرته على المعالجة، بينما لا يتبنى بروتوكول UDP أي آليات للتحكم في التدفق حيث يرسل البيانات بأسرع ما يمكن دون النظر إلى قدرة المستقبل على معالجتها.
TCP Header Fields
الحقول التي تتكون منها رأس حزمة البيانات في بروتوكول TCP:
Window | Source Port | Destination Port | Flag [Control bit] | Sequence Number | Acknowledgment Number | Data Offset | Reserved | Checksum | Urgent Pointer | Options
UDP Header Fields
الحقول التي تتكون منها رأس حزمة البيانات في بروتوكول UDP:
Length | Source Port | Destination Port | Checksum
ملاحظات :
- يتم تقسيم البيانات قبل إرسالها عبر الشبكة في بروتوكول TCP إلى وحدات تسمى segments بينما يتم تقسيمها في بروتوكول UDP إلى وحدات تسمى datagrams.
- مقاطع الإقرار acknowledgment segments: هي أجزاء من البيانات يتم استخدامها في بروتوكول TCP لتأكيد استلام البيانات بشكل صحيح من قِبل الطرف المستلم.
- TCP or UDP: لكل بروتوكول استخداماته الخاصة، حيث يستخدم بروتوكول TCP في التطبيقات التي تتطلب قدرًا عاليًا من الموثوقية مثل نقل مقاطع الفيديو أو البيانات الهامة؛ لأنه يضمن تسليم البيانات كاملة وبالترتيب الصحيح، وفي حال فقدان أي حزمة بيانات أثناء النقل، يقوم بروتوكول TCP بإعادة إرسالها تلقائيًا. بينما يستخدم بروتوكول UDP في التطبيقات التي تهتم بالاستجابة السريعة أكثر من الموثوقية مثل البث المباشر للفيديو؛ لأن فقدان بعض الحزم قد يكون أقل ضررًا من التأخير الناتج عن إعادة الإرسال.
</>
?What is UDP used for
ما هي استخدامات UDP؟
- الصوت عبر بروتوكول الانترنت Voice over Internet Protocol [VoIP]: يستخدم بروتوكول UDP في تطبيقات المكالمات الصوتية عبر الإنترنت مثل Skype و WhatsApp لأنها من التطبيقات الحساسة للوقت حيث يضمن بروتوكول UDP نقل حزم الصوت بشكل سريع ودون انقطاع حيث أن فقدان حزم قليلة يكون أقل تأثيرًا على جودة الصوت من التأخير الذي قد يحدث في بروتوكولات مثل TCP وبالتالي فإن استخدام بروتوكول UDP يعد مثاليًا لهذا النوع من التطبيقات؛ لأن إجراء محادثة مستمرة مع خسارة بعض أجزاء الصوت غير الملحوظ أفضل من أن تكون المحادثة نقية بشكل كامل ولكن مشوشة بسبب التأخير.
- استعلامات نظام أسماء النطاقات DNS: يستخدم بروتوكول UDP في عمليات البحث الخاصة بنظام اسم المجال DNS حيث تكون الاستعلامات صغيرة عادةً وتتطلب استجابة سريعة. يساهم UDP في سرعة ترجمة أسماء النطاقات إلى عناوين IP بفضل طبيعة عمله التي لا تتطلب تأكيد استلام البيانات، مما يجعله مثاليًا لهذه المهمة. يجب ألا يتجاوز الوقت المستغرق منذ إدخال المستخدم عنوان URL في شريط المتصفح وحتى ظهور الموقع، والذي يتضمن إيجاد عنوان IP المرتبط باسم المجال، بضعة مللي ثوانٍ لضمان استمرار الاتصال دون انقطاع.
- الألعاب عبر الإنترنت Online Gaming: تحتاج الألعاب الإلكترونية عبر الانترنت إلى نقل بيانات سريع وتقليل التأخير لتحقيق تجربة لعب سلسة. بخلاف التأخر الذي يمكن أن يؤثر بشدة على أداء اللاعبين في الوقت الحقيقي، فإن التعايش مع انخفاض مؤقت في جودة الفيديو أو الصوت لثوانٍ قليلة يُعتبر أكثر قبولًا. يعد بروتوكول UDP هو البروتوكول المثالي لهذه الألعاب؛ لأنه يسمح بإرسال البيانات بسرعة مما يحسن من استجابة اللعبة ويقلل من زمن التأخر.
- البث المتعدد Multicasting: يستخدم بروتوكول UDP في تطبيقات البث المتعدد حيث تتطلب إرسال بيانات إلى مجموعة كبيرة من المستقبلين بشكل متزامن مثل بث الفيديوهات المباشرة أو المؤتمرات عبر الانترنت، حيث يتميز UDP بقدرته على إرسال حزم البيانات إلى عدة أجهزة في آن واحد دون الحاجة إلى إنشاء اتصال فردي مع كل جهاز مستلم؛ مما يجعله مثاليًا لهذا النوع من التطبيقات.
</>
?How is UDP used in DDoS attacks
كيف يتم استخدام UDP في هجمات DDoS؟
طبيعة بروتوكول UDP وسهولة استغلاله:
يعتبر بروتوكول UDP هدفًا مغريًا لبعض المهاجمين نظرًا لأنه لا يدعم المصافحة التي تضمن الاتصال المشروع؛ مما يسهل استخدامه في هجمات DDoS حيث يقوم المهاجمون بإغراق خادم مستهدف بعدد كبير من حزم UDP المزيفة في نفس الوقت؛ مما يؤدي إلى استهلاك موارد الخادم بشكل يفوق قدرته على التحمل، والهدف من ذلك هو تعطيل الخادم أو إيقافه عن العمل تمامًا. وهذا يختلف عن بروتوكولات النقل الأخرى مثل TCP التي تتطلب اتصالات مسبقة وانتظار الرد من الهدف؛ مما يجعل هجمات UDP أكثر سهولة للمهاجمين.
استراتيجيات التزييف وتجنب التعقب:
غالبًا ما يلجأ المهاجمون إلى تزييف عنوان IP المصدر IP Spoofing في حزم UDP التي يرسلها، ولا يستخدم عنوان الـ IP الخاص به، وذلك حتى لا يمكن تعقبه أو كشف هويته الأصلية. يؤدي ذلك إلى قيام الخادم المستهدف بإرسال حجم كبير من الردود إلى طرف ثالث بريء وغير مسؤول، مما يزيد من تعقيد عملية كشف هوية الجاني الأصلي.
قد يستخدم المهاجمون هذا الأسلوب لإرسال حزم UDP بعنوان مصدر IP الضحية ليبدو وكأنه قادم من الضحية، ثم يرسل تلك الحزم لبعض الخوادم لتقوم بإرسال الردود إلى الضحية، وهكذا لا تستطيع الضحية معرفة المهاجم الأصلي.
الأهداف الشائعة للهجمات:
تركز الهجمات بشكل كبير على الخدمات التي تعتمد على بروتوكول UDP، مثل خوادم DNS، الألعاب، وخدمات البث. هذه الخدمات تتميز باحتياجها إلى سرعة الاستجابة العالية وبالتالي اعتمادها الكبير على UDP؛ مما يجعلها أهدافًا شائعة وسهلة الاستغلال في هجمات DDoS.
Distributed Denial of Service
- رفض الخدمة الموزع Distributed Denial of Service [DDoS]: هي هجمات تهدف إلى جعل بعض الخدمات غير متاحة للمستخدمين العاديين عن طريق إغراق المستهدف بكمية ضخمة من الطلبات حتى لا يمكنه التعامل مع الطلبات المشروعة بسهولة؛ مما يجعل الخدمة بطيئة أو تتوقف تمامًا.
ويتم ذلك غالبًا عن طريق اختراق مجموعة كبيرة من أجهزة الكمبيوتر وربطها في شبكة تسمى الشبكة الروبوتية Botnet، ويتحكم المهاجم في تلك الشبكة عن بعد من خلال جهاز تحكم مركزي -وغالبًا ما يكون جهازًا مخترقًا أيضًا-، ثم يقوم باستخدام هذه الأجهزة للهجوم على الضحية.
- تتوفر بعض الأدوات مثل booters وstressers على الويب المظلم dark web لتقديم هجمات DDoS كخدمة DDoS-as-a-Service لأي شخص على استعداد للدفع.
- يساهم الخادم الوسيط proxy server في التخفيف من هجمات DDoS بطرق متعددة، مثل: تصفية الطلبات وحظر عناوين الـ IP التي تقوم بإرسال عدد كبير من الطلبات في فترة قصيرة، وإخفاء عناوين الـ IP للخوادم الفعلية حيث يعمل الخادم الوسيط كطبقة إضافية؛ مما يجعل من الصعب على المهاجم تتبع الخوادم الخلفية مباشرة واستهدافها.