ping6.net
الأساسيات

تنسيق رأس IPv6: البنية والحقول ورؤوس الامتداد

افهم بنية رأس حزمة IPv6 وحقوله الثمانية وكيفية عمل رؤوس الامتداد. قارن مع IPv4 وتعلم لماذا يحسن التصميم المبسط التوجيه.

ping6.net14 ديسمبر 202423 min read
IPv6الرأسبنية الحزمةرؤوس الامتدادالشبكات

لماذا غيّر IPv6 الرأس#

نما رأس IPv4 عضوياً على مدى عقود. تمت إضافة خيارات، وأعيد استخدام الحقول، وفي النهاية كان لديك رأس متغير الطول مع 14 حقلاً مختلفاً (بعضها اختياري) وبنية معقدة يجب على الموجهات تحليلها بعناية في كل قفزة.

TL;DR - ملخص سريع

النقاط الرئيسية:

  • رأس ثابت بحجم 40 بايت مع 8 حقول (مقابل 20-60 بايت متغير في IPv4 مع 14+ حقل)
  • إزالة مجموع فحص الرأس والتجزئة من الرأس الأساسي لتوجيه أسرع
  • رؤوس الامتداد (Hop-by-Hop، Routing، Fragment، إلخ) توفر وظائف اختيارية
  • Traffic Class (QoS)، Flow Label (توجيه لكل تدفق)، وتسلسل Next Header المبسط

انتقل إلى: الحقول الثمانية | رؤوس الامتداد | لماذا لا مجموع فحص

اتخذ IPv6 نهجاً مختلفاً: طول ثابت، مبسط، ومحسّن للإرسال السريع. الرأس الأساسي هو دائماً بالضبط 40 بايت، مع 8 حقول محددة جيداً. لا توجد خيارات متغيرة الطول، ولا مجموع فحص للرأس، ولا حقول تجزئة في الرأس الرئيسي.

النتيجة هي رأس يمكن للموجهات معالجته بشكل أسرع، أسهل في التنفيذ في الأجهزة، ويدعم الامتداد دون كسر التوافق العكسي. فهم رأس IPv6 يعني فهم سبب بنائه بهذه الطريقة وما هي المقايضات التي قام بها المصممون.

الرأس الأساسي بحجم 40 بايت#

تبدأ كل حزمة IPv6 بالضبط بـ 40 بايت في هذا التنسيق:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class |           Flow Label                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Payload Length        |  Next Header  |   Hop Limit   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                         Source Address                        +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                      Destination Address                      +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

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

الحقول الثمانية#

لنفحص كل حقل بالترتيب الذي تعالجه الموجهات عادةً.

1. الإصدار (4 بت)#

دائماً 6 لحزم IPv6. دائماً 4 لحزم IPv4. هكذا تميز الأجهزة IPv6 من IPv4 على السلك.

التطبيق العملي: تنظر أنظمة المكدس المزدوج إلى هذه الـ 4 بت أولاً لتحديد كيفية تحليل بقية الحزمة.

Version = 6 (binary: 0110)

بسيط، ثابت، وحاسم لتحديد البروتوكول.

2. فئة حركة المرور (8 بت)#

يُسمى سابقاً "الأولوية" في مواصفات IPv6 المبكرة، يضع هذا الحقل علامة على الحزم لمعاملة جودة الخدمة (QoS). يخدم نفس الغرض مثل نوع الخدمة (ToS) في IPv4 أو نقطة كود الخدمات المتمايزة (DSCP).

البنية:

  • البتات 0-5: DSCP (نقطة كود الخدمات المتمايزة)
  • البتات 6-7: ECN (إشعار الازدحام الصريح)

قيم DSCP الشائعة:

القيمةالاسمثنائيحالة الاستخدام
0أفضل جهد000000حركة مرور عادية
46EF (الإرسال السريع)101110VoIP، الوقت الفعلي
34AF41100010بيانات عالية الأولوية
26AF31011010بيانات متوسطة الأولوية
10AF11001010بيانات منخفضة الأولوية

يسمح ECN للموجهات بإشارة الازدحام دون إسقاط الحزم. يُستخدم من قبل تطبيقات TCP الحديثة للتحكم الأفضل في الازدحام.

مثال:

Traffic Class = 46 (EF) = 0b10111000
  DSCP = 46 (Expedited Forwarding)
  ECN = 0 (Not ECN-capable)

تفحص الموجهات التي تدعم QoS هذا الحقل لتحديد أولوية الحزم. يحصل VoIP على أولوية أعلى من تنزيلات الملفات. يحصل الفيديو في الوقت الفعلي على معاملة أفضل من البريد الإلكتروني.

3. تسمية التدفق (20 بت)#

واحدة من أكثر ميزات IPv6 إثارة للاهتمام لكن غير المستغلة. تحدد تسمية التدفق الحزم التي تنتمي إلى نفس التدفق ويجب أن تتلقى معاملة توجيه متطابقة.

الغرض:

  • السماح للموجهات بتحديد الحزم ذات الصلة دون فحص رؤوس الطبقة العليا
  • دعم الإرسال السريع للتدفقات المعروفة
  • توفير مقبض لـ QoS لكل تدفق

