Subnetting: شرح تقسيم الشبكات وحساب Subnet Mask وCIDR خطوة بخطوة

مشاركة

Subnetting هو تقسيم نطاق IPv4 إلى شبكات أصغر باستخدام Prefix Length مثل /24 أو /26. الفكرة الأساسية بسيطة: عنوان IPv4 يتكون من 32 Bit، والـPrefix يحدد عدد البتات المخصصة للشبكة، بينما تمثل البتات المتبقية مساحة العناوين داخل تلك الشبكة.

Subnetting: شرح تقسيم الشبكات وحساب Subnet Mask وCIDR خطوة بخطوة

لذلك لا تحتاج إلى حفظ عشرات جداول Subnetting. إذا فهمت العلاقة بين IPv4 وCIDR وSubnet Mask وHost Bits، تستطيع حساب Network Address وBroadcast Address ونطاق العناوين واختيار حجم Subnet المناسب بنفسك.

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

ما هو Subnetting؟

لنأخذ الشبكة التالية:

192.168.1.0/24

الرقم /24 يعني أن أول 24 Bit من عنوان IPv4 تمثل Network Prefix، بينما تتبقى:

32 - 24 = 8 Host Bits

إذا أردنا تقسيم هذه المساحة إلى شبكات أصغر، نزيد طول الـPrefix. فمثلًا:

/24 → /25 → /26 → /27

كلما زاد Prefix أصبح عدد الشبكات الممكنة أكبر، لكن عدد العناوين داخل كل Subnet أصبح أصغر.

هذا ينسجم مع طريقة CIDR الحديثة في التعبير عن عناوين IPv4، حيث يوضح RFC 4632 أن الرقم بعد الشرطة المائلة يعبّر عن عدد البتات المهمة في Network Prefix.

ما الفرق بين CIDR وSubnet Mask؟

CIDR Prefix وSubnet Mask طريقتان مختلفتان للتعبير عن الحد الفاصل بين Network Bits وHost Bits.

مثلًا:

192.168.1.0/24

تعادل:

Subnet Mask: 255.255.255.0
CIDR Subnet Mask Host Bits إجمالي العناوين
/24 255.255.255.0 8 256
/25 255.255.255.128 7 128
/26 255.255.255.192 6 64
/27 255.255.255.224 5 32
/28 255.255.255.240 4 16
/29 255.255.255.248 3 8
/30 255.255.255.252 2 4

كيف يتحول Prefix إلى Subnet Mask؟

Subnet Mask نفسه رقم من 32 Bit. البتات التي قيمتها 1 تمثل جزء الشبكة، والبتات التي قيمتها 0 تمثل الجزء المتبقي للعناوين.

في /26 مثلًا:

11111111.11111111.11111111.11000000

بتحويل كل Octet إلى Decimal نحصل على:

255.255.255.192

القيم المهمة التي ستظهر كثيرًا داخل Octet الخاص بالقناع هي:

عدد Network Bits داخل Octet القيمة الثنائية القيمة العشرية
0 00000000 0
1 10000000 128
2 11000000 192
3 11100000 224
4 11110000 240
5 11111000 248
6 11111100 252
7 11111110 254
8 11111111 255

كيف نحسب عدد العناوين داخل Subnet؟

في IPv4 لدينا دائمًا 32 Bit. لذلك:

Host Bits = 32 - Prefix Length

ثم:

Total Addresses = 2 ^ Host Bits

لشبكة /26:

Host Bits = 32 - 26
          = 6

Total Addresses = 2^6
                = 64

في Subnet IPv4 تقليدية متعددة الوصول يكون أول عنوان هو Network Address وآخر عنوان هو Broadcast Address، ولذلك يكون عدد عناوين المضيفين التقليدية في هذا المثال:

64 - 2 = 62 usable host addresses

لكن قاعدة طرح عنوانين ليست قاعدة مطلقة لكل Prefix. فهناك حالات خاصة مثل /31 على روابط IPv4 Point-to-Point سنتناولها لاحقًا.

Network Address وBroadcast وHost Range

لنأخذ:

192.168.1.0/26

لدينا 64 عنوانًا داخل هذا النطاق:

192.168.1.0
...
192.168.1.63

