شرح الموضوع
الطبقة الرابعة: طبقة النقل
بعد التعرف على مهام الطبقات الثلاث الأولى في نموذج OSI نتطرق في هذا الدرس لمهام الطبقة الرابعة حيث تقوم هذه الطبقة بتقسيم البيانات لقطع عند الإرسال وإعادة تجميعها عند الاستقبال إضافة لذلك تقوم هذه الشبكة بإدخال نوع عنونة جديد، وهو عنونة المنفذ Port addressing بالإضافة لمهام اضافية تساعد على تنسيق الاتصال بين طرفيه.
ملاحظة: يسمى تنسيق الرسالة في هذه الطبقة بقطعة (Segment).

تقسيم البيانات
تقوم طبقة النقل باستلام البيانات الجاهزة للإرسال من الطبقات العليا، وتقسيمها لقطع لتسهيل نقلها عبر الشبكة، وتقوم هذه الطبقة عند المستقبل بإعادة تجميع القطع لتجهيزها للعرض في المستقبل؛ لأن أجهزة الشبكة (المحولات و الموجهات) لديها قدرة استيعاب محدودة لحجم البيانات لذا يتوجب تقطيع البيانات ليكون بمقدور أجهزة الشبكة حملها من المرسل إلى المستقبل.
عنونة المنافذ
يستطيع المستخدم لجهاز الحاسوب أن يفتح أكثر من تطبيق شبكي على نفس الجهاز، وفي نفس الوقت، (بريد إلكتروني، تصفح الويب، تنزيل ملف).
جميع هذه التطبيقات تستقبل بياناتها على نفس عنوان الـ IP، ولكن كيف يتسنى لنظام الحاسوب فصل هذه البيانات وإرسالها للتطبيق المناسب؟

هذا يتطلب عنونة إضافية تدل على التطبيق، وهي عنونة المنفذ. (عنوان الـ IP يدل على الجهاز، أما عنوان المنفذ فيدل على التطبيق داخل الجهاز)، بفضل عنونة المنفذ يستطيع المستخدم تشغيل أكثر من تطبيق شبكي على نفس الجهاز وفي نفس الوقت. يتكون عنوان المنفذ من 16 بت بحيث يكون الرقم متسلسل من رقم 0 وحتى 65535. TCP: Transmition Control Protocol يقوم بمهام تقسيم البيانات وعنونة المنفذ كل من بروتوكولات:
بروتوكول TCP يضيف مهام إضافية لها علاقة بتنسيق الاتصال بين المرسل والمستقبل، منها: إعادة ترتيب قطع البيانات بنفس الترتيب التي أرسلت به.
كما تعلمنا في الدرس السابق فأن الموجه يقوم بتوجيه الرسالة بين المصدر والهدف اعتماداً على أقصر طريق بينهما، وعليه فقد تختلف الطريق من وقت لآخر اعتماداً على حالة الشبكة، مما قد يؤدي إلى انتقال قطع نفس الرسالة من طرق مختلفة؛ مما قد يسبب عدم وصول هذه القطع بنفس الترتيب التي صدرت به.

يقوم بروتوكول TCP بحل هذه المشكلة باستخدام نظام ترقيم للقطع بحيث يقوم المرسل بإعطاء كل قطعة رقم تسلسلي يتم استخدامه من قبل المستقبل لإعادة ترتيب القطع بالشكل السليم.

اتصال موثوق
يقوم بروتوكول الـ TCP على طرفي الاتصال بتتبع قطع البيانات بين المرسل والمستقبل عن طريق إرسال إشعار بين طرفي الاتصال حيث ينتظر المرسل رسالة إقرار (Ack) من المستقبل تؤكد وصول المجموعة من القطع التي تم ارسالها قبل إرسال مجموعة القطع التي تليها وفي حالة عدم إستلام الاقرار يقوم المرسل بإعادة إرسال نفس مجموعة القطع مرة اخرى.

إنشاء و إغلاق الاتصال بين طرفي الاتصال:
تقوم هذه الطبقة بإنشاء الاتصال بين طرفي الاتصال عند الحاجة لإرسال بيانات عن طريق مصافحة الأيدي بثلاثة اتجاهات three-way hand shake:
يقوم ببدء الاتصال أحد الطرفين، ويسمى في حالتنا العميل client، فيقوم بإرسال رسالة مزامنة (syn) يطلب فيها الإذن ببدء الاتصال. يقوم الطرف الثاني المتلقي لطلب الاتصال (ويسمى الخادم server) بإرسال رسالة فيها إقرار استقبال طلب الاتصال (Ack) وإعطاء الموافقة عليه (syn). يرد الطرف الأول (العميل client) بإقرار استلام الموافقة على الطلب (Ack)، ويتم إنشاء الاتصال، لاحظ الشكل (1)، ولإنهاء الاتصال يتم تبادل الرسائل التالية حسب الشكل (2).