المواصفات (RFC 6437):

  • القيمة 0: الحزمة ليست جزءاً من تدفق
  • القيمة 1-0xFFFFF: معرف التدفق (يختار عشوائياً من قبل المصدر)
  • يجب أن تكون متسقة لجميع الحزم في التدفق
  • يجب أن تكون عشوائية زائفة للسماح بالتجزئة في الموجه

ما الذي يشكل تدفقاً:

  • المصدر + الوجهة + تسمية التدفق يحدده بشكل فريد
  • قد تستخدم جميع الحزم في اتصال TCP نفس تسمية التدفق
  • أو قد يحصل كل تدفق فيديو على تسمية فريدة

الاستخدام العملي:

تضع العديد من التطبيقات تسمية التدفق على 0 لأن:

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

لكن عند استخدامها بشكل صحيح، تمكن تسمية التدفق:

  • موازنة الحمل عبر مسارات ECMP (مسار متعدد متساوي التكلفة)
  • هندسة حركة المرور لكل تدفق
  • إرسال المسار السريع للأجهزة

مثال على تعيين تسمية التدفق (Linux):

# تمكين تسميات التدفق التلقائية
sysctl -w net.ipv6.auto_flowlabels=1
 
# سيتم تعيين تسميات التدفق بناءً على تجزئة 5-tuple

يولد Linux تسميات التدفق تلقائياً لاتصالات TCP عند التمكين، باستخدام تجزئة لعنوان/منفذ المصدر/الوجهة.

4. طول الحمولة (16 بت)#

طول حمولة الحزمة بالبايتات، باستثناء رأس الـ 40 بايت الأساسي.

النطاق: 0 إلى 65,535 بايت

تفاصيل مهمة:

  • يتضمن رؤوس الامتداد (إن وجدت) بالإضافة إلى بيانات الطبقة العليا
  • لا يتضمن رأس IPv6 الأساسي البالغ 40 بايت
  • القيمة القصوى 65,535 تعني أن الحد الأقصى لحجم الحزمة هو 65,575 بايت (65,535 + 40)

حالة خاصة: الحزم العملاقة

للحزم الأكبر من 65,535 بايت، يتم تعيين طول الحمولة على 0 ويحمل رأس امتداد Hop-by-Hop مع خيار الحزمة العملاقة الطول الفعلي (حتى 4,294,967,295 بايت).

الحزم العملاقة نادرة. تُستخدم على شبكات عالية الأداء متخصصة مع دعم الإطار الضخم، عادةً عبر روابط 10 Gbps+.

مثال:

Payload Length = 1440 bytes
  40-byte IPv6 header (not counted)
  1440-byte payload (TCP header + data)
  Total packet = 1480 bytes

5. الرأس التالي (8 بت)#

يحدد نوع الرأس الذي يتبع رأس IPv6 مباشرة. هكذا يتم تحديد رؤوس الامتداد وبروتوكولات الطبقة العليا.

القيم الشائعة:

القيمةالبروتوكول/الامتدادالوصف
6TCPبروتوكول التحكم في النقل
17UDPبروتوكول مخطط بيانات المستخدم
58ICMPv6بروتوكول رسالة التحكم في الإنترنت لـ IPv6
0خيارات Hop-by-Hopرأس امتداد، يجب أن يكون الأول
43التوجيهرأس امتداد التوجيه
44جزءرأس امتداد الجزء
60خيارات الوجهةرأس امتداد خيارات الوجهة
51AHرأس المصادقة (IPsec)
50ESPحمولة الأمان المغلفة (IPsec)
59لا يوجد رأس تالٍلا توجد بيانات أخرى تتبع

كيف يعمل التسلسل:

يحتوي كل رأس امتداد على حقل الرأس التالي الخاص به، مكوناً سلسلة:

IPv6 Header (Next Header = 0)
  -> Hop-by-Hop Options (Next Header = 43)
    -> Routing Header (Next Header = 6)
      -> TCP Header
        -> Data

يعالج المضيف المستقبل الرؤوس بالترتيب حتى يصل إلى بروتوكول النقل (TCP/UDP) أو البيانات.

مثال بدون رؤوس امتداد:

Next Header = 6 (TCP)
  رأس IPv6 يتبعه مباشرة رأس TCP

مثال مع رؤوس امتداد:

Next Header = 44 (Fragment)
  رأس IPv6 يتبعه رأس الجزء (Next Header = 6)
    رأس الجزء يتبعه رأس TCP

6. حد القفزة (8 بت)#

عدد قفزات الموجه المتبقية قبل التخلص من الحزمة. كل موجه ينقص هذا بمقدار 1. عندما يصل إلى 0، يسقط الموجه الحزمة ويرسل رسالة ICMPv6 تجاوز الوقت.

النطاق: 0-255

هذا هو معادل IPv6 لحقل TTL (وقت العيش) في IPv4، لكن الاسم أكثر دقة - يعد القفزات، وليس الوقت.

القيم الأولية الشائعة:

نظام التشغيل/المكدسحد القفزة الافتراضيالمنطق
Linux64توصية RFC 4861
Windows128افتراضي تاريخي
Cisco IOS64التوافق مع المعايير
BSD64افتراضي مكدس KAME