في Subnet تقليدية:

  • Network Address: 192.168.1.0
  • First Host: 192.168.1.1
  • Last Host: 192.168.1.62
  • Broadcast Address: 192.168.1.63

Network Address يعرّف الشبكة نفسها، بينما يستخدم Broadcast Address لإرسال IPv4 Datagram إلى جميع الأجهزة الموجودة ضمن نطاق البث المقصود وفق قواعد IPv4 المعمول بها.

مثال كامل: تقسيم /24 إلى أربع Subnets

لدينا الشبكة:

192.168.1.0/24

ونريد إنشاء أربع Subnets متساوية.

نحتاج إلى عدد من البتات يسمح بإنشاء أربع قيم مختلفة:

2^2 = 4

إذن نأخذ Bitين إضافيين للـNetwork Prefix:

/24 → /26

القناع الجديد:

255.255.255.192

وعدد العناوين داخل كل Subnet:

2^(32-26) = 64
Subnet Network First Host Last Host Broadcast
1 192.168.1.0/26 192.168.1.1 192.168.1.62 192.168.1.63
2 192.168.1.64/26 192.168.1.65 192.168.1.126 192.168.1.127
3 192.168.1.128/26 192.168.1.129 192.168.1.190 192.168.1.191
4 192.168.1.192/26 192.168.1.193 192.168.1.254 192.168.1.255

طريقة Block Size السريعة

من أسرع طرق حل كثير من مسائل Subnetting يدويًا حساب Block Size.

إذا كان القناع:

255.255.255.192

فالـOctet الذي يحدث داخله التقسيم قيمته 192. نحسب:

256 - 192 = 64

إذن الشبكات تبدأ بمضاعفات 64:

0
64
128
192

وبالتالي:

192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26

المهم أن تستخدم Block Size في الـOctet الذي يقع داخله حد الـPrefix، وليس بالضرورة آخر Octet من عنوان IPv4.

مثال على Prefix لا يقع في آخر Octet: /20

لنأخذ:

172.16.35.10/20

القناع هو:

255.255.240.0

التغيير يحدث في الـOctet الثالث. نحسب Block Size:

256 - 240 = 16

إذن قيم بداية الشبكات في الـOctet الثالث تكون:

0
16
32
48
64
...

القيمة 35 تقع داخل Block الذي يبدأ عند 32 وينتهي عند 47. لذلك:

Network:   172.16.32.0/20
Broadcast: 172.16.47.255
First Host: 172.16.32.1
Last Host:  172.16.47.254

هذا المثال مهم لأنه يمنع الخطأ الشائع المتمثل في النظر إلى آخر Octet فقط عند حل Subnetting.

كيف تعرف Subnet التي ينتمي إليها عنوان IP؟

افترض أن لديك:

IP Address: 192.168.1.150
Prefix:     /26

عرفنا أن Block Size لـ/26 هو 64، ولذلك تبدأ الشبكات عند:

0
64
128
192

العدد 150 يقع بين 128 و191، ولذلك العنوان موجود في:

Network:   192.168.1.128/26
First Host: 192.168.1.129
Last Host:  192.168.1.190
Broadcast:  192.168.1.191

الطريقة الدقيقة: استخدام عملية AND

Block Size طريقة سريعة، لكن لفهم ما يحدث فعلًا يمكنك حساب Network Address باستخدام عملية Bitwise AND بين عنوان IP وSubnet Mask.

لنأخذ الجزء الأخير من المثال السابق:

IP:   150 = 10010110
Mask: 192 = 11000000

نطبق AND:

10010110
11000000
--------
10000000

10000000 تساوي 128، ولذلك يصبح Network Address:

192.168.1.128

هذه هي العملية التي تجعل Subnet Mask قادرًا على تحديد Network Prefix من عنوان IPv4.

كيف تختار Prefix حسب عدد الأجهزة؟

في التصميم العملي قد لا يقال لك: «استخدم /26». بل قد تكون لديك Subnet تحتاج إلى عدد محدد من العناوين.

إذا احتجت إلى 50 عنوان Host في شبكة IPv4 تقليدية، نبحث عن أصغر عدد من Host Bits يستطيع استيعابها:

