مقدمة كتاب Interconnections: Bridges, Routers, Switches, and Internetworking Protocols

كتاب Interconnections يتكلم عما يدور داخل الصناديق التي تقوم بنقل المعلومات Data من مكان الى اخر حول العالم. هذه الصناديق غالبا ما تسمى Routers, Switches, and Hubs. هذا الكتاب ايضا يتحدث عن الاجهزة التي تتصل بالشبكة.

يوجد الكثير من الخلط في هذا المجال. اغلب المصطلحات معرفة بطريقة سيئة ويتم استخدامها بصورة متضاربة. المصطلحات وتفاصيلها غالبا ما تكون مثيرة للخوف. بعض المعلومات متوزعة ما بين العديد من ال Documents, غالب المعرفة هي ما يسمى بالخبرة الجماعية غير المكتوبة. وما يزيد الارتباك هو ال Dogma, اي الافكار التي تؤخذ على انها حقائق لا يمكن مناقشتها والتي ان تم التشكيك فيها فانك غالبا ما تواجه دفاع عدائي. لكن التفكير الهندسي الصحيح يتطلب منا ان نفهم ما اذي نقوم به ولماذا, ان نتمتع بفكر منفتح, وان نتعلم من الممارسة.

في كتاب Interconnections, الطبعة الثانية, بدل ان اغوص مباشرة في تفاصيل ال Protocols, فانني في البداية اقوم بالتركيز على المشكلة التي نحاول حلها. اقوم بمناقشة العديد من الحلول للمشكلة, واشرح ال Engineering trade-offs “اي المقايضة بصورة هندسية, بمعنى التنازل عن ميزة من اجل الحصول على اخرى”. ثم اقوم بمناقشة ما تم تطبيقه من هذه الحلول واقوم بتقديم التبرير التقني وراء كل منها.

في النسخة الاولى, كانت نيتي ان اقوم بشرح المشاكل والحلول على فرض ان الناس سوف تقوم بقراءة تفاصيل البرتوكولات. غير ان الناس استخدمت الكتاب كمرجع بالاضفة الى مصدر لفهم المشكلة وحلولها, لذا في هذا الكتاب قمت يتوثيق الكثير من البرتوكولات بتفاصيل ادق.

انا اؤمن انك لكي تفهم شئ ما بعمق, يجب ان تقارنه بشئ اخر. النسخة الاولى كانت مختصرة, كنت غالبا ما اقارن الاشياء بصورة ثنائية, نوعان من ال Bridges, ال Bridges ضد ال Routers, ال Connection-Oriented   ضد ال Connectionless Network Layer , ومثالان عن ال Connectionless وهي ال (IP and CLNP). في هذه النسخة قمت باضافة العديد من الامثلة مثل ATM, IPv6, IPX, AppleTalk, and DECnet. السبب في هذه الاضافة هي على شقين, الشق الاول هو انه هذه البروتوكولات موجودة لكن يوجد القليل من المصادر عنها. لكن الشق الاهم هو ان هذه البروتوكولات تحوي على العديد من الافكار المثيرة للاهتمام التي يجب ان لا تضيع. عندما نقوم بكتابة بروتوكول جديد, يجب ان نتعلم من الافكار السابقة, سواء كانت جيدة ام سيئة. كما ان عملية اضافة هذه التفاصيل تتطلب جهد بسيط بعد ان تم تعريف المشكلة التي نحاول حلها.

اخيرا اترك مع هذه الحكمة: اذا كان كل ما تراه هو IP, فانك لا ترا شئ.

ال IP address وال Subnet Mask

يستخدم للتواصل على الانترنيت عناوين تتكون من 32 Bit من النظام الثنائي تسمى ال Internet Protocol (IP) addresses, في هذه المقالة سوف نتحدث عن علاقة ال IP address مع ال Subnet Mask.

عندما يتم تعيين عنوان IP address لجهاز على الشبكة فأن جزء من ارقام ال IP address ال 32 تمثل عنوان الشبكة وهو الجزء الايسر من ال IP address. (الكومبيوتر على الشبكة يسمى Host) الجزء الثاني أو الجزء الايمن من ال IP address يمثل عنوان ال Host. وبالتالي فأن ال IP address يتكون من عنوان الشبكة وعنوان ال Host. هكذا نستطيع استخدام ال IP address للوصول الى Host معين ضمن شبكة معينة.