لماذا تهم القيم المختلفة للبصمة:

يمكنك تخمين نظام التشغيل المصدر من خلال النظر إلى حد القفزة في الحزم المستلمة:

حد القفزة المستلم: 56
  56 + 8 قفزات = 64 (على الأرجح Linux/BSD)
 
حد القفزة المستلم: 117
  117 + 11 قفزة = 128 (على الأرجح Windows)

يستخدم Traceroute حد القفزة:

يعمل Traceroute عن طريق إرسال حزم بقيم حد قفزة متزايدة:

  • حد القفزة 1: يستجيب الموجه الأول بتجاوز الوقت
  • حد القفزة 2: يستجيب الموجه الثاني بتجاوز الوقت
  • حد القفزة 3: يستجيب الموجه الثالث بتجاوز الوقت
  • ... حتى الوصول إلى الوجهة

اعتبار الأمان:

تستخدم بعض الهجمات حدود قفزة منخفضة لجعل الحزم تنتهي قبل الوصول إلى أنظمة IDS/IPS. تفرض بعض جدران الحماية أحياناً قيم حد قفزة دنيا لحركة المرور الواردة.

مثال:

Hop Limit = 64
  يستقبل الموجه 1، ينقص إلى 63، يرسل
  يستقبل الموجه 2، ينقص إلى 62، يرسل
  ...
  يستقبل الموجه 64، ينقص إلى 0، يسقط ويرسل ICMPv6 Type 3

7. عنوان المصدر (128 بت)#

عنوان IPv6 لمرسل الحزمة. دائماً 128 بت، بدون استثناءات.

التنسيق: ترميز عنوان IPv6 القياسي

2001:db8:1234:5678:9abc:def0:1234:5678

اعتبارات خاصة:

عنوان غير محدد (::) صالح فقط في حالات محددة:

  • كشف العنوان المكرر (DAD)
  • طلبات DHCP قبل تعيين العنوان
  • رسائل ICMPv6 معينة

عناوين محلية للوصلة (fe80::/10) هي عناوين مصدر صالحة لكن فقط على الوصلة المحلية. لا ترسل الموجهات الحزم بمصادر محلية للوصلة.

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

مشكلة عملية: اختيار عنوان المصدر

عندما يكون للمضيف عناوين IPv6 متعددة (شائع مع SLAAC وDHCPv6 وملحقات الخصوصية)، يجب عليه اختيار أيها يستخدم كمصدر. يحدد RFC 6724 خوارزمية الاختيار، مفضلاً:

  1. نفس نطاق العنوان كالوجهة
  2. عناوين بأطول بادئة مطابقة
  3. عناوين غير مهملة
  4. عناوين بتفضيل أعلى

8. عنوان الوجهة (128 بت)#

عنوان IPv6 للمستقبل المقصود للحزمة. مثل عنوان المصدر، دائماً 128 بت.

التنسيق: ترميز عنوان IPv6 القياسي

2001:4860:4860::8888

قرار التوجيه:

تفحص الموجهات هذا الحقل لتحديد أين ترسل الحزمة. على عكس IPv4 حيث قد يعيد NAT كتابة العناوين، تبقى عناوين وجهة IPv6 عادةً دون تغيير من البداية إلى النهاية.

عناوين خاصة:

الارتداد (::1) يجب ألا يظهر أبداً في حزمة على السلك. يتم التعامل مع الحزم إلى ::1 داخلياً.

عناوين المالتيكاست (ff00::/8) تشير إلى أنه يجب تسليم الحزمة إلى عدة مستقبلين:

  • ff02::1 - جميع العقد على الوصلة المحلية
  • ff02::2 - جميع الموجهات على الوصلة المحلية
  • ff02::1:ff00:0/104 - مالتيكاست العقدة المطلوبة (لاكتشاف الجيران)

تعديل رأس التوجيه:

عندما يكون رأس امتداد التوجيه موجوداً، قد تعالج العقد الوسيطة عنوان الوجهة بشكل مختلف، لكن هذا غير شائع في الشبكات الحديثة بسبب المخاوف الأمنية.

مقارنة رأس IPv6 مقابل IPv4#

فهم ما تغير يساعد على تقدير قرارات التصميم.

الميزةIPv4IPv6لماذا تغير
حجم الرأس20-60 بايت (متغير)40 بايت (ثابت)معالجة أسرع، أجهزة أبسط
إجمالي الحقول14+ حقول8 حقولتحليل مبسط
العناوين32 بت لكل منها128 بت لكل منهاحل استنفاد العناوين
مجموع الفحصنعملانُقل إلى L2/L4، إرسال أسرع
التجزئةبواسطة الموجهاتالمصدر فقطيفرض PMTUD، أداء أفضل
الخياراتفي الرأس الرئيسيرؤوس امتدادرأس أساسي أنظف
TTL/حد القفزةTTL (8 بت)حد القفزة (8 بت)أعيدت تسميته للدقة
البروتوكول/الرأس التاليالبروتوكول (8 بت)الرأس التالي (8 بت)قابل للتوسيع مع التسلسل
نوع الخدمةToS/DSCP (8 بت)فئة حركة المرور (8 بت)نفس الوظيفة
الأعلامDF، MF، محجوز(في رأس الجزء)نُقل إلى رأس امتداد
إزاحة الجزء13 بت(في رأس الجزء)نُقل إلى رأس امتداد
طول الرأسIHL (4 بت)غير مطلوب40 بايت ثابت
التعريف16 بت(في رأس الجزء)نُقل إلى رأس امتداد
تسمية التدفقلا شيء20 بتميزة جديدة لـ QoS/التوجيه