2^5 - 2 = 30  ← غير كاف
2^6 - 2 = 62  ← كاف

نحتاج إلى 6 Host Bits، وبالتالي:

32 - 6 = /26

إذن /26 يوفر 64 عنوانًا إجمالًا و62 عنوان Host بالطريقة التقليدية.

مثال: شبكة تحتاج إلى 100 Host

2^6 - 2 = 62   ← غير كاف
2^7 - 2 = 126  ← كاف

نحتاج إلى 7 Host Bits:

32 - 7 = /25

إذن /25 هو أصغر Prefix تقليدي في هذا السياق يوفر مساحة تكفي 100 جهاز.

جدول سريع لاختيار Prefix

Prefix إجمالي العناوين Host Addresses التقليدية
/24 256 254
/25 128 126
/26 64 62
/27 32 30
/28 16 14
/29 8 6
/30 4 2

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

ما هو VLSM؟

VLSM اختصار لـVariable Length Subnet Masking، ويعني استخدام Prefixes مختلفة داخل خطة العنونة بدل تقسيم النطاق بالكامل إلى شبكات متساوية الحجم.

افترض أن لديك:

192.168.10.0/24

وتحتاج إلى:

  • Subnet A تستوعب نحو 100 Host.
  • Subnet B تستوعب نحو 50 Host.
  • Subnet C تستوعب نحو 20 Host.

نبدأ عادة بأكبر متطلب حتى لا نجزئ مساحة العنونة بطريقة تجعل تخصيص الشبكات الكبيرة لاحقًا صعبًا.

Subnet الحاجة Prefix مناسب النطاق المحجوز
A 100 Host /25 192.168.10.0 – 192.168.10.127
B 50 Host /26 192.168.10.128 – 192.168.10.191
C 20 Host /27 192.168.10.192 – 192.168.10.223

ويبقى:

192.168.10.224/27

متاحًا لتخصيص آخر.

لو قسمنا /24 كله إلى شبكات /25 فقط لأن القسم الأكبر يحتاج هذا الحجم، لهدرنا مساحة كبيرة. VLSM يسمح باختيار حجم يناسب كل جزء من التصميم.

ما علاقة Subnetting بالعناوين الخاصة؟

كثير من أمثلة Subnetting تستخدم عناوين مثل 10.x.x.x أو 172.16.x.x أو 192.168.x.x لأنها تقع ضمن نطاقات IPv4 المحجوزة للاستخدام الخاص.

بحسب RFC 1918، النطاقات الخاصة هي:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

يمكنك تقسيم هذه النطاقات إلى Subnets أصغر وفق احتياجات الشبكة الداخلية. لكن كون العنوان Private لا يغير طريقة حساب الـPrefix أوNetwork Address.

Subnetting تعمل في أي طبقة؟

Subnetting مرتبطة بعنونة IP وتحديد Network Prefix، ولذلك نتعامل معها ضمن وظائف Network Layer في نموذج OSI أوInternet Layer عند الحديث عن Internet Protocol Suite.

إذا كنت تريد فهم موقع IP وRouters وPackets داخل الاتصال كاملًا، يشرح مقال نموذج OSI وطبقاته السبع هذه العلاقة دون تحويل Subnetting نفسها إلى موضوع عن الطبقات.

كيف يعرف الجهاز هل الوجهة محلية أم بعيدة؟

هذه من أهم الفوائد العملية لفهم Subnet Mask.

عندما يريد جهاز إرسال IP Datagram إلى عنوان آخر، يستخدم معلومات عنوانه والـPrefix لتحديد ما إذا كانت الوجهة موجودة ضمن نفس الشبكة أم تحتاج إلى الوصول إليها عبر Router مناسب.

مثلًا، إذا كان الجهاز:

IP:      192.168.1.20
Prefix:  /24

فالوجهة:

192.168.1.80

تنتمي إلى نفس 192.168.1.0/24.

لكن الوجهة:

192.168.2.80

ليست ضمن ذلك الـPrefix، ولذلك يحتاج الجهاز عادة إلى إرسال الحركة إلى Next Hop مثل Default Gateway وفق جدول التوجيه الخاص به.