متى يتم استخدام كل من TCP و UDP؟
يعد بروتوكول TCP بروتوكولاً موثوقاً، يشكل عبئاً على الشبكة، لذلك يتم استخدامه في التطبيقات التي لا تقبل أي نسبة خطأ خلال نقل البيانات حتى لو كان ذلك على حساب تأخر الرسالة، المهم ان تصل الرسالة دون تغيير، مثال على هذه التطبيقات: تصفح الويب، البريد الإلكتروني، التحويلات المالية عبر الشبكة. في المقابل بروتوكول UDP هو بروتوكول غير موثوق حيث من الممكن أن تضيع بعض قطع الرسالة في الطريق ولا يقوم البروتوكول بإعادة إرسالها، ولكن في المقابل عبء هذا البروتوكول أقل بكثير من بروتوكول TCP، وعليه تستخدمه التطبيقات التي تريد إيصال الرسالة دون تأخير مع تقبل نسبة معينة من الأخطاء مثال على هذه التطبيقات: الاتصال الهاتفي عبر الشبكة VOIP، بث الفيديو عبر الشبكة Video Streaming.
نشاط (1):
استخدام الامر netstat يمكنك استخدام الأمر netstat -n من موجه سطر الأوامر؛ لمعرفة عدد الاتصالات المفتوحة على جهازك بتفاصيلها (البروتوكول المستخدم TCP أو UDP) عناوين الـ IP والمنفذ Port المستخدمة.


نشاط (2):
استعراض الرسائل بين جهازك وخادم google أثناء تصفحك الموقع. تنزيل و تنصيب برنامج مراقبة الشبكة wireshark من موقع الويب التالي: https://www.wireshark.org/download.html



تشغيل البرنامج واختيار بطاقة الشبكة المراد مراقبة تدفق البيانات عليها.
اختيار الفلتر المناسب:
في حالتنا هذه نختار فلتر TCP only وذلك لتسهيل متابعة الرسائل مع خادم google.
- ثم نضغط على زر start.
- ننتقل إلى متصفح الإنترنت، ونفتح صفحة google.
- ننتقل إلى تطبيق wireshark، ثم نضغط على زر stop.
- نستعرض النتائج ونناقشها.


كرر هذا التمرين، ولكن بتصفحك مواقع أخرى غير google. ماذا يحدث لكل من عنوان الـ MAC والـ IP و port؟
دون النتائج في الجدول:
| الموقع | IP مصدر | IP هدف | MAC مصدر | MAC هدف | Port مصدر | Port هدف |
|---|---|---|---|---|---|---|
| www.google.com | ||||||
| www.yahoo.com | ||||||
| www.facebook.com | ||||||
| www.mohe.ps | ||||||
| www.alquds.edu |
ستجد أن كلاً من عناوين MAC و IP المصدر لا تتغير؛ لأننا نرسل الرسالة من نفس الجهاز. ستجد أن العنوان المنطقي IP الهدف يختلف باختلاف الموقع، فلكل موقع على الإنترنت عنوان مختلف. ولكن العنوان الفيزيائي الهدف سيكون نفسه مهما تغير الموقع الذي نتصفحه؛ لأن العنوان الفيزيائي كما تم شرحه في الدرس السابق- هو عنوان يدل على الخطوة التالية في طريقنا إلى الهدف، وهو في جميع حالاتنا. يكون هو عنوان MAC الموجه في مدرستنا؛ إذ إن جهاز الحاسوب يلجأ دائماً إليه كخطوة أولى في طريقه لتصفح أي موقع على الإنترنت. أما بخصوص عنوان المنفذ فعنوان المصدر يختلف عند فتح أية صفحة جديدة على مستعرض الانترنت؛ وذلك لتمييز هذه الصفحه برقم المنفذ هذا، وبالتالي عدم تداخل المعلومات المستقبلة مع الصفحات الأخرى حيث إن لكل صفحة رقم منفذ يميزها. اما عنوان المنفذ الهدف فقد يتشابه، أو يختلف اعتماداً على البروتوكول الذي يستخدمه خادم الموقع. مثال منفذ 80 يستخدم لتصفح الإنترنت غير الآمن، ولكن منفذ 443 يستخدم لتصفح الإنترنت الآمن.
أسئلة الدرس
- كم عدد الخانات الثنائية التي يتكون منها عنوان المنفذ؟
- ما الفائدة من وجود عنوان المنفذ؟
- كيف يقوم بروتوكول (TCP) الموجود على العميل (Client) من التأكد من وجود الطرف الآخر الخادم (Server) قبل إنشاء الاتصال معه؟
- ما الطريقة التي يستخدمها بروتوكول (TCP) لإعادة ترتيب قطع الرسالة عند المستقبل بنفس الترتيب التي صدرت به من الموصل؟
- كيف يختار مصمم تطبيق شبكي بين (TCP) و(UDP) لدعم اتصال تطبيقه على الشبكة؟