ما تمت إزالته ولماذا#

مجموع فحص الرأس: تعيد موجهات IPv4 حساب مجموع الفحص في كل قفزة لأن TTL يتغير. هذا يضيف عبء معالجة. يلغيه IPv6 لأن:

  • طبقة الوصلة (Ethernet) لديها مجموع فحص خاص بها
  • طبقة النقل (TCP/UDP) لديها مجموع فحص خاص بها
  • لا تحتاج الموجهات إلى التحقق من سلامة الحزمة - تفعل النقاط النهائية ذلك

حقل طول الرأس: يحتاج IPv4 إلى هذا لأن الخيارات تجعل الرأس متغير الطول. رأس IPv6 الثابت البالغ 40 بايت يجعل هذا الحقل غير ضروري.

حقول التجزئة: يسمح IPv4 لأي موجه بتجزئة الحزم. يتطلب IPv6 من المصدر تنفيذ التجزئة باستخدام اكتشاف MTU للمسار. هذا ينقل التعقيد إلى النقاط النهائية ويحسن أداء الموجه.

الخيارات: نادراً ما تُستخدم خيارات IPv4 لكنها تجبر الموجهات على تحليل رؤوس متغيرة الطول. ينقل IPv6 الخيارات إلى رؤوس امتداد، مما يبقي الرأس الأساسي بسيطاً.

شرح رؤوس الامتداد#

رؤوس الامتداد هي طريقة IPv6 لإضافة وظائف دون تعقيد الرأس الأساسي. تظهر بين رأس IPv6 وطبقة النقل (TCP/UDP)، مكونة سلسلة.

كيف تعمل رؤوس الامتداد#

يحتوي كل رأس امتداد على حقل الرأس التالي الذي يشير إلى الرأس التالي في السلسلة:

+--------+-------+--------+-------+--------+-------+-----+
| IPv6   | NH=0  | Hop-by | NH=43 | Routing| NH=6  | TCP |
| Header |       | -Hop   |       | Header |       |     |
+--------+-------+--------+-------+--------+-------+-----+

تعالج المضيفات رؤوس الامتداد بالترتيب. عادةً ما تعالج الموجهات فقط خيارات Hop-by-Hop؛ يتم فحص الرؤوس الأخرى فقط من قبل الوجهة.

رؤوس الامتداد القياسية#

يحدد RFC 8200 الترتيب الموصى به عندما تكون رؤوس امتداد متعددة موجودة:

  1. خيارات Hop-by-Hop (0)
  2. خيارات الوجهة (للوجهات الوسيطة عندما يكون رأس التوجيه موجوداً)
  3. التوجيه (43)
  4. الجزء (44)
  5. رأس المصادقة (51)
  6. حمولة الأمان المغلفة (50)
  7. خيارات الوجهة (60) (للوجهة النهائية)
  8. الطبقة العليا (TCP=6، UDP=17، ICMPv6=58)

رأس خيارات Hop-by-Hop (النوع 0)#

يحمل خيارات يجب فحصها من قبل كل موجه على طول المسار.

التنسيق:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Next Header  |  Hdr Ext Len  |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
.                         Options                               .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

الخيارات الشائعة:

Pad1 وPadN: الحشو للمحاذاة

تنبيه الموجه (النوع 5): يخبر الموجهات بفحص الحزمة بشكل أكثر دقة. يُستخدم من قبل بروتوكولات مثل MLD (اكتشاف مستمع المالتيكاست).

الحزمة العملاقة (النوع 194): للحزم الأكبر من 65,535 بايت.

يجب أن يكون الأول: إذا كان موجوداً، يجب أن تتبع خيارات Hop-by-Hop رأس IPv6 مباشرة. يتطلب RFC 8200 هذا الترتيب الصارم.

مشكلة أمنية: تسقط العديد من الموجهات الحزم ذات رؤوس Hop-by-Hop التي لا تعرفها، أو تحد معدلها بشدة. في الممارسة العملية، رأس الامتداد هذا غير شائع خارج بروتوكولات محددة (MLD، الحزم العملاقة).

رأس التوجيه (النوع 43)#

يحدد العقد الوسيطة التي يجب أن تزورها الحزمة قبل الوصول إلى وجهتها النهائية.

التنسيق:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Next Header  |  Hdr Ext Len  | Routing Type  | Segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                     Type-specific data                        .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

أنواع التوجيه:

النوع 0 (مهمل): توجيه المصدر الفضفاض الأصلي. مهمل من قبل RFC 5095 بسبب مشاكل أمنية (هجمات التضخيم).

