تحتاج مسائل الشبكات إلى أكثر من حفظ القوانين؛ فالخطأ في تحويل Byte إلى Bit أو الخلط بين Mb/s وMB/s قد يجعل الإجابة خاطئة بالكامل. في هذه التمارين ستتدرب على حساب زمن الإرسال، تحويل معدلات النقل، والانتقال بين Decimal وBinary وHexadecimal، ثم ربط هذه المهارات بعناوين IPv4 وSubnet Masks.
إذا كانت هذه المفاهيم جديدة عليك، فمن الأفضل أن تبدأ من أساسيات الشبكات من الصفر ثم تعود إلى التمارين وتحاول حل كل سؤال قبل قراءة الحل.
القواعد التي تحتاجها قبل حل التمارين
أهم قاعدة في مسائل زمن الإرسال هي:
Transmission Delay = Number of Bits / Link Rate
أي:
T = L / R
- T: زمن وضع البيانات على الرابط بالثواني.
- L: حجم البيانات بالـBits.
- R: معدل الرابط بالـBits per second.
هذا الحساب يعطي Transmission Delay أو Serialization Delay، وليس زمن الوصول الكامل بين جهازين. فالـLatency الفعلية قد تشمل أيضًا Propagation Delay وProcessing Delay وQueuing Delay. ويمكن فهم موقع معدل النقل والإشارة بصورة أعمق في شرح Physical Layer في نموذج OSI.
Bit وByte وMb/s وMB/s
| الرمز | المعنى |
|---|---|
| bit أو b | Bit واحدة |
| Byte أو B | 8 Bits |
| Mb/s | Megabits per second |
| Gb/s | Gigabits per second |
| MB | Megabytes |
1 Byte = 8 Bits، لذلك لا يجوز التعامل مع ملف حجمه 100 MB وكأنه 100 Mb.
في مسائل معدلات الشبكات نستخدم عادة البادئات العشرية؛ أي إن Mega تساوي 106 وGiga تساوي 109، وهو ما توضحه بادئات النظام الدولي للوحدات SI لدى BIPM. عندما يكون المقصود MiB أو GiB سنذكر ذلك صراحة لأن الحساب يختلف قليلًا.
تمرين 1: حساب Transmission Delay لحزمة
Packet حجمها 12,000 Bit تمر عبر رابط سرعته 100 Mb/s. ما زمن الإرسال؟
الحل
نحوّل سرعة الرابط إلى Bits per second:
100 Mb/s = 100,000,000 bit/s
ثم نطبق القانون:
T = 12000 / 100000000
T = 0.00012 s
وبالمللي ثانية:
0.00012 × 1000 = 0.12 ms
الإجابة: 0.12 ms.
تمرين 2: Frame بحجم 1500 Byte على رابط 1 Gb/s
نريد حساب الزمن النظري لإرسال 1500 Byte عبر رابط سرعته 1 Gb/s، مع اعتبار 1500 Byte فقط ودون إضافة أي Overhead آخر.
الحل
أولًا نحول Bytes إلى Bits:
1500 × 8 = 12000 bit
ثم:
T = 12000 / 1000000000
T = 0.000012 s
أي:
12 µs
الإجابة: 12 ميكروثانية.
انتبه إلى أن السؤال حدد 1500 Byte فقط. عند حساب ما ينتقل فعليًا على Ethernet قد تدخل عناصر أخرى في الحساب بحسب ما تقيسه تحديدًا. يمكنك مراجعة بنية Ethernet Frame وحقولها لفهم الفرق بين Payload والإطار وبقية المعلومات المرتبطة بالإرسال.
تمرين 3: كم يستغرق إرسال ملف حجمه 100 MB؟
ملف حجمه 100 MB يُرسل عبر رابط ثابت قدره 100 Mb/s. تجاهل Overhead وكل الاختناقات الأخرى، واستخدم في هذا التمرين:
1 MB = 1,000,000 Bytes
الحل
نحوّل حجم الملف من Bytes إلى Bits:
100 MB × 8 = 800 Mb
ثم:
800 Mb / 100 Mb/s = 8 s
الإجابة النظرية: 8 ثوانٍ.
هذه ليست بالضرورة مدة التنزيل التي ستشاهدها في الواقع، لأن السرعة الفعلية قد تتأثر بالبروتوكولات والازدحام والخادم وشبكة Wi-Fi ومعدل Throughput المحقق وعوامل أخرى.
تمرين 4: ماذا لو كان الحجم 100 MiB بدل 100 MB؟
لدينا الآن ملف حجمه 100 MiB ورابط بسرعة 100 Mb/s.
الحل
100 MiB = 100 × 1024 × 1024 Bytes
نحوّل إلى Bits:
100 × 1024 × 1024 × 8 = 838,860,800 bit
ثم:
838860800 / 100000000 = 8.388608 s
الإجابة: نحو 8.39 ثانية.
لذلك يجب قراءة وحدة حجم الملف بدقة قبل بدء الحساب. 100 MB و100 MiB ليستا القيمة نفسها.
تمرين 5: ملف 25 MB على اتصال 50 Mb/s
كم يستغرق إرسال ملف حجمه 25 MB على رابط 50 Mb/s في الظروف النظرية؟
الحل
25 MB × 8 = 200 Mb
ثم:
200 Mb / 50 Mb/s = 4 s
الإجابة: 4 ثوانٍ.
تمرين 6: ما السرعة المطلوبة لإرسال 600 MB خلال 30 ثانية؟
هذه المرة نعرف حجم البيانات والزمن المطلوب، ونريد إيجاد معدل النقل النظري الأدنى.
الحل
نحوّل الحجم إلى Megabits:
600 MB × 8 = 4800 Mb
ثم نقسم على الزمن:
4800 Mb / 30 s = 160 Mb/s
الإجابة النظرية: 160 Mb/s.
عمليًا ستحتاج عادة إلى Link Rate أعلى من ذلك إذا كنت تريد تحقيق 160 Mb/s من البيانات المفيدة بصورة مستمرة، لأن الاتصال الحقيقي لا يتكون من محتوى الملف وحده.
تمرين 7: Link Rate أم Throughput؟
بطاقة شبكة تعمل اسميًا بسرعة 1 Gb/s، لكن اختبارًا معينًا أظهر معدل نقل فعليًا قدره 720 Mb/s. أي الرقمين يمثل Link Rate وأيهما يمثل المعدل المحقق في الاختبار؟
الحل
- 1 Gb/s: السرعة الاسمية للرابط في هذا المثال.
- 720 Mb/s: معدل النقل المحقق أثناء الاختبار.
وإذا أردنا فقط مقارنة النتيجة بالسرعة الاسمية:
720 / 1000 × 100 = 72%
أي أن الاختبار حقق ما يعادل 72% من الرقم الاسمي.
لكن لا تسمِّ هذه النسبة تلقائيًا «كفاءة البروتوكول»، لأن الفرق قد ينتج عن عدة عوامل وليس Protocol Overhead وحده. كما أن كلمة Throughput تملك تعريفات أكثر تحديدًا في منهجيات القياس؛ فمثلًا يعرف RFC 1242 Throughput في سياق Benchmarking أجهزة الشبكات وفق شروط قياس محددة.
تمرين 8: هل رفع Bandwidth يلغي Latency؟
تم ترقية رابط من 100 Mb/s إلى 1 Gb/s. هل يعني ذلك أن زمن الوصول بين الطرفين سينخفض دائمًا بنسبة 90%؟
الحل
لا. زيادة Link Rate تقلل الزمن المطلوب لعمل Serialization للبيانات على الرابط، لكنها لا تجعل كل مكونات Latency أصغر بالنسبة نفسها.
يمكن أن يبقى التأخير متأثرًا بـ:
- Propagation Delay.
- Queuing Delay.
- Processing Delay.
- عدد المسارات والقفزات بين الطرفين.
- ازدحام أجزاء أخرى من الشبكة.
- الخادم أو التطبيق نفسه.
لذلك Bandwidth وLatency مفهومان مرتبطان بأداء الشبكة، لكنهما ليسا الشيء نفسه.
تمرين 9: تحويل Decimal إلى Binary
حوّل العدد 192 من Decimal إلى Binary.
الحل
نستخدم قيم الخانات الثمانية:
128 64 32 16 8 4 2 1
العدد 192 يساوي:
192 = 128 + 64
إذن:
192 = 11000000
الإجابة: 11000000.
تمرين 10: تحويل Binary إلى Decimal
حوّل العدد التالي إلى Decimal:
10101100
الحل
نضع كل Bit أمام قيمته:
128 64 32 16 8 4 2 1
1 0 1 0 1 1 0 0
نجمع الخانات التي تحتوي على 1:
128 + 32 + 8 + 4 = 172
الإجابة: 172.
تمرين 11: تحويل Hexadecimal إلى Decimal
ما قيمة FF بالنظام العشري؟
الحل
في Hexadecimal:
F = 15
ولأن العدد يتكون من خانتين:
FF = (15 × 16) + 15
FF = 240 + 15 = 255
الإجابة: 255.
تمرين 12: تحويل Hex إلى Binary
حوّل A7 إلى Binary.
الحل
كل خانة Hexadecimal تقابل أربع Bits:
A = 1010
7 = 0111
نجمعهما:
A7 = 10100111
الإجابة: 10100111.
ويمكن التأكد أيضًا من القيمة العشرية:
(10 × 16) + 7 = 167
تمرين 13: Binary وDecimal وHex في سؤال واحد
لدينا:
11111111
حوّله إلى Decimal ثم Hexadecimal.
الحل
كل الخانات الثمانية تساوي 1:
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
إذن القيمة العشرية هي:
255
و255 في Hexadecimal:
FF
إذن:
11111111 = 255 = FF
هذه العلاقة ستقابلها كثيرًا عند دراسة عناوين الشبكات والـSubnet Masks.
تمرين 14: تحويل عنوان IPv4 إلى Binary
حوّل عنوان IPv4 التالي إلى Binary:
192.168.10.25
الحل
يتكون عنوان IPv4 من أربع Octets، وكل Octet يحتوي على 8 Bits. ويحدد RFC 791 عناوين IPv4 بطول أربعة Octets، أي 32 Bit.
نحوّل كل جزء بصورة مستقلة:
192 = 11000000
168 = 10101000
10 = 00001010
25 = 00011001
إذن:
192.168.10.25
يصبح:
11000000.10101000.00001010.00011001
تمرين 15: ما Prefix الخاص بالـSubnet Mask؟
لدينا Subnet Mask:
255.255.255.192
حوّلها إلى Binary وحدد CIDR Prefix.
الحل
255 = 11111111
255 = 11111111
255 = 11111111
192 = 11000000
إذن القناع هو:
11111111.11111111.11111111.11000000
عدد Bits المتتالية التي تساوي 1 هو:
8 + 8 + 8 + 2 = 26
إذن:
255.255.255.192 = /26
الإجابة: /26.
هذا التمرين هو الحد الذي تبدأ عنده حسابات العنونة الفعلية. إذا أردت حساب Network Address وBroadcast وعدد Hosts والنطاقات، انتقل إلى شرح Subnetting وحساب Subnet Mask وCIDR بدل تكرار تلك الحسابات هنا.
تمرين 16: لماذا نحتاج Hexadecimal في الشبكات؟
حوّل القيمة Hexadecimal التالية إلى Binary وDecimal:
2F
الحل
نبدأ بالـBinary:
2 = 0010
F = 1111
إذن:
2F = 00101111
وللتحويل إلى Decimal:
(2 × 16) + 15 = 47
إذن:
2F = 00101111 = 47
Hexadecimal مفيد لأنه يمثل كل أربع Bits بخانة واحدة، ولذلك يصبح أكثر اختصارًا من كتابة سلاسل Binary طويلة. ومن التطبيقات الشبكية الواضحة لذلك IPv6؛ إذ تستخدم الصيغة النصية القياسية مجموعات من الأرقام السداسية العشرية كما يوضح RFC 4291 الخاص بعنونة IPv6.
تمرين 17: إرسال 1500 Byte عبر أربعة روابط
لدينا 1500 Byte يجب إرسالها عبر أربعة روابط متتالية، سرعة كل واحد منها 100 Mb/s. افترض للتبسيط أن كل رابط يجب أن يرسل كامل هذه البيانات وأننا نتجاهل Propagation وProcessing وQueuing وأي Overhead إضافي. ما مجموع أزمنة Serialization على الروابط الأربعة؟
الحل
أولًا:
1500 × 8 = 12000 bit
زمن الإرسال على رابط واحد:
12000 / 100000000 = 0.00012 s
أي:
0.12 ms
لأربعة روابط وفق افتراض السؤال:
0.12 × 4 = 0.48 ms
الإجابة: 0.48 ms من Serialization Delay فقط.
لا يصح اعتبار 0.48 ms زمن الوصول الكامل، لأن السؤال استبعد عمدًا بقية أنواع التأخير.
تمرين 18: هل ملف 1 GB يحتاج ثانية واحدة على 1 Gb/s؟
لديك ملف حجمه 1 GB ورابط بسرعة 1 Gb/s. استخدم الوحدات العشرية وتجاهل كل Overhead. هل يحتاج الملف ثانية واحدة فقط؟
الحل
لا. السبب هو أن GB تقيس Bytes بينما Gb/s تقيس Bits في الثانية.
1 GB = 8 Gb
إذن:
8 Gb / 1 Gb/s = 8 s
الإجابة النظرية: 8 ثوانٍ.
هذا من أكثر الأخطاء شيوعًا في مسائل الشبكات: رؤية الرقم 1 في الجانبين وتجاهل الفرق بين Byte وBit.
اختبر نفسك دون النظر إلى الحل
- كم يستغرق إرسال 10 MB على رابط 20 Mb/s في الظروف النظرية؟
- حوّل
11110000إلى Decimal وHexadecimal. - حوّل العدد 128 إلى Binary في 8 Bits.
- كم Bit توجد في 2500 Byte؟
- ما الزمن النظري لإرسال 20,000 Bit عبر رابط 10 Mb/s؟
- حوّل
C8من Hexadecimal إلى Decimal. - إذا كان Link Rate يساوي 500 Mb/s والاختبار حقق 350 Mb/s، فما نسبة المعدل المحقق إلى الرقم الاسمي؟
الإجابات
10 MB × 8 = 80 Mb → 80 / 20 = 4 s11110000 = 240 = F0128 = 100000002500 × 8 = 20000 bit20000 / 10000000 = 0.002 s = 2 msC8 = (12 × 16) + 8 = 200350 / 500 × 100 = 70%
أخطاء شائعة في تمارين الشبكات
- نسيان التحويل من Byte إلى Bit: اضرب عدد Bytes في 8 قبل القسمة على معدل مقاس بـbit/s.
- الخلط بين Mb/s وMB/s: الحرف الصغير b يعني Bit والكبير B يعني Byte.
- عدم توحيد الوحدات: لا تقسم MB مباشرة على Mb/s دون إجراء التحويل المناسب.
- الخلط بين Transmission Delay والـLatency الكلية: معادلة
L/Rتحسب زمن Serialization وليست كل تأخيرات المسار. - اعتبار Link Rate مساويًا دائمًا لسرعة نقل الملف: المعدل الاسمي للرابط لا يضمن أن التطبيق سيحصل على الرقم نفسه.
- إهمال الأصفار في Binary: عند تمثيل Octet من IPv4 نكتب 8 Bits كاملة، لذلك 10 تصبح
00001010وليس1010فقط عند كتابة العنوان بالثنائي. - استخدام 1024 و1000 دون معرفة وحدة السؤال: التزم بالتعريف المحدد في المسألة، خصوصًا عند التمييز بين MB وMiB.
الخلاصة
أغلب الحسابات الأساسية في الشبكات تصبح سهلة إذا التزمت بترتيب ثابت: حدد ما يطلبه السؤال، وحّد الوحدات، حوّل Bytes إلى Bits عند الحاجة، ثم طبق القانون المناسب وتحقق من وحدة الناتج.
وفي أنظمة العد، احفظ قيم الخانات بدل حفظ التحويلات نفسها. فهم العلاقة بين 8 Bits وOctet، وبين أربع Bits وخانة Hexadecimal واحدة، سيجعل قراءة IPv4 وSubnet Masks وIPv6 أسهل كثيرًا عندما تنتقل إلى موضوعات الشبكات المتقدمة.