لكي تستطيع اجهزة الكومبيوتر معرفة اي جزء من ال IP address هو عنوان الشبكة وأي جزء هو عنوان ال Host يتم استخدام رقم ثاني يتكون من 32 bit من النظام الثنائي يسمى ال Subnet Mask. هذا ال Subnet Mask يستخدم لكي نعرف كم Bit من ال IP address يمثل عنوان الشبكة وكم Bit يمثل عنوان الHost.

يتم كتابة ال Subnet Mask على شكل مجموعة متتالية من الرقم 1 ثم مجموعة من الاصفار المتتالية 0, حيث تمثل الواحدات 1 عنوان الشبكة من ال IP address والاصفار عنوان ال Host.

بعض الامثلة على ال Subnet Mask :

المثال الاول :

11111111.00000000.00000000.00000000 ويكتب بطريقة ال Dotted Decimal Notation على شكل 255.0.0.0

المثال الثاني :

11111111.11111111.00000000.00000000 ويكتب بطريقة ال Dotted Decimal Notation على شكل 255.255.0.0

في المثال الاول, أول ثمانية 8 Bits تمثل عنوان الشبكة وال 24 Bits التي تليها تمثل عنوان ال Host, أما المثال الثاني فأن أول 16 Bits تمثل عنوان الشبكة وال 16 التي تليها تمثل عنوان ال Host.

ولكي نفهم كيفية استخدام الكومبيوتر لل Subnet Mask من اجل معرفة عنوان الشبكة وعنوان ال Host سنأخذ ال IP address التالي على سبيل المثال (10.34.23.134) ونقوم بتحويله الى صورة النظام الثنائي.

00001010.00100010.00010111.10000110

لمعرفة عنوان الشبكة من ال IP address اعلاه نقوم بمقارنة ال Subnet Mask مع ال IP address كل Bits على حدة وبأستخدام عملية ال AND المنطقية. عرفنا من المقالة السابقة اننا عندما نستخدم العملية المنطقية AND فأن ناتج مقارنة الصفر 0 مع الواحد 1 هو صفر 0, وناتج مقارنة الصفر 0 مع الصفر 0 هو صفر 0, والواحد 1 مع الواحد 1 هو واحد 1.

والان نأتي على تطبيق هذا المفهوم على ال IP address اعلاه مع ال Subnet Mask  الاول وكما يلي :

00001010.00100010.00010111.10000110

11111111.00000000.00000000.00000000

00001010.00000000.00000000.00000000

وعند تحويل الناتج الى ال Dotted Decimal Notation يكون لدينا جزء الشبكة هو 10.0.0.0

أما عند استخدام ال Subnaet Mask  الثاني وبالطريقة اعلاه ايضا وكما يلي :

00001010.00100010.00010111.10000110

11111111.11111111.00000000.00000000

00001010.00100010.00000000.00000000

وبالتالي يكون الناتج هو 10.34.0.0 يمثل جزء الشبكة من ال IP address, اهمية ال IP address وال Subnet Mask  سوف تظهر لاحقا ان شاء الله, المهم في هذه المرحلة هو أننا فهمنا ما هو ال Subnet Mask وكيف يستخدم.

مصنف ,

ما هو مبدأ بولين Boolean Logic ؟

مبدا بولين أو Boolean Logic يعتمد على فكرة الدوائر الرقمية التي تأخذ اشارة كهربائية واحدة أو اثنتان وبالاعتماد على هذه الاشارة الداخلة فأنها تنتج اشارة خارجة. بالنسبة لاجهزة الكومبيوتر فأن الفرق بين الاشارات الكهربائية يمثل اما بحالة التشغيل ON أو حالة الايقاف OFF. وبالتالي فعندما تدخل اشارة كهربائية الى الدوائر الرقمية هذه فأنها تتعرف على حالتها من خلال الفولتية المستخدمة أما ON حالة تشغيل أو OFF حالة ايقاف, ثم يتم التعبير عن هاتين الحالتين بالرموز الثنائية Binary أما 0 أو 1 .

مبدأ بولين Boolean Logic  هو مبدأ ثنائي يعتمد على مقارنة رقمين والخروج بنتيجة بالاعتماد على قيمة هذين الرقمين. هناك العديد من العملية المنطقية التي تعتمد على مبدأ بولين سوف نتكلم عن ثلاثة منها فقط هي ال AND و ال OR وال NOT بأستثناء عملية ال NOT  فأن عمليات بولين المنطقية تعتمد على مقارنة قيمتين ثنائية والخروج بنتيجة واحدة.

