# نظام العنونة IPv6

> IPv6 نظام عنونة بطول 128 بت أُوجد حلاً طويل الأمد لنفاد عناوين IPv4 ذات الـ 32 بت، ويُكتب بثماني مجموعات ست عشرية يمكن اختصار أصفارها باستخدام (::) مرة واحدة. يستخدم ترويسة ثابتة بحجم 40 بايت مع ترويسات إضافية، ويستبدل ARP ببروتوكول Neighbor Discovery، ولا يحتاج إلى NAT أو عناوين broadcast.

- الرابط: https://blog.cyberpedia.site/ipv6/
- التصنيف: الشبكات
- الكاتب: Jameel Hussein Tawelh
- تاريخ النشر: 4 نوفمبر 2021 (2021-11-04)
- آخر تحديث: 2 يوليو 2023 (2023-07-02)

مع التطور والانتشار الكبير لشبكة الانترنت والشبكات المعتمدة بآلية الاتصال على TCP/IP فإن عدد عناوين IPv4 أصبح مستهلكاً بشكل شبه كامل، استخدام شبكات محلية مع عناوين IP خاصة وتقنية NAT ساعد بحل هذه المشكلة ولكنه ليس حلاً جذرياً، لذلك تم إيجاد IPv6 ليكون حلاً طويل الأمد لهذه المشكلة، وهو قادر على التعامل مع عدد كبير جداً من عناوين IP وبالتالي يدعم عدداً كبيراً جداً من الأجهزة المتصلة بالانترنت.

