Network Protocols

ما هو تعريف البروتوكول - Protocol؟ وما هو الفرق بين بروتوكول التحكم في النقل TCP/IP وبين بروتوكول بيانات المستخدم UDP؟ وكيف يتم تصنيف البروتوكولات؟ والفرق بين حزمة الخدمات موجهة الإتصال وحزمة الخدمات عديمة الإتصال؟ وأمثلة على بروتوكول TCP و بروتوكول UDP.

ما هو المقصود بكلمة بروتوكول؟

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

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

أولا: نموذج الخدمات (موجهة الإتصال) Connection Oriented Service وفي هذا النموذج لابد من إنشاء إتصال بين أي طرفين قبل البدء في إرسال البيانات (المعلومات) Packets، أي بصورة أبسط أن يرسل الجهاز الأول رسالة للجهاز الثاني تطلب منه بدء الإتصال، وينتظر رد الجهاز الثاني، فإذا أرسل الجهاز الثاني ردا على الجهاز الأول يكون قد حدث الإتصال، ويبدأ الجهاز الأول بإرسال البيانات للجهاز الثاني، ويكرر تلك العملية مع كل حزمة من البيانات، ولذلك يعتبر هذا النموذج من الخدمات الموثقة التي تضمن وصول المحتوى كاملا. ومن أمثلة هذا النموذج بروتوكول التحكم بالنقل TCP - Transmission Control Protocol.

ثانيا: نموذج الخدمات (عديمة الإتصل) Connectionless Service وفي هذا النموذج يتم إرسال البيانات مباشرة من الطرف المرسل إلى الطرف المرسل إليه، دون التأكد من وجود إتصال كما في النموذج السابق، ويعتبر هذا النموذج أسرع في نقل البيانات مقارنة بالنموذج الأول، ومن أمثلة هذا النموذج بروتوكول بيانات المستخدم UDP - User Datagram Protocol.

وهنا يجب توضيح أن كلا من بروتوكول التحكم بالنقل TCP و بروتوكول بيانات المستخدم UDP يتم إستخدامهم في نقل البيانات من خلال الإنترنت، فكلاهما يستخدم بروتوكول الإنترنت IP (Internet Protocol) لإرسال البيانات، ولذلك دائما يرتبط إسم بروتوكول التحكم بالنقل ببروتوكول الإنترنت ليصبح "بروتوكول التحكم بالنقل من خلال الإنترنت" TCP/IP ومن المفترض أيضا أن يتم دمج إسم بروتوكول بيانات المستخدم مع بروتوكول الإنترنت ليكتب UDP/IP ولكن ليس من الشائع كتابته بهذه الطريقة.

بروتوكول التحكم في النقل TCP

كما أشرنا سابقا فهو إختصار لكلمة Transmission Control Protocol، وهو البروتوكول الأكثر إستخداما في الإنترنت، حيث أنه مسئول عن نقل البيانات من الطبقة الأعلى في نموذج الإتصال المعياري OSI Model إلى طبقة بروتوكول الإنترنت، وبالتالي يتم إستخدامه من كل البروتوكولات التي تعمل في الطبقة الأعلى، فعلى سبيل المثال يتم إستخدامه لنقل البيانات من بروتوكولات HTTP, FTP, HTTPS, SMTP, NTP, DHCP إلى بروتوكول الإنترنت IP.

فمثلا عندما تفتح المتصفح وتكتب فيه عنوان موقعنا الإلكتروني، يقوم المتصفح بإستخدام بروتوكول الـ HTTP ومن خلال بروتوكول الـ TCP يقوم بإرسال طلب لخادم الويب يطلب فيه صفحة من موقعنا، فيقوم الخادم بالرد من خلال إرسال مجموعة من البيانات Packets تحتوي جميعها على محتويات صفحة الويب، وتكون كل وحدة من البيانات مرقمة حتى يتمكن المتصفح الخاص بك من تجميع تلك الوحدات سويا ليكون صفحة الويب التي تشاهدها الآن، ثم يقوم المتصفح بإرسال وحدة بيانات للخادم تفيد بأن صفحة الويب قد تم تحميلها بالكامل وبالتالي يتم إنهاء الإتصال، وفي حالة فقدان أو تلف أي وحدة من البيانات، يقوم المتصفح بطلب تلك الوحدة مرة أخرى من الخادم، وهكذا يتم الإرسال والإستقبال حتى يتم تحميل الصفحة كاملة. ويتم ذلك من خلال إستخدام بروتوكول التحكم في النقل TCP والذي يضمن وصول جميع وحدات البيانات وإعادة إرسالها في حالة تلف أي وحدة خلال عملية نقل البيانات. وفي حالة عدم التمكن من الإتصال يخبرك المتصفح بإظهار رسالة خطأ في الإتصال.

بروتوكول بيانات المستخدم UDP

وكما أشرنا سابقا فهو إختصار لكلمة User Datagram Protocol، وكلمة datagram في هذا المصطلح تعني وحدة من البيانات Packet. وهو أيضا بروتوكول مسئول عن نقل البيانات من الطبقة الأعلى في نموذج الإتصال المعياري OSI Model إلى طبقة بروتوكول الإنترنت، تماما كما في بروتوكول التحكم في النقلTCP، ولكنه يختلف في أن بروتوكول بيانات المستخدم UDP لا يقوم بالتأكد من وجود إتصال، أو بمعنى آخر عندما يقوم المستخدم (المرسل) بطلب خدمة ما، يتم إرسالها له بدون التأكد من وصولها كاملة أو أن الإتصال مازال قائما، وبذلك يعتبر أسرع في نقل البيانات من نظام التحكم بالنقل حيث أنه يختصر وقتا كثيرا بعدم التأكد من البيانات.

ويستخدم هذا البروتوكول كثيرا في الألعاب التي تستخدم الإنترنت Online Games، وبرامج المحادثة بالصوت والصورة مثل برنامج Skype، ويستخدم أيضا في خدمات البث المباشر Live Broadcasting - Live Streaming، حيث يمكن أثناء مشاهدة أي بث مباشر من خلال أي موقع أن يتم فقد جزء من البيانات Frame ويمكن أن لا تلاحظ فقد هذا الجزء، وبالتالي يتم إستخدام هذا البروتوكول عندما تكون سرعة نقل البيانات أهم من دقة البيانات وسلامتها.