أما كيفية حصول الأجهزة تلقائيًا على معلومات مثل IP وSubnet Mask وDefault Gateway فهي مرتبطة ببروتوكولات أخرى؛ ويمكن مراجعة شرح البروتوكولات الشبكية لفهم دور DHCP وIP وبقية البروتوكولات في هذا السياق.

Subnetting وVLAN ليستا الشيء نفسه

من الأخطاء الشائعة التعامل مع VLAN وSubnet باعتبارهما اسمين للشيء نفسه.

  • Subnet: تقسيم يتعلق بعنونة IP والـPrefixes في Layer 3.
  • VLAN: تقسيم منطقي على Layer 2 ضمن تقنيات الشبكات المحلية التي تدعمه.

في تصميمات كثيرة يتم تخصيص IP Subnet مستقلة لكل VLAN، ولهذا يظهر المفهومان معًا باستمرار، لكن هذا لا يجعلهما مترادفين.

إذا أرادت الأجهزة الموجودة في شبكات IP مختلفة التواصل، نحتاج عادة إلى Routing مناسب بينها، سواء نُفذ بواسطة Router أوجهاز Layer 3 آخر.

هل Subnetting تجعل الشبكة أسرع؟

ليس بصورة مباشرة.

تغيير القناع من /24 إلى /26 لا يحول رابط Ethernet بسرعة 1 Gb/s إلى رابط أسرع، ولا يزيد سرعة Wi-Fi بذاته.

القيمة الحقيقية لـSubnetting تكمن في تصميم العنونة وإنشاء حدود Layer 3 وتنظيم الشبكة. وعند دمجه مع تصميم Layer 2 وVLANs وRouting مناسب يمكن أن يساعد على التحكم في نطاق بعض أنواع Traffic وتطبيق السياسات بصورة أوضح.

لذلك من الأدق القول إن Subnetting أداة لتصميم الشبكة، وليس «زرًا لزيادة السرعة».

هل Subnetting وحدها توفر عزلًا أمنيًا؟

لا.

وضع أجهزة في Subnets مختلفة يجعل الحركة بينها تمر عادة عبر وظائف Layer 3، وهذا يمنح المسؤول نقطة يمكن عندها تطبيق ACLs أوFirewall Policies أوغيرها من قواعد التحكم.

لكن إذا سمحت البنية الشبكية بكل Traffic بين الشبكات دون قيود، فإن مجرد اختلاف Prefix لا يقدم عزلًا أمنيًا كاملًا.

إذن:

Subnetting ≠ Security Policy

بل يمكن أن يكون Subnetting جزءًا من تصميم يساعد على تطبيق السياسات الأمنية بصورة منظمة.

ماذا عن /31 و/32؟

القانون التعليمي:

Usable Hosts = 2^HostBits - 2

مفيد للشبكات التقليدية، لكنه لا يصف كل حالات IPv4.

Prefix /31

في /31 يوجد عنوانان فقط. تاريخيًا سيبدوان مثل Network Address وBroadcast Address، لكن RFC 3021 يحدد استخدامهما كعنوانين للطرفين على روابط IPv4 Point-to-Point.

مثلًا:

10.0.0.0/31

10.0.0.0  ← endpoint
10.0.0.1  ← endpoint

هذا الاستخدام يوفر مساحة عناوين مقارنة باستخدام /30 لكل رابط Point-to-Point.

Prefix /32

/32 يحدد عنوان IPv4 واحدًا فقط:

192.0.2.25/32

ويظهر في سياقات مثل Host Routes وعناوين Loopback وغيرها من الاستخدامات التي تحتاج إلى الإشارة إلى عنوان واحد بدل شبكة تحتوي مجموعة عناوين.

لهذا لا تطبق قاعدة «اطرح اثنين» بصورة آلية على كل Prefix دون فهم نوع الشبكة والاستخدام.