تعرفنا في [مقال سابق](https://blog.cyberpedia.site/ip/) عن عناوين IP بشكل عام.

كل الأمور الخاصة بالطبقة الثالثة كآلية توجيه البيانات وبروتوكولات التوجيه كلها تعمل بنفس الطريقة مع عناوين IPv6 مع إضافة بعض التعديلات بسبب اختلاف طول العناوين.

## مقارنة بين IPv4 وIPv6

الجدول التالي هو مقارنة بين عناوين IPv4 وIPv6:

|  | IPv4 | IPv6 |
| --- | --- | --- |
| **العنوان** | يستخدم 32 bit | يستخدم 128 bit |
| **نوع العنوان** | Unicast, multicast and broadcast | Unicast, anycast, and multicast والنوع broadcast يتم من خلال استخدام عنوان محدد |
| **Subnetting and prefix** | يمكن استخدام subnet والبادئة الخاصة بجزء الشبكة يشار لها بـ /nn بعد عنوان IP | يمكن استخدام subnet والبادئة الخاصة بجزء الشبكة يشار لها بـ /nnn بعد عنوان IP |
| **تخصيص العناوين** | Static and dynamic via DHCP | يدعم عدة طرق لتخصيص عنوان IP: Static، وStatic prefix with EUI-64 and other method، وStateless address auto-configuration (SLAAC)، وStateful DHCPv6 |
| **Private IP** | يوجد عدد من المجالات الخاصة والتي لا يمكن استخدامها للوصول لشبكة الانترنت | يدعم العناوين الخاصة بشكل مشابه لـ IPv4 ولا يمكن استخدامها للوصول للانترنت |
| **Interface IP address** | عنوان واحد فقط | يمكن استخدام أكثر من عنوان |
| **DNS** | يستخدم السجل A | يستخدم السجل AAAA |
| **IP header** | له حجم متغير بين 20-60 bytes بحسب الخيارات المضافة | له حجم ثابت 40 bytes ولا يدعم خيارات ولكنه يستخدم ترويسات إضافية لحمل المعلومات لبروتوكولات الطبقة الثالثة |
| **بروتوكولات التوجيه** | يدعم: Distance vector, link-state, hybrid، وأكثر البروتوكولات استخداماً هي: RIPv2, OSPFv2, EIGRP, IS-IS for IGP and BGP-4 for EGP | يدعم: distance vector, link-state and hybrid ويتطلب إصدارات جديدة من بروتوكولات محددة مثل: RIPng, OSPFv3, EIGRP for IPv6, MP-BGP |
| **بروتوكول الإدارة** | ICMP | ICMPv6 |
| **تحديد العناوين** | يستخدم ARP protocol | يستخدم Neighbor Discovery Protocol مع ICMPv6 |
| **NAT** | يستخدم NAT مع عناوين IP الخاصة للسماح لها بالاتصال مع خارج الشبكة باستخدام عنوان IP عام | يحوي عدداً كبيراً جداً من العناوين وكل جهاز يخصص له عنوان خاص ولا يوجد حاجة لاستخدام NAT |

## مثال على الاتصال باستخدام IPv6

الشكل التالي هو مثال لعملية اتصال بين الجهاز A والجهاز B باستخدام IPv6، وبشكل مشابه للإصدار الرابع IPv4 سيتم تخصيص عنوان لكل جهاز في الطبقة الثالثة وكل router interface سيكون له عنوان IPv6 أيضاً.

الجهاز A سيقوم بإرسال حزمة بيانات IPv6 ليتم تغليفها ضمن Ethernet Frame إلى البوابة الافتراضية default gateway والتي هي الراوتر R1.

الراوتر R1 يقوم بعملية فك التغليف لحزمة البيانات وينظر إلى جدول التوجيه ليعرف مسار القفزة التالية ويجد أن مسار القفزة التالية هو الراوتر R2، ويقوم بتغليف حزمة البيانات على شكل Layer2 Frame ويقوم بإرسالها إلى الراوتر R2 والذي سوف يقوم بنفس العملية حتى يقوم بإيصال الحزمة إلى الجهاز B.

![مخطط انتقال حزمة IPv6 من الجهاز A عبر الراوترين R1 وR2 إلى الجهاز B مع إعادة التغليف عند كل قفزة](https://blog.cyberpedia.site/_astro/img-01.DSdPXGtE_Z28ANwY.webp)

*مثال توضيحي*

في المثال السابق الاختلاف الواضح عن الإصدار السابق هو شكل عنوان IP، ولكن هناك اختلافات أخرى غير مرئية وهي: كيف يعرف IPv6 الوجهة الافتراضية default gateway؟ وهل يقوم باستخدام ARP لإيجاد عنوان MAC address لجهاز معروف عنوانه IP ضمن نفس الشبكة الفرعية subnet؟

العديد من البروتوكولات التي تعمل مع الإصدار الرابع IPv4 من الممكن أن تعمل مع الإصدار السادس IPv6 ولكن مع بعض التعديلات، ويوجد بعض البروتوكولات غير الضرورية في الإصدار السادس وبعض البروتوكولات الجديدة التي تم استخدامها، مثلاً ICMP وDHCP لا يتم استخدامهما بشكل مماثل للإصدار السابق لذلك تم إيجاد ICMPv6 وDHCPv6، وآلية عمل البروتوكول ARP تم استبدالها ببروتوكول يدعى IPv6 Neighbor Discovery، والبروتوكولات OSPF وEIGRP وبروتوكولات التوجيه الأخرى تم تعديلها للعمل مع الإصدار السادس وأصبحت OSPFv6 وEIGRPv6 وRIPng.

## IPv6 Header

عناوين الإصدار السادس مصممة لتقدم نفس المهمة الخاصة بعناوين الإصدار الرابع مع تطوير في بعض الأمور الأخرى، المعيار RFC 2460 عرّف الترويسة الخاصة بـ IPv6 packet.

![حقول الترويسة الأساسية لحزمة IPv6 وفق RFC 2460: Version وTraffic Class وFlow Label وPayload Length وNext Header وHop Limit وعنوانا المصدر والوجهة](https://blog.cyberpedia.site/_astro/img-02.Deo1HzfH_ZHlahH.webp)

معظم الحقول لها نفس الغرض بالمقارنة مع IPv4، ولكن في IPv6 يوجد اختلاف أساسي وهو الإضافات بالترويسات مع طول الترويسة الثابت، IPv6 يسمح للترويسة بحمل معلومات لبروتوكولات الطبقة الثالثة، والترويسات الإضافية تتموضع بعد الترويسة الثابتة وقبل الحمولة payload.

الحقل Next header يستخدم لتحديد الترويسة التالية في حزمة البيانات، وفي حال عدم وجود ترويسات إضافية فسوف يشير هذا الحقل إلى ترويسة الطبقة الرابعة (مثل TCP header)، وفي حال وجود ترويسة إضافية فسوف يشير إلى نوع الترويسة الإضافية.

هذا الإصدار يسمح باستخدام أكثر من إضافة للترويسات بشكل متسلسل، وكل ترويسة إضافية تحوي حقل Next Header والذي يستخدم لتحديد الترويسة الإضافية التالية، وآخر ترويسة ستشير إلى ترويسة بروتوكول الطبقة الرابعة (مثل TCP).

الشكل التالي يظهر مثالاً على تسلسل الترويسات الإضافية، أول ترويسة لا تحوي أي إضافات وبالتالي ستشير إلى الحقل الخاص بترويسة TCP، أما في المثال الثالث فيوجد ترويستان إضافيتان: الأولى Routing extension header والثانية Fragmentation extension header والتي سيكون فيها حقل Next Header يشير إلى TCP header.

![ثلاثة أمثلة على تسلسل ترويسات IPv6: ترويسة تشير مباشرة إلى TCP، ثم ترويسة Routing، ثم ترويستا Routing وFragment قبل ترويسة TCP](https://blog.cyberpedia.site/_astro/img-03.DY01t0kU_143y02.webp)

## Addressing IPv6

أكثر اختلاف ملاحظ بين الإصدارين هو طول العنوان، الإصدار السادس IPv6 له طول 128 bits بينما الإصدار الرابع له طول 32 bits، والسبب هو أن الهدف من الإصدار السادس الحصول على عدد عناوين أكبر، بالإضافة إلى أن الإصدار الرابع يتم تمثيله بالنظام العشري أو الثنائي أما الإصدار السادس فيتم تمثيله بالنظام الست عشري، والعنوان يمثل بمجموعات 16 bits (أربعة أرقام ست عشرية) متبوعة بـ (:) كما في المثال التالي:

```text
2340:1111:AAAA:0001:1234:5678:9ABC:1234
```

### بعض الأمور المستخدمة لتقليل التعقيد الخاص بهذا النظام

-   الأصفار في بداية كل مجموعة يمكن حذفها.
-   في حال كانت المجموعة تحوي أربعة أصفار يمكن حذفها وكتابة (::)، وهذا الاختصار يمكن أن يحدث لمرة واحدة فقط في العنوان.

لنفرض أن لدينا العنوان التالي:

```text
FE00:0000:0000:0001:0000:0000:0000:0056
```

يمكننا كتابة هذا العنوان على الشكل التالي:

```text
FE00:0:0:1:0:0:0:56
```

كما يمكن اختصاره بشكل أكبر كالتالي:

```text
FE00:0:0:1::56
```

وكما في الإصدار الرابع يمكننا الإشارة للبادئة الخاصة بالشبكة كما في المثال التالي:

```text
2222:1111:0:1:A:B:C:D/64
```

حيث 64 تشير إلى القسم الخاص بتعريف الشبكة، وللحصول على عنوان هذه الشبكة تستبدل باقي الأحرف بعد أول 64 بت بأصفار.

![تقسيم العنوان 2222:1111:0:1:A:B:C:D/64 إلى جزء الشبكة في أول 64 بت وجزء الجهاز في آخر 64 بت، وعنوان الشبكة الناتج 2222:1111:0:1::](https://blog.cyberpedia.site/_astro/img-04.CpJi8EhW_Z1ahNaq.webp)

يمكن كتابة العنوان السابق بشكل:

```text
2222:1111:0:1:0:0:0:0
2222:1111:0:1::
```

## أنواع العناوين في IPv6

-   **Unicast:** يستخدم لتعريف interface واحد محدد.
-   **Anycast:** يستخدم لتعريف مجموعة من interface (عدة عقد)، وعندما يستخدم هذا العنوان فإن حزمة البيانات يتم استلامها من قبل أقرب interface له هذا العنوان.
-   **Multicast:** يستخدم لتعريف مجموعة من interface، وعندما يستخدم هذا العنوان فإن حزم البيانات يتم تسليمها لكل interface له هذا العنوان.

وفي هذا النظام من العنونة لا يوجد عنوان broadcast كما في نظام العنونة IPv4، ولإرسال حزمة بيانات بشكل broadcast يتم استخدام multicast address، وفي كل نوع من هذه العناوين يوجد أنواع إضافية أخرى.

## عناوين IPv6 الخاصة والمحجوزة

بشكل مشابه لنظام العنونة IPv4 يوجد بعض العناوين التي لا يجب استخدامها، والجدول التالي يظهر هذه العناوين:

| العنوان | الاستخدام |
| --- | --- |
| `::1/128` | Loopback address |
| `::/128` | عنوان غير محدد |
| `64:ff9b::/96` | للترجمة بين IPv4 وIPv6 |
| `::ffff:0:0/96` | IPv4 mapped address |
| `100::/64` | تجاهل كتلة العناوين هذه |
| `2001::/23` | مخصص لبروتوكول IETF |
| `2001::/32` | خاص لبروتوكول TEREDO |
| `2001:2::/48` | للمرجعية |
| `2001:db8::/32` | للتوثيق |
| `2001:10::/28` | خاص لـ ORCHID |
| `2002::/16` | تحويل من 6to4 |
| `Fc00::/7` | Unique-local |
| `Fe80::/10` | Linked-scoped unicast |

## تخصيص عناوين IPv6

الإصدار السادس يدعم عدة طرق لتخصيص العناوين وهي:

-   Static
-   Static prefix with EUI-64
-   Stateless address auto configuration (SLAAC)
-   Stateful DHCPv6

## أسئلة شائعة

### ما الفرق الأساسي بين IPv4 وIPv6؟

طول العنوان: يستخدم IPv4 عناوين بطول 32 بت، بينما يستخدم IPv6 عناوين بطول 128 بت تتيح عدداً كبيراً جداً من العناوين دون الحاجة إلى NAT.

### كيف يُختصر عنوان IPv6؟

تُحذف الأصفار في بداية كل مجموعة، وتُستبدل المجموعات المتتالية التي كلها أصفار بـ (::) مرة واحدة فقط في العنوان.

### هل يوجد عنوان broadcast في IPv6؟

لا، يُستخدم عنوان multicast لإرسال الحزم إلى مجموعة من الواجهات بدلاً من broadcast.

### ما وظيفة حقل Next Header في IPv6؟

يحدد الترويسة التالية في الحزمة: إما ترويسة إضافية مثل Routing أو Fragment، أو ترويسة الطبقة الرابعة مثل TCP عند عدم وجود ترويسات إضافية.

---

المصدر: مدونة سايبربيديا (https://blog.cyberpedia.site/ipv6/)