عملية ال NOT بكل بساطة تأخذ اي قيمة ثنائية Binary صفر 0 أو واحد 1 وتقوم بعكسها. عملية ال AND تأخذ قيمتان ثنائية وتقارنها, اذا كان كلا الرقمان واحد 1 تكون النتيجة واحد 1, اي شئ غير هذا تكون النتيجة صفر 0. عملية ال OR تأخذ قيمتان ثنائية وتقارنها, اذا اي الرقيمن واحد 1 تكون النتيجة واحد 1, فقط اذا كان كلا الرقمان صفر0 تكون النتيجة صفر 0 كما هو مبين في الجدول ادناه:

لاحظ ان هذه العمليات المنطقية تتم باستخدام دوائر الكترونية خاصة مصنعة لهذا الهدف فقط تسمى الدوائر المنطقية Logic Gates .

العملياتان التي تحتاج الى مبدأ بولين Boolean Logic في عالم الشبكات هي ال Subnet Masking  وال Wild Card Mask ( سوف نتكلم عنها لاحقا ان شاء الله )

 

مصنف , ,

ما هي عناوين الحاسبة IP Addresses وكيفية تمثيلها ؟

عناوين الحاسبة أو ال Internet Protocol Address هي عناوين رقمية تستخدم من اجل ايصال معلومة معينة الى وجهة ما, سواء كانت هذه الوجهة جهاز كومبيوتر أما طابعة أو اي جهاز شبكة اخر.

حاليا العناوين المستخدمة من قبل اجهزة الكومبيوتر يبلغ طولها 32 bits. ولجعل التعامل مع هذه الارقام اسهل تم التعبير عنها بالنظام العشري وتقسيمها الى مجموعات, حيث تم تقسيم الرقم الثنائي الى اربع مجموعات من ثمانية ارقام ثنائية ( 4 * 8 = 32 ), ثم تم تحويل كل مجموعة الى ما يقابلها من من الاعداد العشرية.

عملية تحويل الارقام الثنائية الى ارقام عشرية هنا تمت باستخدام طريقة تحويل الارقام الثنائية الى العشرية التي تكلمنا عنها سابقا في هذه المقالة, وليس باستخدام طريقة المقالة السابقة في التعبير عن عناوين ال MAC Addresses التي تتضمن تحويل كل اربعة ارقام ثنائية الى رقم سادس عشري او او رقمان عشريين.

وبالتالي فأننا عندما نقوم بكتابة عناوين ال IP Address تكون كما هو مبين في المثال التالي 10.15.129.201. هذه الصيغة تسمى Dotted Decimal Notation, هذه الصيغة هي التي نستخدمها حاليا في التعبير عن IP address لذا من الضروري فهم كيفية التعامل معها.

نلاحظ ان طريقة ال Dotted Decimal Notation تستخدم الارقام العشرية للتعبير عن كل مجموعة من ثمانية ارقام ثنائية وبذلك فأن هذه الارقام العشرية تتراوح قيمها ما بين ( 0 الذي يمثل الارقام 00000000 والرقم 255 الذي يمثل الارقام 11111111 ), على سبيل المثال فأننا عندما نقوم بتحويل الرقم اعلاه الى الصيغة الثنائية فأنه يصبح 00001010.00001111.10000001.11001001 وهكذا.

ايضا من المهم جدا الانتباه الى ان العنوان اعلاه 10.15.129.201 هو ليس عنوان الحاسبة بل هو طريقة للتعبير عنه (طريقة ال Dotted Decimal Notation ) لكي نفهم نحن البشر اما الحاسبة فأنها ننعامل مع الصيغة الثنائية (00001010.00001111.10000001.11001001)

مصنف ,

تحويل الارقام من النظام السادس عشري الى النظام الثنائي

تحويل الارقام من النظام السادس عشري الى النظام الثنائي هي مهمة يومية حين التعامل مع اعدادات التسجيل Configuration Register  لاجهزة سيسكو. اجهزة سيسكو لديها Configuration Register بطول bits 16 ( لاحظ ان ال bits يتم التعبير عنها باستخدام الارقام الثنائية ) . يمكن التعبير عن هذه ال 16 Bits اما باستخدام ستة عشر رقم ثنائي او باستخدام اربعة ارقام سادس عشرية. على سبيل المثال الرقم 0010000100000010 الثنائي يعادل الرقم 2102 بالنظام السادس عشري (سوف نتكلم لاحقا عن ال Cisco Configuration Register ان شاء الله)  .

عناوين ال Media Access Control (MAC) Address المستخدمة ضمن ال Layer 2 (سوف نتكلم لاحقا عن ال MAC Address وعن ال Layer 2 ان شاء الله) تكتب في العادة باستخدام النظام السادس عشري. تستخدم ال MAC Address  مع ال Ethernet وال Token Ring ( ايضا سنتكلم عن ال Ethernet و ال Token Ring لاحقا ان شاء الله ), يبلغ طول هذه العناوين 48 bits, أو ستة Octets ( ال Octet الواحد = Byte واحد = ثمانية Bits) , أخذ ال Octet اسمه من الرقم الاغريق Oct الذي يعني ثمانية.

بما ان ال Octet هو ثمانية Bits وال MAC Address يبلغ 48 Bits لذا يمكننا ان نعبر عن ال MAC Address با 6 Octets, وبما ان ال MAC Address يكتب بالارقام السادس عشرية حيث يمثل كل رقم سادس عشري اربعة 4 Bits (كما سيظهر ان شاء الله لاحقا من الجدول ادناه ) لذا يمكننا ان نعبر عن ال MAC Address با 12 رقم سادس عشري كما هو مبين في المثال التالي :

بدلا من كتابة الرقم التالي بالنظام الثنائي (10101010.11110000.11000001.11100010.01110111.01010001) يمكنك ان تكتبه بالنظام السادس عشري مما يجعله اقصر واسهل للقراءة (AA.F0.C1.E2.77.51) لاحظ اننا عبرنا عن ال MAC Address باستخدام 6 Octets يفصل بينها ال (.) و باستخدام 12 رقم سادس عشري.

ولجعل قراءة ال MAC Address اكثر سهولة تم وضع ال (.) بعد كل اربعة ارقام سادس عشرية كالتالي ( AAF0.C1E2.7751) .

الطريقة الاكثر انتشارا لاجهزة الكومبيوتر او البرامج في التعبير عن الارقام السادس عشرية هو باستخدام الرقم صفر 0 متبوع بالرمز x كالتالي (0x) وبذا فأن اي رقم مسبوق بالرمز 0x فهو يمثل رقم سادس عشري فالمثال التالي 0x1234 يعني ان الرقم 1234 هو رقم سادس عشري Base 16.

لتحويل الارقام من النظام السادس عشري الى النظام الثنائي قم بتحويل كل رقم سادس عشري الى اربعة Bits كما هو مبين في الجدول اعلاه. على سبيل المثال لتحويل الرقم السادس عشري 0xAC الى النظام الثنائي, يجب ان تحول الرقم A أولا الذي هو 1010, ثم تحويل الرقم C الذي هو 1100, وبالتالي فأن الرقم AC هو 10101100 بالنظام الثنائي.

لاحظ من الجدول اعلاه ان كل الارقام الثنائية المكونة من اربعة ارقام ( all binary numbers with 4 digits) يمكن التعبير عنهاا برقم سادس عشري واحد, في حين نحتاج الى رقمين للتعبير عن الرقم نفسه باستخدام النظام العشري. لذا تم استخدام النظام السادس عشري للتعبير عن الارقام الثنائية بدلا من النظام العشري حيث ان رمزين سادس عشرية يمكنها وبكل سهولة ان تعبر عن ثمانية ارقام ثنائية اي ما كانت هذه الارقام في حين نحتاج الى اربعة ارقام باستخدام النظام العشري, حيث نحتاج الى رقمين عشرية للتعبير عن كل اربعة ارقام ثنائية.

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

مصنف , , ,

تحويل الارقام من الثنائي الى العشري

كما هو حال تحويل الارقام من النظام العشري الى الثنائي فأن يوجد العديد من الطرق لتحويل الارقام من النظام الثنائي الى العشري.

يتم تحويل الارقام الثنائية الى عشرية من خلال ضربها بارقام قاعدة الاس اثنان Base 2  حيث ان القاعدة هي الرقم اثنان والاس هي قيمة المكان كالتالي :

لنأخذ على سبيل المثال الرقم 01110000 = (0 * 2 ^ 0 ) + ( 0 * 2 ^ 1 ) + ( 0 * 2 ^ 2 ) + ( 0 * 2 ^ 3 ) + ( 1 * 2 ^ 4 ) + ( 1 * 2 ^ 5 ) + ( 1 * 2 ^ 6 ) + ( 0 * 2 ^ 7 ) = 112

