ما هي قواعد الترميز الأساسية Basic Encoding Rules

اقرأ في هذا المقال


في سياق بيانات الاعتماد في مرجع بروتوكول طلب الربط يتم استخدام النوع المحدد بالسياق (0x80) للاحتفاظ بكلمة مرور الربط باعتماد قواعد الترميز الأساسية (BER)، ولكن في سياق العملية الممتدة سيتم استخدامه للاحتفاظ بمعرف الكائن للطلب.

ما هي قواعد الترميز الأساسية BER

قواعد الترميز الأساسية (BER): هي مجموعة من قواعد الترميز التركيبية المجردة التي تحدد طريقة معينة يمكن بها ترميز المعلومات في شكل ثنائي، ويتم استخدامه كآلية أساسية لترميز الرسالة.

ملاحظة:“BER” هي اختصار لـ “Basic Encoding Rules”.

أساسيات قواعد الترميز الأساسية

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

من ناحية أخرى تستخدم البروتوكولات الأخرى ترميزًا ثنائيًا يكون أكثر إحكاما وفعالية، ويندرج (LDAP) ضمن هذه الفئة ويستخدم آلية الترميز اللغوي المجرد (ASN.1)، وبشكل أكثر تحديدًا طريقة قواعد الترميز الأساسية (BER) لـ (ASN.1)، وهناك عدد من قواعد الترميز الأخرى مثل: (DER) و(PER) و(CER) التي تقع تحت مظلة (ASN.1)، ولكن (LDAP) يستخدم (BER).

تستخدم عناصر (BER) بنية (TLV)، حيث يرمز (TLV) إلى النوع والطول والقيمة أي أنّ كل عنصر (BER) يحتوي على بايت واحد أو أكثر وفي (LDAP) عادةً ما يكون بايت واحد فقط، ويشير إلى نوع البيانات للعنصر بايت واحد أو أكثر يشير إلى طول القيمة، والقيمة المرمزة نفسها، حيث يعتمد شكل القيمة المرمزة على نوع البيانات والتي يمكن أن تكون صفرًا أو أكثر من البايت.

ملاحظة:“TLV” هي اختصار لـ “Tag-Length-Value”.

ملاحظة:“ASN” هي اختصار لـ “abstract syntax notation”.

ملاحظة:“LDAP” هي اختصار لـ “Lightweight Directory Access Protocol”.

ملاحظة:“PER” هي اختصار لـ “Packet Encoding Rules”.

ملاحظة:“CER” هي اختصار لـ “Constant Exchange Rates”.

عناصر قواعد الترميز الأساسية

1. نوع BER

يشير نوع (BER) إلى نوع البيانات لقيمة العنصر، حيث توفر مواصفات (BER) عدة أنواع مختلفة من البيانات ولكن الأكثر استخدامًا بواسطة (LDAP) تشمل سلسلة (OCTET)، والتي يمكن أن تكون إما سلسلة نصية أو مجرد بعض البيانات الثنائية و(INTEGER) و(BOOLEAN) و(NULL) و(ENUMERATED)، مثل عدد صحيح ولكن حيث كل قيمة له معنى خاص.

وكذلك التسلسل وهو مجموعة مرتبة من العناصر الأخرى وتشبه المصفوفة و(SET) مثل التسلسل باستثناء أن الترتيب لا يهم، كما يوجد أيضاُ عنصر (CHOICE) لكنّه يسمح عادةً بواحد من أنواع قليلة مختلفة من العناصر، وعادةً ما يكون نوع (BER) بايت واحد فقط ويحتوي هذا البايت على بيانات مرمزة فيه.

يتم استخدام البتتين الأكثر أهمية البتتان الموجودتان في أقصى اليسار نظراً لأنّ (BER) يستخدم ترتيبًا داخليًا أو شبكة كبير للإشارة إلى فئة العنصر باستخدام قيم الفئة المحتملة هذه:

أولًا: فئة 00

  • هي الطبقة العالمية، تحتوي معظم عناصر (BER) على نوع عالمي لذا فإنّ أي عنصر بنوع عام يحدد نوع البيانات التي يحتوي عليها.
  • تتضمن أمثلة الأنواع العالمية (0x01 (BOOLEAN)) و(عدد صحيح 0x02) و(0x04 سلسلة OCTET) و(0x05 (NULL)) و(0x0A (ENUMERATED)) و(0x30 (SEQUENCE)) و(0x31 (SET)).
  • الترميزات الثنائية لجميع قيم النوع هذه لها وحدتا بت أقصى اليسار مضبوطة على الصفر.

ثانيًا: فئة 01

  • هي فئة التطبيق الخاصة، وتسمح هذه الفئة للتطبيق بتحديد أنواعه الخاصة التي تكون متسقة في هذا التطبيق.
  • في هذا السياق يُعتبر (LDAP) تطبيقًا.

ثالثًا: فئة 10

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

رابعًا: فئة 11

هي الفئة الخاصة ولا تُستخدم عادةً في (LDAP).