النوع 2: يُستخدم من قبل Mobile IPv6 للتوجيه إلى العقد المحمولة. حالة استخدام محدودة.

النوع 3: رأس توجيه القطعة (SRH) لـ SRv6. حالة استخدام حديثة لهندسة حركة المرور وتسلسل الخدمة في شبكات المزودين.

الأمان: سمحت رؤوس التوجيه من النوع 0 للمهاجمين بتوجيه الحزم عبر عقد تعسفية، مما خلق هجمات تضخيم. تسقط معظم الشبكات النوع 0. تم تصميم النوع 3 (SRv6) بشكل أكثر عناية لكنه لا يزال يثير مخاوف أمنية على الإنترنت العام.

رأس الجزء (النوع 44)#

يُستخدم عندما يجزئ المصدر حزمة كبيرة جداً على MTU المسار.

التنسيق:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Next Header  |   Reserved    |      Fragment Offset    |Res|M|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Identification                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

الحقول:

  • الرأس التالي: بروتوكول البيانات المجزأة (TCP، UDP، إلخ)
  • إزاحة الجزء: إزاحة هذا الجزء في الحزمة الأصلية (بوحدات 8 بايت)
  • علم M: المزيد من الأجزاء (1 = المزيد قادم، 0 = الجزء الأخير)
  • التعريف: معرف فريد لإعادة التجميع (نفسه لجميع أجزاء حزمة واحدة)

كيف تعمل التجزئة:

  1. يحاول المصدر إرسال حزمة كبيرة
  2. يستقبل رسالة ICMPv6 حزمة كبيرة جداً
  3. يجزئ الحزمة إلى قطع أصغر
  4. يضيف رأس الجزء إلى كل قطعة
  5. تعيد الوجهة التجميع بناءً على حقل التعريف

مثال:

حزمة أصلية 2000 بايت، MTU 1280:

الجزء 1:
  رأس IPv6 (40 بايت)
  رأس الجزء (8 بايت) [M=1، Offset=0، ID=12345]
  بيانات (1232 بايت)
  الإجمالي: 1280 بايت
 
الجزء 2:
  رأس IPv6 (40 بايت)
  رأس الجزء (8 بايت) [M=0، Offset=154، ID=12345]
  بيانات (768 بايت)
  الإجمالي: 816 بايت

الحد الأدنى من MTU: يتطلب IPv6 من جميع الروابط دعم 1280 بايت على الأقل. يمكن للمصادر إرسال حزم 1280 بايت بدون تجزئة على أي شبكة IPv6 متوافقة.

المخاوف الأمنية: تتيح التجزئة الهجمات:

  • أجزاء متداخلة (إخفاء الحمولة من IDS)
  • فيضانات الأجزاء (استنفاد موارد إعادة التجميع)
  • أجزاء صغيرة (إهدار وقت المعالجة)

تسقط العديد من جدران الحماية الحزم المجزأة أو تعيد تجميعها قبل الفحص.

رأس خيارات الوجهة (النوع 60)#

يحمل خيارات للعقدة الوجهة فقط. لا تعالجها الموجهات الوسيطة.

التنسيق: نفس خيارات Hop-by-Hop، لكن يتم فحصها فقط في الوجهة.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Next Header  |  Hdr Ext Len  |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
.                         Options                               .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

حالات الاستخدام:

  • الحشو للمحاذاة
  • خيارات خاصة بالتطبيق
  • امتدادات مستقبلية دون تغيير الرأس الأساسي

يمكن أن يظهر مرتين في سلسلة الرأس:

  1. قبل رأس التوجيه (تعالج من قبل الوجهات الوسيطة)
  2. بعد رؤوس ESP/AH (تعالج من قبل الوجهة النهائية)

رأس المصادقة (النوع 51) وESP (النوع 50)#

رؤوس IPsec توفر المصادقة والتشفير.

AH (51): يوفر المصادقة والسلامة لكن ليس السرية. نادراً ما يُستخدم لأن ESP يمكنه فعل نفس الشيء بالإضافة إلى التشفير.

ESP (50): يوفر السرية والمصادقة والسلامة. قياسي لـ VPNs والتواصل المشفر.

IPsec موضوع كبير يتجاوز بنية الرأس. النقطة الرئيسية: هذه الرؤوس جزء من تصميم IPv6 من البداية، على عكس IPv4 حيث تم إضافة IPsec لاحقاً.

معالجة رؤوس الامتداد#

يجب على المضيفات:

  • معالجة جميع رؤوس الامتداد بالترتيب
  • دعم جميع رؤوس الامتداد القياسية
  • التعامل مع الرؤوس غير المعروفة وفقاً لقيمة الرأس التالي

عادةً ما تفعل الموجهات:

  • فحص خيارات Hop-by-Hop فقط
  • إرسال رؤوس الامتداد الأخرى دون معالجة
  • قد تحد المعدل أو تسقط الحزم ذات رؤوس معينة للأمان

اعتبارات جدار الحماية:

تعقد رؤوس الامتداد جدران الحماية لأن:

  • قد يكون رأس النقل (TCP/UDP) عميقاً في الحزمة
  • يجب تحليل السلسلة بالكامل للعثور على المنافذ للترشيح
  • يمكن للمهاجمين إخفاء الحمولات بسلاسل رأس معقدة

أفضل الممارسات:

  • حدّ طول سلسلة رأس الامتداد
  • أسقط الحزم ذات الرؤوس المهملة (التوجيه من النوع 0)
  • أعد تجميع الأجزاء قبل الفحص
  • حدّ معدل الحزم بخيارات Hop-by-Hop

لماذا لا يوجد مجموع فحص؟#

يتضمن IPv4 مجموع فحص للرأس يجب على الموجهات إعادة حسابه في كل قفزة (لأن TTL يتغير). يتجاهل IPv6 هذا عمداً.

المنطق:

  1. طبقة الوصلة لديها بالفعل مجموع فحص: Ethernet لديها CRC32. Wi-Fi لديها مجموع فحص. طبقات الوصلة الحديثة موثوقة.

  2. مجاميع فحص طبقة النقل: يتضمن TCP وUDP مجاميع فحص تغطي البيانات والرؤوس. يحدث التحقق من البداية إلى النهاية على أي حال.

  3. أداء الموجه: إعادة حساب مجاميع الفحص في كل قفزة تهدر دورات CPU. ترسل الموجهات عالية السرعة مليارات الحزم في الثانية - يساعد القضاء على حساب مجموع الفحص.

  4. الأخطاء نادرة: الشبكات الحديثة لديها معدلات خطأ بت منخفضة. تلتقط مجاميع الفحص أخطاء أقل مما كانت عليه في الثمانينيات عندما تم تصميم IPv4.

ماذا عن الفساد؟

إذا انقلب بت في رأس IPv6:

  • عنوان وجهة خاطئ: تذهب الحزمة إلى مكان خاطئ أو تُسقط، يعيد TCP الإرسال
  • حد قفزة خاطئ: قد تموت الحزمة مبكراً أو متأخراً، تأثير هامشي
  • رأس تالٍ خاطئ: لا يمكن للوجهة تحليله، يكتشف TCP البيانات المفقودة ويعيد الإرسال

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

يجب أن يكون لـ UDP مجموع فحص في IPv6

في IPv4، مجاميع فحص UDP اختيارية (وغالباً ما تكون معطلة للأداء). يجعل IPv6 مجاميع فحص UDP إلزامية. بدون مجموع فحص طبقة IP، يجب على UDP توفير فحص السلامة. هذه هي المقايضة: توجيه أبسط/أسرع، لكن يجب على تطبيقات UDP حساب مجاميع الفحص.

التطبيقات العملية#

لمهندسي الشبكات#

تكوين جدار الحماية:

  • يجب تحليل سلاسل رأس الامتداد للعثور على رؤوس النقل
  • يجب حدّ عمق السلسلة لمنع الإساءة
  • أسقط الرؤوس المهملة (التوجيه من النوع 0)

ضبط الأداء:

  • عدم وجود مجموع فحص للرأس يعني إرسالاً أسرع في الأجهزة
  • يمكّن حجم الرأس الثابت من خطوط الأنابيب الأفضل في الموجهات
  • قد تؤدي رؤوس الامتداد إلى معالجة المسار البطيء

استكشاف الأخطاء:

  • يظهر tcpdump جميع الرؤوس: tcpdump -i eth0 -vv ip6
  • يحلل Wireshark رؤوس الامتداد بوضوح
  • تحقق من رؤوس الامتداد غير المتوقعة التي تسبب الإسقاط

للمطورين#

برمجة المقبس:

  • يمكن لمقابس IPv6 استقبال رؤوس امتداد عبر البيانات الإضافية
  • نادراً ما تحتاج التطبيقات إلى بناء رؤوس امتداد يدوياً
  • يتعامل نظام التشغيل مع التجزئة تلقائياً

بناء الحزمة:

  • اضبط فئة حركة المرور للتطبيقات الحساسة لـ QoS (VoIP، فيديو)
  • مكّن توليد تسمية التدفق التلقائي لموازنة حمل ECMP أفضل
  • لا تفترض أنه يمكنك التجزئة - استخدم PMTUD بشكل صحيح

الأمان:

  • تحقق من صحة عناوين المصدر (رفض مصادر المالتيكاست، إلخ)
  • تعامل مع الحزم المجزأة بعناية أو ارفضها
  • كن على علم بأن الصناديق الوسيطة قد تسقط رؤوس الامتداد

لمسؤولي النظام#

تكوين MTU:

  • تأكد من أن MTU 1280 بايت على الأقل على جميع الروابط
  • تحسن MTU الأكبر الأداء (1500 قياسي، 9000 للإطارات الضخمة)
  • السماح بـ ICMPv6 حزمة كبيرة جداً عبر جدران الحماية

إعداد QoS:

  • كوّن الموجهات لتكريم علامات فئة حركة المرور
  • خريطة حركة مرور التطبيق لقيم DSCP المناسبة
  • راقب أن سياسات QoS تعمل بشكل صحيح