أخطاء شائعة عند حل مسائل Subnetting

  • الخلط بين إجمالي العناوين وعدد Host Addresses التقليدية القابلة للإسناد.
  • نسيان أن IPv4 يتكون من 32 Bit.
  • طرح Prefix من 24 بدل 32 عند الحساب.
  • النظر إلى آخر Octet دائمًا حتى عندما يقع التقسيم في Octet آخر.
  • استخدام Network Address لجهاز عادي في شبكة IPv4 تقليدية.
  • استخدام Broadcast Address كعنوان Host في شبكة تقليدية.
  • اختيار Prefix لا يوفر عدد العناوين المطلوب.
  • إنشاء Subnets متداخلة في خطة العنونة.
  • الخلط بين Subnet Mask وDefault Gateway.
  • الخلط بين Subnet وVLAN.
  • افتراض أن /24 يعني دائمًا «شبكة Class C»؛ CIDR لا يحتاج إلى نظام Classes القديم لحساب الـPrefix.
  • حفظ جدول Prefixes دون فهم Binary وBlock Size.
  • تطبيق قاعدة طرح عنوانين على /31 دون مراعاة استخدام Point-to-Point.

طريقة حل أي سؤال Subnetting خطوة بخطوة

  1. حدد عنوان IPv4 والـPrefix المعطى.
  2. حوّل Prefix إلى Subnet Mask إذا كنت تحتاجها.
  3. احسب 32 - Prefix لمعرفة Host Bits.
  4. احسب 2^HostBits لمعرفة إجمالي مساحة العناوين.
  5. حدد الـOctet الذي يحدث داخله التقسيم.
  6. احسب Block Size عند الحاجة.
  7. حدد Network Address الذي يقع داخله عنوان IP.
  8. حدد بداية الـBlock التالي؛ العنوان السابق له هو Broadcast في Subnet IPv4 التقليدية.
  9. استخرج First Host وLast Host.
  10. إذا كانت المسألة تتعلق بعدد أجهزة، تحقق أن Prefix يوفر سعة كافية.
  11. إذا كانت المسألة VLSM، ابدأ عادة بأكبر شبكة مطلوبة ثم انتقل إلى الأصغر.
  12. انتبه إلى الحالات الخاصة مثل /31 و/32.

تمرين 1: احسب بيانات 10.20.30.70/27

قناع /27 هو:

255.255.255.224

Block Size:

256 - 224 = 32

بدايات الشبكات في آخر Octet:

0
32
64
96
128
160
192
224

القيمة 70 تقع داخل Block الذي يبدأ عند 64 وينتهي عند 95.

إذن:

Network:    10.20.30.64/27
First Host: 10.20.30.65
Last Host:  10.20.30.94
Broadcast:  10.20.30.95

تمرين 2: احسب بيانات 192.168.50.200/28

قناع /28:

255.255.255.240

Block Size:

256 - 240 = 16

المضاعفات القريبة من 200:

176
192
208

200 تقع بين 192 و207، ولذلك:

Network:    192.168.50.192/28
First Host: 192.168.50.193
Last Host:  192.168.50.206
Broadcast:  192.168.50.207

تمرين 3: ما Prefix المناسب لـ200 Host؟

نجرب عدد Host Bits:

2^7 - 2 = 126  ← غير كاف
2^8 - 2 = 254  ← كاف

نحتاج إلى 8 Host Bits:

32 - 8 = /24

إذن /24 يوفر المساحة المطلوبة في شبكة IPv4 تقليدية تحتاج إلى 200 عنوان Host.

الخلاصة

Subnetting ليست مجموعة أرقام يجب حفظها، بل تطبيق مباشر لطريقة تقسيم عنوان IPv4 ذي الـ32 Bit بين Network Prefix والمساحة المتبقية للعناوين.

لكي تحل معظم المسائل بصورة صحيحة، ركز على خمس أفكار:

  • IPv4 يتكون من 32 Bit.
  • Prefix Length يحدد عدد Network Bits.
  • ما يتبقى هو Host Bits.
  • 2^HostBits يحدد حجم مساحة العناوين.
  • Block Size يساعدك على تحديد حدود كل Subnet بسرعة.

بعد ذلك يصبح حساب Network Address وBroadcast وHost Range، واختيار Prefix حسب عدد الأجهزة، واستخدام VLSM خطوات منطقية بدل أن تكون جدولًا محفوظًا.

شارك برأيك

لديك إضافة، سؤال أو تجربة مرتبطة بالموضوع؟ اكتبها وشارك بها القراء.