حيث قمنا بجمع الارقام المرفوعة للقوة اثنان التي يوجد في مكانها 1.

ايضا يمكنك متابعة الفيديو التالي للفهم بصورة اكبر ان شاء الله.

مصنف ,

تحويل الارقام من العشري الى الثنائي

هناك العديد من الطرق لتحويل الارقام من النظام العشري Decimal الى النظام الثنائي Binary,  وهذه احدى هذه الطرق, الفكرة تتضمن محاولة اكتشاف الارقام المرفوعة الى القوة 2 التي اذا ما جمعت فأنها سوف تؤلف الرقم العشري المطلوب.

الارقام المرفوعة الى القوة 2 هي كالتالي :

لنأخذ على سبيل المثال الرقم 168 ونقوم بتحويله الى رقم ثنائي:

هل الرقم 168 يحتوي الرقم 128 –> نعم لذا نقوم بوضع اول رقم ثنائي وهو الرقم (1) ثم نقوم بطرح 128 من الرقم 168 (168 – 128 = 40 ), الخطوة التالية هي هل الرقم 40 يحتوي الرقم 64 –> لا لذا نضع الرقم الثنائي(0), وبعد ذلك هل الرقم 40 يحتوي الرقم 32 –> نعم لذا نضع الرقم الثنائي (1) ونقوم بطرح الرقم 32 من الرقم 40 ( 40 – 32 = 8 ), ثم هل الرقم 8 يحتوي الرقم 16 — > لا لذا نضع الرقم الثنائي (0), ثم هل الرقم 8 يحتوي الرقم 8 –> نعم لذا نضع الرقم الثنائي (1) ونقوم بطرح الرقم 8 من الرقم 8 ( 8 – 8 = 0), ثم هل الرقم صفر يحتوي الرقم 4 –> لا لذا نضع الرقم الثنائي 0, ثم هل الرقم صفر يحتوي الرقم 2 –> لا لذا نضع الرقم الثنائي 0, ثم هل الرقم 0 يحتوي الرقم 1 –> لا لذا نضع الرقم الثنائي 0.

وبذا يكون الرقم الثنائي الناتج من تحويل الرقم العشري 168 هو (10101000), لاحظ ان الارقام المرفوعة للقوة 2 التي عبرنا عنها بالرقم الثنائي واحد هي (128 , 32 , 8 ) اذا قمنا بجمع هذه الارقام (128 + 32 +8 = 168 ) نحصل على الرقم 168, وهذه هي فكرة الطريقة اعلاه اكتشاف الارقام المرفوعة الى القوة اثنان التي اذا جمعت تعطينا الرقم العشري مرة اخرى.

لاحظ ان الجدول اعلاه يمثل ثمانية ارقام مرفوعة للقوة اثنان وبالتالي فأن استخدام هذا الجدول سوف يعطي ثمانية ارقام ثنائية دائما, من الجدير بالذكر ان الجدول اعلاه يهمنا لانه يساعدنا في تحويل ال IP Address من النظام العشري الى الثنائي كما سنرى لاحقا ان شاء الله.

ماذا لوكان الرقم اكبر بكثير من الرقم 128 مثلا الرقم 650, هنا نستمر مع الارقام المرفوعة للقوة 2 وهي كالتالي ( 8 ^ 2 = 256 ) و ( 9 ^ 2 = 512 ) و ( 10 ^ 2 = 1024) .

الان هل الرقم 650 يحتوي الرقم 1024 –> لا لذا نضع الرقم الثنائي (0), ثم هل الرقم 650 يحتوي الرقم 512 –> نعم لذا نضع الرقم الثنائي (1) ونقوم بطرح الرقم 512 من الرقم 650 وهكذا نستمر كما هو مبين اعلاه حتى نصل الى النتيجة (01010001010), وحسب قوانين النظام العشري الذي تطبق ايضا على النظام السادس عشري فأن اي صفر على اليسار يهمل لذا تكون النتيجة هي (1010001010) نلاحظ ان النتيجة تتكون من عشرة ارقام ثنائية وذلك لاننا احتجنا الى استخدام عشرة مرفوعة للقوة 2 وهكذا.

من الضروري ممارسة هذه الطريقة بكثرة لاتقانها وعلى سبيل المثال استخدم هذا المثال: قم بتحويل الرقم 256 الى النظام الثنائي لاحظ ان ان الجواب يجب ان يكون 11111111.

ايضا يمكنك متابعة الفيديو التالي للفهم بصورة اكبر ان شاء الله.

مصنف ,