IPsec/VPN:

  • AH وESP هي رؤوس امتداد - يجب على جدران الحماية السماح بها
  • يضيف IPsec عبئاً - احسب هذا في حسابات MTU
  • خذ في الاعتبار تأثير وضع النقل مقابل وضع النفق على الرؤوس

فحص الرؤوس بالأدوات#

tcpdump#

التقاط وعرض رؤوس IPv6:

# التقاط حزمة IPv6 أساسي
sudo tcpdump -i eth0 -n ip6
 
# إخراج مطول يظهر جميع حقول الرأس
sudo tcpdump -i eth0 -vv ip6
 
# إظهار الحزم برؤوس امتداد فقط
sudo tcpdump -i eth0 -vv 'ip6 and ip6[6] != 6 and ip6[6] != 17 and ip6[6] != 58'
 
# التقاط الحزم المجزأة
sudo tcpdump -i eth0 -n 'ip6 and ip6[6] = 44'

مثال الإخراج:

12:34:56.789012 IP6 2001:db8::10 > 2001:db8::20: DSTOPT (TCP)
  2001:db8::10.54321 > 2001:db8::20.80: Flags [S], seq 123456789, win 65535
 
التحليل:
- المصدر: 2001:db8::10، المنفذ 54321
- الوجهة: 2001:db8::20، المنفذ 80
- رأس الامتداد: خيارات الوجهة (DSTOPT)
- النقل: TCP SYN

Wireshark#

يوفر Wireshark تحليل رأس مفصل:

المرشحات:

# جميع حركة مرور IPv6
ipv6
 
# الحزم برؤوس امتداد محددة
ipv6.nxt == 0    # Hop-by-Hop
ipv6.nxt == 43   # Routing
ipv6.nxt == 44   # Fragment
ipv6.nxt == 60   # Destination Options
 
# الحزم المجزأة
ipv6.fragment
 
# فئة حركة مرور محددة
ipv6.tclass == 46  # Expedited Forwarding

فحص الرأس:

  1. وسّع "بروتوكول الإنترنت الإصدار 6" في تفاصيل الحزمة
  2. اطلع على جميع الحقول الثمانية مصنفة بوضوح
  3. تظهر رؤوس الامتداد كطبقات منفصلة
  4. انقر بزر الماوس الأيمن على الحقول للترشيح

Scapy (Python)#

بناء وتحليل حزم IPv6 برمجياً:

from scapy.all import *
 
# إنشاء حزمة IPv6
pkt = IPv6(src="2001:db8::10", dst="2001:db8::20", tc=46, fl=12345)
pkt = pkt/TCP(sport=54321, dport=80, flags="S")
 
# إظهار بنية الحزمة
pkt.show()
 
# الإخراج:
# ###[ IPv6 ]###
#   version= 6
#   tc= 46
#   fl= 12345
#   plen= None
#   nh= TCP
#   hlim= 64
#   src= 2001:db8::10
#   dst= 2001:db8::20
# ###[ TCP ]###
#   sport= 54321
#   dport= http
 
# إضافة رأس امتداد
pkt = IPv6(dst="2001:db8::20")/IPv6ExtHdrDestOpt()/TCP(dport=80)
pkt.show()

الأخطاء الشائعة في التكوين#

حجب رؤوس الامتداد بالكامل#

المشكلة: يسقط جدار الحماية جميع الحزم ذات رؤوس الامتداد.

التأثير:

  • لا تعمل التجزئة (النوع 44 محجوب)
  • تفشل VPNs IPsec (الأنواع 50/51 محجوبة)
  • تُسقط بعض حركة المرور المشروعة

الحل: السماح بالرؤوس الضرورية (الجزء، AH، ESP)، حجب المهملة (التوجيه من النوع 0).

# iptables: السماح بالأجزاء، إسقاط التوجيه من النوع 0
ip6tables -A FORWARD -m rt --rt-type 0 -j DROP
ip6tables -A FORWARD -p ipv6-icmp --icmpv6-type packet-too-big -j ACCEPT

تجاهل فئة حركة المرور#

المشكلة: الموجهات المكونة بدون QoS، جميع الحزم تحصل على معاملة أفضل جهد.

التأثير:

  • تعاني جودة VoIP
  • تخزن تدفقات الفيديو مؤقتاً
  • تتنافس حركة المرور الحساسة للوقت مع عمليات النقل الضخمة

الحل: تكوين سياسات QoS بناءً على فئة حركة المرور/DSCP.

! مثال Cisco IOS
class-map match-any VOICE
  match dscp ef
!
policy-map WAN-QOS
  class VOICE
    priority percent 20
  class class-default
    fair-queue
!
interface GigabitEthernet0/1
  service-policy output WAN-QOS

عدم تطابق MTU#

المشكلة: روابط بـ MTU < 1280 أو جدران حماية تحجب ICMPv6 حزمة كبيرة جداً.

التأثير:

  • تتعلق الاتصالات
  • تفشل عمليات النقل الكبيرة
  • لا يعمل PMTUD

الحل: تأكد من وجود MTU 1280 كحد أدنى في كل مكان، السماح بـ ICMPv6 النوع 2.

# تعيين MTU
ip link set dev eth0 mtu 1500
 
# التحقق
ip -6 link show eth0
 
# السماح بحزمة كبيرة جداً
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type packet-too-big -j ACCEPT

مقالات ذات صلة#

  • أساسيات IPv6 - افهم عنونة IPv6 الأساسية والمفاهيم قبل الغوص في الرؤوس.
  • شرح ICMPv6 - تعلم عن ICMPv6، الذي يستخدم قيمة الرأس التالي 58 وهو حاسم لـ IPv6.
  • تكوين جدار حماية IPv6 - كوّن جدران الحماية للتعامل مع رؤوس IPv6 ورؤوس الامتداد بشكل صحيح.

تحقق من صحة عناوين IPv6

استخدم مدقق IPv6 للتحقق من تنسيقات العناوين وأداة Ping لاختبار الاتصال وفحص حقول الرأس في الاستجابات.

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

لماذا رأس IPv6 بالضبط 40 بايت؟

الحجم الثابت يمكّن معالجة أسرع. تعرف الموجهات بالضبط أين يوجد كل حقل بدون تحليل. يمكن للأجهزة خطوط أنابيب معالجة الحزمة بكفاءة أكبر. يستوعب حجم 40 بايت عنوانين 128 بت (32 بايت) بالإضافة إلى 8 بايت للحقول الأخرى (الإصدار، فئة حركة المرور، تسمية التدفق، طول الحمولة، الرأس التالي، حد القفزة). ستتطلب الرؤوس متغيرة الطول التحليل قبل الإرسال، مما يبطئ الموجهات.

هل يمكنني تجزئة حزم IPv6 مثل IPv4؟

لا. فقط المصدر يمكنه تجزئة حزم IPv6. لا تجزئ الموجهات. إذا كانت الحزمة كبيرة جداً على رابط، يسقطها الموجه ويرسل رسالة ICMPv6 حزمة كبيرة جداً إلى المصدر. يقلل المصدر بعد ذلك حجم حزمته. هذا يسمى اكتشاف MTU للمسار (PMTUD). ينقل تعقيد التجزئة إلى النقاط النهائية ويحسن أداء الموجه. يجب أن تدعم جميع روابط IPv6 MTU 1280 بايت على الأقل.

ماذا يحدث إذا ضبطت تسمية التدفق على 0؟

لا شيء ينكسر. تسمية التدفق 0 تعني أن الحزمة ليست جزءاً من تدفق يتطلب معاملة خاصة. تضبطها معظم التطبيقات على 0. تولد بعض المكدسات الحديثة تسميات تدفق عشوائية زائفة لاتصالات TCP لتحسين موازنة حمل ECMP. يمكن للموجهات التجزئة على المصدر+الوجهة+تسمية التدفق لتوزيع حركة المرور عبر مسارات متعددة متساوية التكلفة. ضبطها على 0 يعمل لكنه يمنع موازنة الحمل القائمة على التدفق.

هل يجب أن أستخدم رؤوس خيارات Hop-by-Hop؟

نادراً. يجبر Hop-by-Hop كل موجه على فحص الحزمة، مما يبطئ المعالجة. تحد العديد من الشبكات المعدل أو تسقط الحزم برؤوس Hop-by-Hop بسبب المخاوف الأمنية. الاستخدامات المشروعة الرئيسية هي تنبيه الموجه (لـ MLD) وخيارات الحزمة العملاقة (للحزم الأكبر من 65,535 بايت). للتطبيقات النموذجية، تجنب Hop-by-Hop تماماً. إذا كنت بحاجة إليه، اختبر بدقة لأن الصناديق الوسيطة قد تسقط حركة مرورك.

لماذا أزال IPv6 مجموع فحص الرأس؟

الأداء والتكرار. تعيد موجهات IPv4 حساب مجموع الفحص في كل قفزة لأن TTL يتغير. هذا يهدر دورات CPU. يعتمد IPv6 على مجاميع فحص طبقة الوصلة (CRC Ethernet) ومجاميع فحص طبقة النقل (TCP/UDP) لاكتشاف الخطأ. الشبكات الحديثة لديها معدلات خطأ منخفضة. تلتقط مجاميع فحص البداية إلى النهاية في TCP/UDP الأخطاء دون إثقال كاهل الموجهات. المقايضة: أصبحت مجاميع فحص UDP إلزامية في IPv6 (اختيارية في IPv4) للحفاظ على فحص السلامة.

كيف تتعامل جدران الحماية مع رؤوس الامتداد؟

بعناية. يجب على جدران الحماية تحليل سلسلة رأس الامتداد بالكامل للعثور على رؤوس النقل (TCP/UDP) وأرقام المنافذ للترشيح. تبطئ السلاسل المعقدة المعالجة ويمكنها إخفاء حمولات ضارة. أفضل الممارسات: حدّ عمق السلسلة، أسقط الرؤوس المهملة (التوجيه من النوع 0)، أعد تجميع الأجزاء قبل الفحص، وحدّ معدل الحزم برؤوس غير عادية. تسقط بعض جدران الحماية جميع رؤوس الامتداد بشكل افتراضي، مما يكسر التجزئة وIPsec - كوّنها للسماح بالرؤوس الأساسية.