2. طول BER

المكون الثاني في بنية (TLV) لعنصر (BER) هو الطول، ويحدد هذا الحجم بالبايت للقيمة المرمزة، وبالنسبة للجزء الأكبر يستخدم هذا ترميزاً ثنائياً مباشرًا لقيمة العدد الصحيح وعلى سبيل المثال إذا كانت القيمة المرمزة بطول خمسة بايت، فسيتم ترميزها على أنّها (00000101 ثنائي) و(0x05 سداسي عشري)، ولكن إذا كانت القيمة أطول من (127 بايت) ثم من الضروري استخدام عدة بايت لترميز الطول.

في هذه الحالة يكون البايت الأول به أقصى اليسار مضبوطًا على واحد ويتم استخدام البتات السبع المتبقية لتحديد عدد البايتات المطلوبة لترميز الطول الكامل، وعلى سبيل المثال إذا كان الطول (500 بايت) أي (hex 0x01F4) فإنّ الطول المرمز سيتكون بالفعل من ثلاثة بايت هم (82 / 01 / F4).

كما أنّ هناك نموذجًا بديلًا لترميز الطول يسمى الشكل غير المحدد، وفي هذه الآلية يتم إعطاء جزء فقط من الطول في المرة الواحدة، وعلى غرار الترميز المقسم المتاح في (HTTP)، ومع ذلك لا يتم استخدام هذا النموذج في (LDAP).

ملاحظة:“HTTP” هي اختصار لـ “Hypertext Transfer Protocol”.

3. قيمة BER

يحتوي عنصر (BER) على البيانات الفعلية للعنصر، ونظرًا لأنّ (BER) هو ترميز ثنائي يمكن للترميزات الاستفادة من ذلك لتمثيل البيانات في شكل مضغوط، وعلى هذا النحو كل نوع بيانات له شكل مرمز خاص به:

أولًا: لا شيء

عنصر (NULL) ليس له قيمة أبدًا وبالتالي يكون الطول دائمًا صفراً.

ثانيًا: OCTET STRING

يتم ترميز قيمة هذا العنصر كتسلسل للبايتات الأولية للبيانات التي يتم تمثيلها، وعلى سبيل المثال لتمثيل السلسلة (Hello) ستكون القيمة المرمزة (48 65 6C 6C 6F)، ويمكن أن يكون طول القيمة صفر بايت.

ثالثًا: منطقي

  • قيمة هذا العنصر هي دائمًا بايت واحد.
  • إذا تم ضبط جميع وحدات البت في هذا البايت على صفر (0x00) تكون القيمة (FALSE).
  • إذا تم تعيين بايت واحد أو أكثر على واحد تكون القيمة (TRUE).
  • نتيجةً لذلك هناك (255 طريقة) مختلفة لترميز قيمة (BOOLEAN) تساوي (TRUE)، ولكن من الناحية العملية يتم ترميزها عمومًا كـ (0xFF) أي يتم تعيين جميع البتات على واحد.

رابعًا: عدد صحيح

  • يتم ترميز قيمة هذا العنصر كعدد صحيح ثنائي في شكل مكمل اثنين.
  • على الرغم من أنّ (BER) نفسه لا يضع حدًا لحجم القيم التي يمكن ترميزها، فإنّ العديد من تطبيقات البرامج لها حد أقصى من أربعة أو ثمانية بايت أي قيم (32 بت) أو (64 بت صحيحًا).
  • ويستخدم (LDAP) بشكل عام بحد أقصى (4 بايت) ممّا يسمح بترميز القيم ضمن نطاق زائد أو ناقص (2 مليار).
  • يوجد دائمًا بايت واحد على الأقل في القيمة.

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

يتم ترميز قيمة هذا العنصر بنفس الطريقة تمامًا مثل قيمة العنصر الصحيح.

سادسًا: التسلسل

  • قيمة هذا العنصر هي ببساطة سلسلة من عناصر (BER) المرمزة الموجودة في التسلسل.
  • على سبيل المثال لترميز تسلسل بعنصري سلسلة ثماني بترميز النص مرحبًا وهناك تكون قيمة التسلسل المشفر هي (04 05 48 65 6C 6C 6F 04 05 74 68 65 72 65).
  • يمكن أن تكون قيمة التسلسل صفر بايت إذا لم يكن هناك عناصر في التسلسل.

سابعًا: التعيين

يتم ترميز قيمة هذا العنصر بنفس الطريقة تمامًا مثل قيمة عنصر (SEQUENCE).

في النهاية، يستخدم (BER) تنسيق (TLV) لترميز المعلومات ويشير النوع أو العلامة إلى نوع البيانات التالية ويشير الطول إلى طول البيانات التي تليها وتمثل القيمة البيانات الفعلية، كما قد تتكون كل قيمة من قيمة واحدة أو أكثر بترميز (TLV) ولكل منها معرفها وطولها ومحتوياتها.


شارك المقالة: