الـ Frame أو الإطار هو وحدة البيانات التي تتعامل معها طبقة ربط البيانات (Data Link Layer). وظيفته أن يأخذ البيانات القادمة من الطبقات الأعلى ويضعها داخل بنية مناسبة للنقل عبر وصلة محلية مثل Ethernet أو Wi-Fi.
لكن هناك نقطة مهمة قبل تفكيك الحقول: لا توجد بنية Frame واحدة موحّدة لكل تقنيات الشبكات. إطار Ethernet يختلف عن إطار Wi-Fi، وهذه تختلف بدورها عن بروتوكولات ربط أخرى. لذلك سنشرح المفهوم العام باختصار ثم نستخدم Ethernet وفق IEEE 802.3 كنموذج عملي لتفكيك الحقول بدقة.
إذا كنت لا تزال تتعرف على مكان الإطار داخل المكدس الشبكي، فمن المفيد أولًا فهم طبقة ربط البيانات Data Link Layer وعلاقتها بالطبقات الأخرى، بينما يشرح مقال الفرق بين LLC وMAC الوظائف الداخلية لهذه الطبقة بصورة أعمق.
ما الفرق بين Frame وPacket؟
مصطلحا Frame وPacket يصفان وحدتي بيانات في مستويين مختلفين. الـ Packet ترتبط عادة بطبقة الشبكة مثل حزمة IPv4 أو IPv6، بينما الـ Frame هي الغلاف الذي تستخدمه تقنية طبقة الربط لنقل تلك الحزمة عبر الوصلة الحالية.
| العنصر | Packet | Frame |
|---|---|---|
| الطبقة | Network Layer — Layer 3 | Data Link Layer — Layer 2 |
| العنونة الشائعة | عناوين IP | عناوين Link-Layer مثل MAC في Ethernet |
| الوظيفة | نقل البيانات بين الشبكات | نقل البيانات عبر الوصلة الحالية |
| عند المرور عبر Router | يعالج الراوتر الحزمة ويحدّث بعض الحقول عند الحاجة | ينتهي الإطار الوارد ويُبنى إطار جديد للوصلة التالية |
لذلك ليس دقيقًا اعتبار حزمة IP ثابتة حرفيًا طوال الرحلة. فالراوتر مثلًا يُنقص TTL أو Hop Limit، وقد تحدث تغييرات أخرى بسبب NAT أو الأنفاق أو Fragmentation في بعض الحالات. الفكرة الأهم هنا هي أن غلاف طبقة الربط المستخدم على وصلة ما لا يستمر كما هو عبر الراوتر.
كيف تبدو بنية Ethernet Frame؟
تعرّف IEEE 802.3 عائلة Ethernet والـ MAC المشترك المستخدم فيها. وعند الحديث عن Ethernet Frame أساسي غير موسوم بـVLAN يمكن تبسيط البنية إلى الحقول التالية:
| الحقل | الحجم | الوظيفة |
|---|---|---|
| Destination Address | 6 بايت | عنوان MAC للوجهة |
| Source Address | 6 بايت | عنوان MAC للمصدر |
| Length/Type | 2 بايت | طول البيانات أو EtherType حسب القيمة |
| MAC Client Data + Pad | 46 إلى 1500 بايت في الإطار الأساسي | الحمولة والحشو عند الحاجة |
| FCS | 4 بايت | كشف أخطاء النقل باستخدام CRC-32 |
وبذلك يكون الحجم الأساسي من Destination Address حتى FCS بين 64 و1518 بايت للإطار Ethernet غير الموسوم. وهذا التفصيل مهم لأن Preamble وSFD اللذين يسبقان الإطار على الوسط الفيزيائي لا يدخلان في تعريف MAC Frame نفسه عند حساب هذه الأحجام.
Preamble وSFD: هل هما جزء من Ethernet Frame؟
قبل أن تصل حقول MAC نفسها، تسبقها على الوصلة الفيزيائية مقدمة Preamble بطول 7 بايت، ثم Start Frame Delimiter أو SFD بطول بايت واحد.
- Preamble: نمط يساعد المستقبل على التزامن مع الإشارة.
- SFD: يحدد الانتقال من المقدمة إلى بداية بيانات Ethernet الفعلية.
يحدث هنا كثير من الالتباس في الرسومات التعليمية: قد تعرض بعض المخططات Preamble وSFD بجوار الإطار لتوضيح ما ينتقل على الوسط، لكن مصطلحات IEEE تفرّق بين MAC Frame الذي يبدأ بعنوان الوجهة، وبين ما تضيفه الطبقة الفيزيائية حوله.
ولهذا أيضًا لا تضيف 8 بايت الخاصة بـPreamble وSFD عندما تقول إن الحد الأقصى للإطار Ethernet الأساسي هو 1518 بايت.
Destination MAC وSource MAC
أول حقل داخل MAC Frame هو عنوان الوجهة، يليه عنوان المصدر. طول كل منهما 48 بتًا، أي 6 بايت.
Destination MAC يخبر أجهزة طبقة الربط إلى أي واجهة أو مجموعة من الواجهات يوجَّه الإطار. وقد يكون العنوان Unicast أو Multicast أو Broadcast حسب نوع الاتصال. يمكنك التعمق في طريقة التمييز بينها في شرح Unicast وMulticast وBroadcast في MAC Address.
Source MAC يحدد عنوان طبقة الربط الذي أرسل الإطار على هذا الجزء من الشبكة.
عندما يمر Ethernet Frame عبر Switch عادي، يستطيع السويتش قراءة عنوان الوجهة واتخاذ قرار Forwarding دون الحاجة إلى إعادة كتابة عنواني MAC لمجرد عملية التحويل. أما عندما تصل حزمة Layer 3 إلى Router وتحتاج إلى الخروج عبر وصلة أخرى، فيُبنى لها غلاف Link-Layer مناسب للواجهة التالية.
Length/Type: لماذا يسمى الحقل باسمين؟
الحقل التالي طوله 2 بايت، لكن تفسيره يعتمد على القيمة الموجودة داخله. توضح وثيقة IEEE الخاصة باستخدام EtherType أن حقل Length/Type يستطيع العمل بطريقتين:
- إذا كانت القيمة من 0 إلى 1500، فإنها تُفسر كـLength.
- إذا كانت القيمة 1536 أو أكبر، فإنها تُفسر كـEtherType.
أما النطاق بين 1501 و1535 فيفصل عمليًا بين التفسيرين.
عند استخدام EtherType، تحدد القيمة البروتوكول أو التنسيق الذي يليها. ومن القيم المعروفة في سجلات IEEE/IANA:
| القيمة | المعنى |
|---|---|
0x0800 |
IPv4 |
0x0806 |
ARP |
0x86DD |
IPv6 |
0x8847 |
MPLS |
يمكن التحقق من هذه التعيينات عبر سجل IEEE 802 Numbers لدى IANA. كما يوضح RFC 894 الاستخدام التاريخي القياسي للقيمة 0x0800 عند حمل IPv4 داخل Ethernet.
ماذا يحدث عند استخدام VLAN 802.1Q؟
عندما يكون الإطار موسومًا بـIEEE 802.1Q VLAN لا تبقى البنية السابقة كما هي تمامًا. يُضاف Tag بطول 4 بايت بعد Source MAC، ويتضمن معلومات مثل VLAN ID والأولوية.
القيمة 0x8100 التي يراها المحلل في هذا الموضع هي TPID خاص بـCustomer VLAN Tag، وليست ببساطة اسم بروتوكول الحمولة النهائية. بعد بيانات Tag يظهر حقل Length/Type الخاص بالمحتوى المغلف.
ولهذا يصل الحجم المعروف لإطار Ethernet ذي VLAN Tag واحدة إلى 1522 بايت بدل 1518 بايت للإطار الأساسي غير الموسوم.
Payload وPadding: لماذا الحد الأدنى 46 بايت؟
في Ethernet Frame الأساسي يجب أن يكون مجموع MAC Client Data والحشو كبيرًا بما يكفي للوصول إلى الحد الأدنى لحجم الإطار، وهو 64 بايت من Destination Address حتى FCS.
الحساب في إطار غير موسوم بسيط:
- Destination MAC: 6 بايت.
- Source MAC: 6 بايت.
- Length/Type: 2 بايت.
- FCS: 4 بايت.
أي 18 بايت خارج الحمولة. وللوصول إلى 64 بايت يتبقى حد أدنى قدره 46 بايت لحقل Data + Pad.
إذا كانت بيانات البروتوكول العلوي أقصر من ذلك، تُضاف بايتات Padding. هذا الحشو ليس جزءًا من حزمة IP الأصلية. وقد وثق RFC 894 هذا السلوك عند نقل IP عبر Ethernet.
لماذا وُجد حد 64 بايت أصلًا؟
يرتبط الحد الأدنى بتاريخ Ethernet والوسط المشترك وآلية CSMA/CD. كان يجب أن يستمر الإرسال مدة كافية ليتمكن الجهاز من اكتشاف Collision يقع ضمن حدود شبكة Ethernet المسموح بها.
أما شبكات Ethernet الحديثة المبنية على Switches وروابط Full-Duplex فلا تعمل عادة ضمن Collision Domain مشترك مثل شبكات Hubs القديمة، لكن بنية الإطار الأساسية بقيت متوافقة مع تصميم Ethernet. ولشرح التقنية ككل بعيدًا عن تفاصيل الحقول فقط، راجع كيف يعمل Ethernet وفق IEEE 802.3.
FCS وCRC: ما الفرق بين المصطلحين؟
يُستخدم المصطلحان معًا كثيرًا، لكنهما ليسا الاسم نفسه للشيء نفسه تمامًا:
- CRC — Cyclic Redundancy Check: الآلية الرياضية المستخدمة لحساب قيمة التحقق.
- FCS — Frame Check Sequence: الحقل الموجود في نهاية Ethernet Frame والذي يحمل نتيجة التحقق.
يبلغ طول FCS في Ethernet أربعة بايت، وتعتمد Ethernet على CRC-32 لكشف أخطاء البتات التي قد تحدث أثناء النقل.
كيف يحدث التحقق؟
- يحسب الطرف المرسل قيمة CRC المناسبة لمحتوى الإطار.
- تُرسل قيمة FCS في نهاية الإطار.
- يفحص المستقبل الإطار باستخدام خوارزمية CRC نفسها.
- إذا فشل فحص FCS، يُعامل الإطار على أنه تالف ولا يُسلّم كإطار سليم للطبقات الأعلى.
ليس الهدف من CRC تحديد مكان البت التالف أو إصلاح البيانات. وظيفته الأساسية هي اكتشاف أخطاء النقل.
هل CRC يوفر حماية أمنية من التلاعب؟
لا. وجود CRC صحيح لا يثبت أن البيانات جاءت من جهة موثوقة ولا يمنع مهاجمًا قادرًا على تعديل الإطار من حساب CRC جديد بعد التعديل.
لذلك يجب عدم الخلط بين كشف التلف العرضي وبين Integrity وAuthentication الأمنيتين. فعند الحاجة إلى حماية Ethernet على مستوى MAC توجد تقنيات مختلفة مثل IEEE 802.1AE MACsec، الذي يحدد آليات لحماية سرية البيانات وسلامتها ومصادقة مصدرها على الوصلة.
ماذا يحدث بعد اكتشاف Frame تالف؟
في Ethernet العادي، الإطار الذي يفشل في FCS يُسقط بدل محاولة تصحيح البتات داخله. Ethernet نفسها لا تعني تلقائيًا أن الإطار نفسه سيُعاد إرساله على طبقة MAC.
ما يحدث لاحقًا يعتمد على البروتوكولات الموجودة فوقها. اتصال TCP قد يلاحظ فقد البيانات ويعيد إرسالها وفق آلياته، بينما التطبيقات المبنية على UDP لا تحصل على إعادة إرسال من UDP نفسه وقد تستخدم آلية خاصة بها إذا كانت تحتاج إلى ذلك.
ولا يجب تعميم هذا السلوك على جميع تقنيات Layer 2؛ فمثلًا بعض الشبكات اللاسلكية لديها آليات ACK وإعادة إرسال على مستوى الرابط.
MTU ليس هو حجم Ethernet Frame
من أكثر الأخطاء شيوعًا مساواة MTU بحجم Ethernet Frame كامل.
عندما تكون قيمة Ethernet MTU الشائعة 1500 بايت فهي تشير إلى حجم البيانات التي تستطيع خدمة Ethernet حملها للطبقة الأعلى في الحالة المعتادة، وليست مجموع جميع حقول الإطار على السلك.
بالنسبة إلى Ethernet Frame أساسي غير موسوم:
| المكوّن | الحجم الأقصى المعتاد |
|---|---|
| Ethernet Header | 14 بايت |
| Payload / MTU | 1500 بايت |
| FCS | 4 بايت |
| المجموع | 1518 بايت |
كما أن Preamble وSFD وInter-Packet Gap قد تؤثر في مقدار السعة المستهلكة فعليًا على الوصلة، لكنها لا تُضاف ببساطة إلى رقم 1518 عند الحديث عن حجم MAC Frame الأساسي.
هل Jumbo Frame يعني دائمًا 9000 بايت؟
مصطلح Jumbo Frame يُستخدم عمليًا لوصف Ethernet Frames التي تسمح بحمولة أكبر من MTU التقليدي البالغ 1500 بايت، لكنه لا يحدد رقمًا عالميًا واحدًا يجب أن تستخدمه جميع الأجهزة.
القيمة 9000 بايت شائعة كـJumbo MTU في بعض البيئات، وقد ترى أجهزة تتحدث عن أحجام إطارات مثل 9216 بايت أو قيم أخرى. وتشير إرشادات IETF الخاصة باختبارات Ethernet إلى أن Jumbo Frames تقع خارج الحجم الأساسي التقليدي لـIEEE 802.3 وأن الحجم المدعوم يعتمد على الجهاز قيد الاستخدام.
لذلك لا يكفي أن تدعم بطاقة الشبكة Jumbo Frames. إذا كنت تريد استخدامها فعليًا، يجب أن تكون الأجهزة والواجهات الموجودة على المسار المطلوب متوافقة مع الحجم المختار، وإلا قد تظهر مشاكل في الاتصال أو إسقاط الإطارات.
لماذا لا أرى FCS في Wireshark؟
قد تفتح Wireshark وتجد Destination وSource وEtherType وبقية البيانات، لكن لا ترى الحقل FCS الذي تعلمت للتو أنه موجود في Ethernet Frame.
هذا لا يعني أن Ethernet توقفت عن استخدامه.
توضح وثائق Wireshark الخاصة بـEthernet أن بطاقة الشبكة أو برنامج التشغيل لا يسلّمان Preamble عادة إلى برنامج الالتقاط، كما أن كثيرًا من واجهات Ethernet تتحقق من FCS ثم لا تمرره إلى نظام التشغيل. ولهذا قد لا يستطيع Wireshark عرضه في الالتقاط العادي.
هذه نقطة مهمة جدًا عند تحليل الشبكة: ما يظهر في ملف Packet Capture ليس بالضرورة نسخة حرفية من كل بت أُرسل على الوسط الفيزيائي. قد يعالج العتاد بعض الحقول قبل وصول البيانات إلى برنامج الالتقاط.
كيف تقرأ Ethernet Frame في Wireshark؟
عند فتح إطار Ethernet التقطه Wireshark، ابدأ بهذه الحقول:
- افحص Destination MAC لمعرفة الجهة التي يستهدفها الإطار.
- افحص Source MAC لمعرفة المرسل على مستوى الوصلة.
- افتح Type لتحديد البروتوكول المغلف مثل IPv4 أو IPv6 أو ARP.
- إذا ظهر 802.1Q، افحص VLAN ID ومعلومات Tag قبل الوصول إلى EtherType الداخلي.
- لاحظ طول الإطار والـPadding عند تحليل Frames قصيرة.
- إذا كان FCS متاحًا في الالتقاط، يستطيع Wireshark إظهار حالته، لكن غيابه عن العرض أمر طبيعي في كثير من الأجهزة.
الخلاصة
الـ Frame هو غلاف طبقة الربط الذي يسمح بنقل بيانات الطبقات الأعلى عبر وصلة محددة، لكن بنية هذا الغلاف تعتمد على التقنية المستخدمة. وعند استخدام Ethernet كنموذج، تبدأ MAC Frame بعنوان الوجهة ثم عنوان المصدر، يليهما Length/Type، ثم البيانات والحشو عند الحاجة، وتنتهي بـFCS المستخدم لاكتشاف أخطاء النقل.
وتوجد عدة تفاصيل تمنع الالتباس عند دراسة هذه البنية: Preamble وSFD يسبقان MAC Frame لكنهما ليسا جزءًا من حجم 64–1518 بايت الأساسي، وEtherType ليس دائمًا مجرد «نوع البروتوكول» لأن الحقل نفسه يمكن أن يمثل Length، و0x8100 قد يدل على VLAN Tag، و1500 بايت MTU لا تعني أن حجم الإطار الكامل هو 1500 بايت.
بمجرد فهم هذه الحدود يصبح تحليل Ethernet في Wireshark أسهل بكثير، وتصبح العلاقة بين Frame وMAC وPacket والطبقة الفيزيائية واضحة بدل التعامل معها كمصطلحات منفصلة.