RSS

التقنيات المستخدمة في بناء المواقع

قبل التذكير في بناء موقع على شبكة الإنترنت لا بد من النظر أولاً إلى التقنية التي سيتم استخدامها في بناء الموقع وحتى نتعرف على تلك التقنيات فإننا لابد أن نشير إلى نوعين أساسين من المواقع :
مواقع ثابتة (static web site): وهي المواقع ذات الصفحات الثابتة التي لا تتغير.بحيث يتم تصميمها ونشرها على الإنترنت بنفس الأسلوب المستخدم في طباعة البروشورات والنشرات ويطلق على تلك المواقع عادة ( مواقع بروشور)
مواقع دينامكية (Dynamic Websites): وهي تلك المواقع التي تحتوى في طياتها معلومات متغيرة يتحكم فيها صاحب الموقع بحيث يتم التحديث المستمر في تلك المواقع وبشكل دائم كما أنها تملك إمكانية التفاعل مع زائر الموقع من خلال النماذج والمنتديات ونحوها مما يعطيها روحا وحيوية وحركة.

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

التقنيات المستخدمة
لبناء أياً من المواقع السالفة ذكرهما فإن هناك ثلاث تقنيات أساسية:
استخدام برامج التصميم الخاصة بمواقع الإنترنت كـ (Front page)ونحوها وتستخدم هذه التقنية في بناء المواقع الصغيرة و الثابتة التي تم الحديث عنها سابقا والحقيقة أن هذه التقنية هدفها الأساسي تصميم الموقع وليس بنائه واستخدامها في بناء المواقع أكبر خطأ يمكن ارتكابه لأنها ستنتج مواقع ثابتة غير متغيرة ولا متفاعلة مع زوارها كما أن تكلفة تعديلها وبنائها عالية جداً.
استخدام الصفحات الدينامكية (Dynamic Web Pages): وهي تلك الصفحات التي يتم بنائها بإحدى لغات الويب “Scripting Language”والتي تعمل على ربط الموقع الذي تم تصميمه مع قاعدة بيانات خاصة بالموقع لجلب المعلومات الخاصة أولاً بأول، وتلك المعلومات يتم عادة تحديثها من قبل صاحب الموقع وذلك من خلال لوحة تحكم تخوله من التحكم في النطاق الذي سمح به المبرمج، وأيضاً حسب حاجته التي تم تحديدها عند بناء الموقع.
كما يوفر هذا الأسلوب إمكانية التحديث المستمر للمعلومات كما تمكن زوار الموقع الذي تم بنائه بهذا الأسلوب من التفاعل معه بشكل جيد.
إلا أن هذا الأسلوب يتم استخدامه عادة في المواقع الصغيرة ومتوسطة الحجم ولا يصلح إطلاقا للمواقع الكبيرة التي يزداد حجم المحتوي فيها يوما بعد يوم كما تزداد زيارات الزوار وتفاعلاتهم أيضا.
استخدام تقنيات حلول إدارة المحتويات (CMS) وهي تلك التقنيات التي تساعد ليس في بناء موقع ضخم على شبكة الإنترنت فحسب بل أنها تساعد في إدارة المعلومات التي يتم تداولها من خلال الإنترنت وغيرها من وسائل النشر وبما تشمله هذه الإدارة من مستخدمين وصلاحيات ودورة عمل ونحو ذلك. أنها ببساطة نشرة الكترونية مصغرة تجعل بالإمكان التحكم الكامل بالمحتوى مهما كان حجمه ومهما كان عدد من يعملون في إعداده وتأليفه كما أنها تحدد صاحب الموقع من سيطرة المبرمج أو المصمم أو قيود البرمجة المزعجة حيث تعطي له الحرية الكاملة الفصل بين المحتوى التصميم والتحرك بين الصفحات وتوزيع المحتوي فيها.

عوامل اختيار التقنية الثابتة:
أولا: التكلفة والميزانية المحدودة لذلك.
ثانيا: حجم المحتوى وعدد الزوار المتوقع ونوعيتهم.
ثالثا: الخدمات المقدمة من قبل الموقع ومدى مشاركة الزوار.
 رابعا: الهدف الأساسي من الموقع.     

منقول 

  

Advertisements
 
التعليقات على التقنيات المستخدمة في بناء المواقع مغلقة

Posted by في 2011/10/23 in تصميم مواقع

 

النظام العددي الثنائي Binary system

الحاسوب, ذلك الجهاز الذي يقوم بتلك الحسابات الخارقة, ويقوم بالتخزين والاسترجاع, والمحاكاة والتنفيذ, ذلك الجهاز الذي قلما تجد منزلاً لا يحتويه, الذي أصبح ضرورة من ضروريات الحياة اليومية ! , ألم تتساءل يوماً: ” سبحان الله, كيف يقوم بكل هذا ؟”
في موضوعنا هذا, سنتحدث بشكل مُبسط ومختصر عن أهم أساسيات عمل الحاسب الآلي, وهي الأعداد الثنائية (Binary number ), والتي تعتبر – تجاوزاً – لغة الحاسب الآلي, فكما يوجد للعرب لغة تتكون أبجدياتها من 28 حرفاً ( أ – ي ) , وللإنجليز لغة تتكون أبجدياتها من 26 حرفاً ( A – Z ) , كذلك الحاسب يمتلك لغة تتكون أبجدياتها من حرفين ( 0 , 1 ) , أو ( ON , OFF ) , أو بمعنى أكثر وضوحاً ( يوجد تيار , لا يوجد تيار ), وهذه اللغة كما ذكرنا تعرف باسم: الأعداد الثنائية… 

* تمثيل الأعداد الثنائية:

أعتقد الآن أنك تتساءل: ” ماذا يعني للحاسب يوجد تيار أم لا ؟ وماذا يفهم من ذلك ؟ ” , في الحقيقة كما هو الحال في لغة العرب فالألف لوحدها قد لا تعني شيئاً وكذلك الحال مع أختها الباء, ولكن عندما نجمعهم سويةً تتشكل لنا جملة مفهومة عند العرب وهي (أب) , وكذلك هو الحال مع الحاسب فمن خلال تشكيل مجموعة من الـ(1 , 0 ( يتمثل لنا رقم أو كلمة معينة, فعلى سبيل المثال: عندما نريد تمثيل العدد واحد بواسطة الأعداد الثنائية فإنه يتم تمثيله بهذا الشكل ( 01 )…

ومما تجدر الإشارة إليه, إننا عندما نريد أن نمثل عدداً ما, فإننا نكون محصورين بعدد معين من الـBit , وكل واحد أو صفر هو في الحقيقة عبارة عن ( one bit ) , وللتوضيح أكثر سنمثل الآن العدد واحد بواسطة ( 5 bit ) والتي ستكون بالشكل التالي (00001) 

كما ذكرنا, إننا محصورين بعدد معين من الـBit عندما نريد تمثيل عدداً ما, وليتضح الموضوع بشكل أكبر الآن سنمثل العدد 15 بالأرقام الثنائية والتي تكون كالتالي (1111) , نلاحظ إنه تم تمثيلها بواسطة (4 bit) , إذاً عندما أطلب منك أن تمثل لي العدد 15 بواسطة (3 bit) هل تستطيع ؟ .. في الحقيقة لا تستطيع وذلك لأنك لا تمتلك عدداً كافياً من الـBit, فكما لاحظنا إن العدد 15 يحتاج إلى (4 bit) أو أكثر لتمثيله لذا الـ(3 bit) لا تستطيع أن تقوم بهذه العملية…

قد تتساءل: ” كيف لي أن أعرف الأعداد التي أستطيع تمثيلها بواسطة عدد معين من الـBit ؟ ” , هناك معادلة رياضية بسيطة للإجابة على هذا السؤال, فمثلاً: عندما يكون لديك ( n bit ) حيث n هو رقم موجب متغير, فإنك تستطيع تمثيل الأعداد من العدد صفر إلى العدد (2^n) – 1, – حيث علامة ^ تعني مرفوع إلى الأس n – ولنجرب مثالاً عملياً على ذلك, ولنفرض إننا نريد أن نعرف الأعداد التي نستطيع تمثيلها بواسطة ( 3 bit ), فمن خلال المعادلة نجد إنها من العدد صفر إلى العدد سبعة…

– الأرقام الثنائية التي نستطيع تمثيلها بواسطة (3 bit –

* من الثنائي إلى العشري:

والآن قد تتساءل لتقول: ” ما هذا ؟ كيف سأحفظ مجموعات مكونة من الصفر والواحد لأعرف ماذا تعني؟ “, نجيبك بهدوء لنقول لك: يا أخي العزيز هّون عليك فليس هناك داعٍ للحفظ, توجد هناك عملية حسابية صغيرة نستطيع من خلالها معرفة العدد العشري من العدد الثنائي, ولنأخذ على سبيل المثال هذا العدد الثنائي (011001), في الحقيقة أنا الآن لا أعلم ماذا يُمثل هذا الرقم في الأعداد العشرية ! , ولكن أنا وأنت بعد قليل سنكتشف ماذا يمثل هذا الرقم, بالطريقة التالية:-

كما ترى, العملية بسيطة جداً, مجرد حسابات بالطريقة ذاتها مع إي رقم ثنائي أخر , ولتثبيت المعلومات سنقوم بهذه العملية مع العدد الثنائي (1111) والذي قلنا سابقاً إنه يمثل العدد 15 , لنرى هل ما قلناه كان صحيحاً أم لا ؟…

2^3 + 2^2 + 2^1 + 2^0 = 8 + 4 + 2 + 1 = 15

* من العشري للثنائي:

جميل جداً, ولكن بالتأكيد سنواجه مشكلة أخرى وهي: كيفية معرفة العدد الثنائي الذي يمثله ذلك العدد العشري؟, ولكن لا تخف بواسطة عمليات قسمة بسيطة نستطيع استخلاص العدد الثنائي من العشري, وذلك بقسمة العدد العشري على اثنين, في حالة لا يوجد باقي للقسمة يصبح العدد صفر, وفي حالة وجود باقي للقسمة يصبح العدد واحد, وهكذا نكرر عملية القسمة إلى أن نصل إلى الناتج صفر..أعلم إن الموضوع يبدو معقداً قليلاً , ولكن بالمثال العملي التالي ستتضح الفكرة – بأذن الله -, ولنفرض إننا نريد معرفة العدد الثنائي الذي يمثل العدد 41 , ببساطة نقوم بعمليات القسمة السابق ذكرها للحصول على الناتج:


كما رأينا, الطريقة بسيطة جداً والأمر مماثل لأي عدد عشري أخر نرغب في تمثيله ثنائياً, ولتأكد من صحة الحل نقوم بطريقة التحويل من العدد الثنائي للعشري للناتج الذي حصلنا ( 101001 ) عليه لنرى هل هو مطابق للعد 41 أم لا ؟ , وعند تطبيق هذه الطريقة نجد إن الناتج عبارة عن جمع لـ( 32 + 8 + 1) والذي يكافئ العدد 41…

* جمع الأعداد الثنائية:

والآن بعد أن تعرفنا على مجموعة من أهم الأساسيات في عالم الأعداد الثنائية, سننتقل إلى واحدة من أهم العمليات التي يُمكن تطبيقها على الأعداد الثنائية وهي عملية ( الجمع ) , فلنفرض مثلاً إن لدينا ( 3 bit ) وإننا نريد أن نجمع العدد 1 مع العدد 2 بواسطة الأرقام الثنائية, وأيضاً نريد أن نجمع العدد 3 مع العدد 3, كيف نقوم بهذه العملية ؟..ببساطة, نقوم بالطريقة التالية:

ماذا حدث؟ في المثال الأول ( 1 + 2 ) , أضفنا ( 1 + 0 = 1 ) , وأيضاً ( 0 + 1 = 1 ) , وأخيراً ( 0 + 0 = 0 ) , وبالتالي أصبح الناتج ( 011 ) , ولكن ماذا حدث في المثال الآخر ؟ أولاً ( 1 + 1 = 2 ) ولكن كيف؟ لا يوجد الرقم 2 في الأعداد الثنائية ! , إذاً لنراجع معاً كيفية الجمع في الأعداد العشرية ولنجمع مثلاً: 19 + 11 , في المرة الأولى نجمع (9+1=10) , ولكن في الحقيقة نحن نضع 0 , ويبقى معنا في اليد واحد نضيفه في عملية الجمع التالية والتي هي ( 1 + 1 = 2) , ونضيف عليها الـ1 الذي معنا باليد فيصبح لدينا العدد (30) , وكذلك نفعل مع الأعداد الثنائية ( 1 + 1 = 0 ) ولكن يبقى معنا واحد نضيفه في عملية الجمع التالية والتي هي ( 1 + 1 + 1 = 1 ) وكذلك يبقى لدينا في اليد واحد نضيفه في عملية الجمع التالية ( 0 + 0 + 1 = 1 ) , وهاهي الطريقة مع أي عدد ثنائي آخر…

* تمثيل الأعداد الثنائية السالبة:

تحدثنا عن الأعداد الثنائية ( الموجبة ) , ولكن ماذا عن الأعداد السالبة ؟ , هناك ثلاثة طرق للتعامل مع الأعداد الثنائية السالبة وهي ( sign magnitude ) , ( one’s complement ) , ( two’s complement ) , سنتحدث الآن عن الطريقة المُثلى للتعامل وهي الأخيرة (two’s complement ), والتي سنقوم بالتعامل معها بالشكل التالي:

نقوم بتمثيل العدد الموجب أولاً ( بالطريقة السابقة ) , ومن ثم نقوم بقلب جميع الأعداد ( الصفر للواحد , الواحد للصفر ), وأخيراً نُضيف إليها واحد فنحصل بالتالي على تمثيل العدد السالب, وليتضح الأمر لنفرض إننا نريد تمثيل العدد ( -1 ) والعدد (-3) بواسطة ( 3 bit ) – أنظر للشكل التالي – :

كما رأينا, الطريقة ثابتة مع أي عدد ثنائي أخر نرغب في تمثيله بالشكل السالب, ولكن هناك عدد من الملاحظات المهمة أثناء تعاملنا مع الأعداد السالبة والتي لابد أن تنتبه لها وهي كالآتي:-

– كما رأينا في تمثيل الأعداد الثنائية الموجبة, كنا محصورين بعدد معين من الـbit , وتعرفنا على المعادلة التي تخبرنا بالأعداد التي نستطيع تمثليها بواسطة عدد معين من الـbit , في تمثيل الأعداد الثنائية السالبة سيتكرر الأمر ذاته, ولكن مع اختلاف طفيف بالمعادلة , لماذا ؟ .. لأننا بواسطة ذلك العدد من الـbit , لن نُمثل فقط الأعداد الموجبة , ولكن سنقوم بتمثيل الأعداد الموجبة والسالبة معاً وذلك باستخدام المعادلة التالية: ولنفرض إن لدينا (n bit) , إذاً الأعداد التي نستطيع تمثيلها هي:

 من ( -2^(n-1) ) إلى ( 2^(n-1) – 1 ), ذلك يعني إن الأعداد التي نستطيع تمثيلها بواسطة (3 bit) في الـ(two’s complement ), هي من: ( -2^2 ) إلى ( ( 2^2) – 1) أي: من -4 إلى 3 , ونلاحظ هنا الاختلاف بين تمثيل الأعداد الموجبة والسالبة, حيث كانت الأعداد التي نستطيع تمثيلها بواسطة (3bit) في الأعداد الموجبة هي: من 0 إلى 7
– في نظام الـ(two’s complement ), نستطيع تمييز هل العدد سالب أم موجب من خلال النظر إلى الخانة الأولى من اليسار, فإن كان الرقم بـ0 , فهو في الحقيقة يمثل عدد موجب, وإن كان الرقم بـ1 , فإنه يمثل عدداً سالباً..


– لنستطيع معرفة العدد الثنائي السالب ماذا يمثل في النظام العشري, لا نستطيع استخدام الطريقة التي تعرضنا لها سابقاً (التحويل من ثنائي لعشري ) مباشرةً , ولكن نرى إن كان العدد سالباً ( بالنظر إلى أول خانة على اليسار كما ذكرنا ) , نقوم بعملية الـ(two’s complement ) له, وذلك من خلال القلب والإضافة بواحد – كما ذكرنا – لنحصل على العدد الموجب الذي يمثله ذلك العدد السالب, وبعد ذلك نقوم بالعملية السالف ذكرها وهي: التحويل من ثنائي لعشري, فعلى سبيل المثال نريد أن نعرف العدد السالب التالي ( 1011 ) ماذا يمثل؟ — أنظر للشكل التالي: 

– أخيراً, انتبه ألا تختلط عليك الأمور, فمثلاً عندما أسالك ماذا يمثل العدد التالي ( 111 ) , في الحقيقة الأمر يعتمد على النظام الذي تتعامل معه, فعندما تتعامل مع أرقام ثنائية موجبة فقط فالعدد السابق يمثل العدد 7 , بينما يمثل العدد -1 في نظام الـ(two’s complement ) -كما رأينا سابقاً –

بينما العدد 7 نمثله بالـ(two’s complement ), بالشكل التالي (0111), وبالتالي يجب أن تعرف أولاً مع أي نظام تعمل, لتستطيع التعامل مع الأرقام بالشكل الصحيح..

– قد تتساءل: ” لماذا تعاملنا في بادئ الأمر مع الأعداد الثنائية الموجبة, والآن تعاملنا مع الأعداد الثنائية السالبة, ألا يجدر بنا أن نتعامل معهم بطريقة واحدة ؟ ” , في الحقيقة هناك أنظمة لا تحتاج إلى أعداد ثنائية سالبة, وبالتالي نحن نحجز مساحة للأعداد الثنائية السالبة وهي في الحقيقة لن تستخدم, وبمعنى أوضح: كما ذكرنا سابقاً الـ(3 bit) في الأعداد الثنائية الموجبة نستطيع تمثيل الأعداد فيها إلى العدد 7, بينما عندما نتعامل مع نظام الـ(two’s complement ), لن نستطيع تمثيل إلا للعدد 3 ! , وليصبح الموضوع أكثر وضوحاً, تخيل معي أنك مهندسٌ إلكتروني وطُلب منك أن تُصمم آلة حاسبة, بالتأكيد ستقوم باستعمال نظام الـ(two’s complement ), لأن آلتك الحاسبة ستحتاج إلى أعداد موجبة وسالبة, بينما تخيل لو إنه طُلب منك أن تصمم ساعة إلكترونية, بالتأكيد ستتعامل مع الأعداد الثنائية الموجبة فقط, ومن هنا يكمن الفرق…

 
تعليق واحد

Posted by في 2011/10/21 in حاسوب

 

مقدمة في الشبكات

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

* فئات الشبكات (Categories of Networks) :-
ثلاثة أنواع تختلف بالكم والحجم والمسافة والتقنية المستخدمة :-
1) الـ LAN اختصارا ً لكلمة (Local Area Network) وهي الشبكات التي يكون الاتصال فيما بين الأجهزة في نفس المكان أو ذات المبنى .. بمعنى هي شبكة محلية ذات نطاق محدود ..
2) الـ MAN اختصارا ً لكلمة (Metropolitan Area Network) أوسع من الـ LAN كأن تستخدم في نفس المدينة وهي عبارة عن مجموعة من شبكات الـ LAN
3) الـ WAN اختصارا ً لكلمة (Wide Area Network) تستخدم في الشبكات الكبيرة جدا ً كأن تكون بين دول أو قارات .. لدعمها المسافات الطويلة جدا ً ..

* أما المتطلبات الأساسية لتكوين أي شبكة :-
1) (NIC Card) وهي اختصار لكلمة Network Interface Circuit Card
2) وسائط الشبكات (Network Media)
3) موصلات الشبكات (Network Devise -Adapter-)
ذكر إيجاز بسيط عن كل متطلب :-

 1. (NIC Card) بطاقة مثبتة (Built-in) على اللوحة الأم (Mother Board) متوفرة في أغلب الأجهزة و إن لم تكن مثبتة, بإمكانك إضافتها عن طريق شراء بطاقة شبكة منفصلة .. فهي أساس الاتصال لأي جهاز وبدونها لا تستطيع الاتصال بأي شبكة في العالم .. فلو لم تكن لديك لما تمكنت من الاتصال بالإنترنت على سبيل المثال .. ونحن نعلم أن الإنترنت هو في الأساس شبكة عالمية كبيرة .. أيضا ً قد يطلق عليها البعض (Modem Card) بطاقة المودم ..

 .2-Network Media وسائط تسمح للبيانات الانتقال والتحرك من جهاز لآخر .. سواء كان هذا الجهاز كمبيوتر أو أي جهاز آخر موصل على الشبكة (Network Devise -Adapter)
* أكثر الوسائط شهرة واستخداماً :-
1. أسلاك متحدة المحور (Coaxial Cables)
2. أسلاك ثنائية ملتوية(Twisted Pair Cables)
3. أسلاك الألياف الضوئية (Fiber Optic Cables)
4. اللاسلكي (Wireless)
وسنتأتي على ذكر كل نوع من وسائط الشبكات بإيجاز :-

1- أسلاك متحدة المحور (Coaxial Cables) و يستخدم في الوصل ما بين الأطباق الفضائية والتلفاز (شبكات التلفزيون والهاتف).. 

2- أسلاك توستيد بير (Twisted Pair Cables) وهي صاحبة الاستخدام السائد في شبكات الـ LAN وأنظمة الهواتف (خطوط الهاتف و الـ DSL line)..
يهمنا معرفة أن لدينا نوعين من هذهـ الأسلاك هما :-Unshielded Twisted Pair Cable (UTP) والآخر Shielded Twisted Pair Cable (STP) .. والفرق بين النوعين هو أن النوع الأخير يتميز بوجود مادة عازلة إضافية تعمل كحجاب واقي ..
* أيضا ً نقطة يجب وضعها في الاعتبار, وهي أن النوع (UTP) يملك عدة فئات و أصناف -Categories- حيث يطلق عليها CAT1, CAT2 …. CAT7 والنوع الأكثر استخداماً من بين كل الفئات هو CAT5 .. وهو متوفر بكثرة ..
* نلاحظ في الصورة أن شكل السلك اعتدنا على رؤيته واستخدامه .. و,طالما أنك تحتاج شبكة سواءً للاتصال بصديق أو تصفح الإنترنت فبالتأكيد أنت بحاجة ٍ إليه .. ولا تنسى أنه الأكثر شيوعاً واستخداماً في وسائط الشبكات لعدة أسباب, من ضمنها التكلفة وسهولة الاستخدام أضف إلى ذلك تقليله حجم التشويش في خطوط الاتصال ..

 3- أسلاك الألياف الضوئية (Fiber Optic Cables) وكما نرى من اسمها أنها تعتمد على الضوء لذا فهي تتميز بالسرعة العالية جدا ً سواء في نقل البيانات أو كمية البيانات المنقولة الكبيرة .. ولأنها تعتمد على الليزر كضوء ٍ أساسي في عملها فبالتالي هي مكلفة جداً جدا ً ونادراً ما نرى من يستخدمها عدا الشركات الكبيرة جداً .. 

4- اللاسلكي (Wireless) وهو باختصار يعتمد على الموجات في عمله .. فالشبكات الاسلكية تستخدم الموجات الصغرى (microwave) أو موجات الراديو (radio waves) أو موجات الأشعة التحت حمراء (Infrared waves)

3. (Network Devise -Adapter) موصلات الشبكات, نطلق عليها أيضا أجهزة الشبكات .. ويُتطلب وجودها لضمان وجود شبكة لدينا .. ولدينا أجهزة عدة تتقارب في صفاتها كثيراً واختلافها عن بعضها الآخر صغير جداً .. لذا سأتطرق لها جميعاً بشكل سريع دون الدخول في التفاصيل ..

1- ريبيتر Repeaters : 

2- هَب :Hub 

3- برج :Bridge 

 

4- سوتش :Switches

5- راوتر  Routers:

* السوتش (Switches) غالبا ً ما يستخدم في الشبكات المنزلية أو في المعامل .. أيضا ً الراوتر (Routers) يُستخدم في الشبكات المتعددة والكبيرة والمختلفة الأنواع .. فلو كان لدينا شبكتان واحدة من نوع LAN و الأخرى من نوع WAN فبالتأكيد أنت بحاجة إلى استخدام الراوتر (Routers) .. أما إذا كانت لدينا شبكتان أو أكثر من نفس النوع فلا بأس من استخدام السوتش (Switches)
غالبا ً هذا هو ما يستعمل في أجهزة (موصلات) الشبكات, مرتبة حسب سهولة وكمية البيانات وحجم الشبكة المستخدمة ..

*المصادر:

Text book: Data Communication and networking by Behrouz A. Forouzan

 

  منقول من              http://knol.google.com/k/مقدمة-في-الشبكات#

 

 

 
أضف تعليق

Posted by في 2011/10/21 in شبكات

 

مقدمة فى برمجة الحاسبات (Computer Programming)

مقدمة فى برمجة الحاسبات (Computer Programming)

1. ما هو الحاسب الالــى ( الكمبيوتر)
2. مما يتكون الحاسب الالـى
§ وحدة إدخال البيانات (Input Unit)
§ وحدة معالجـة البيانات (Processing Unit)
§ وحدة إخراج البيانات (Output Unit)
§ وحدة الذاكــرة الرئيسية المؤقتة (Main Memory Unit)
§ وحدة الحساب والمنطق (Arithmetic And Logical Unit )
§ وحدة تخزين البيانات (Secondary Storage Unit) 
3. كيف يعمل الحاسب الألى
§ ماذا يعنى مصطلح (Hardware)
§ ماذا يعنى مصطلح (Software)
§ أنظمــة تشغيل الحاسب الألى وكيف تتطورت.
4. ما ذا يعنى تطوير برنامج حاسب الى (Computer Program)
1- لغــة الألــة (Machine Language)
 2- لغة الرموز (Assembly Language)
3- اللغات الراقية (High Level Languages)
5.ما هى المراحل التى يمر بها البرنامج قبل ان يكون جاهزاً للعمل.
  1- مرحلة كتابة وتحرير البرنامج (Editing)
  2- مرحلة تحويل البرنامج إلى أوامر يفهمها الحاسب (Compilation)
  3- مرحلة ربط البرنامج بما يحتاجه من أوامر ووظائف خارجية (Linking)
 -4 مرحلة تحميل البرنامج إلى الذاكرة الرئيسية لتنفيذه (Loading)
  5-مرحلة تنفيذ اوامرالبرنامج فعلياً. (Execution)

1. ما هو الحاسب الالــى ( الكمبيوتر)    [1]

الحاسب الالـى هو جهاز متطور صُمم ليساعد الأنسان فى أداء العمليات الحسابية والمنطقيــة المعقدة والتى تحتاج إلى وقت طويل ومجهود كبير لإنجازها. ليس معنى ذلك ان الإنسان لا يستطيع ان يؤدى المهام التى يؤديها الحاسب بل ان الصحيح ان الحاسب دون علم الانسان وخبرته ليس له قيمة. ولكن الحاسب لديه سرعة جبارة فى اداء المهام التى يسندها اليه الانسان , حيث ان سرعة الحاسب تقدر بملايين أضعاف سرعة الانسان. لذلك كان استخدام الحاسب ضرورياً لتوفير الوقت والجهد والتكاليف.وتتلخص طبيعة عمل الحاسب فى انه يقوم بمعالجة البيانات التى يدخلها الإنسان إليـه من مصادر متعددة وفى صور مختلفة وهو ما يطلق عليه فى علم الحاسب (Data) إلى معلومات قيمة ومفيده وهو ما يطلق عليه فى علم الحاسب (Information) مع إمكانية حفظ وتخزين كم هائل من هذه البيانات او المعلومات. فمثلاً لو اردنا ان نجعل الحاسب يقوم بعملية حسابية مثل الجمع أو الضرب او ما شابه من العمليات المعروفة , توجب علينا أولاً ان نعطيه أطراف العمليه الحسابيه ثم نبين له كيف سيقوم بحساب هذه العملية ثم نوجهه الى كيفية انتفاعنا بالناتج من هذه العملية (هل نريده ان يعرض لنا هذا الناتج على الشاشة ام نريده ان يطبعها لنا على ورقة ام نريده ان يحفظ النتيجة لحين إستغلالها فى وقت أخر). وهنا يجب ان نوضح بعض المصطلحات التى يستخدمها محترفى الحاسب الالى مثل :

1- البيانات (Data) هى كل ما يتم إدخاله الى الحاسب الألى ليقوم بتحويله الى شئ مفيد للمستخدم بعد معالجتها ببرامج الحاسب المختلفة. أو لغرض تخزينها فى صورة الكترونية يتم إستخدامها وتحويلها فيما بعد الى أشياء مهمة وذات قيمة . ويمكن تصورها كالمادة الخام التى دون معالجتها بالشكل الصحيح لا تمثل قيمة فى حد ذاتها. وللبيانات (Data) أشكال وصور مختلفة فممكن ان تكون البيانات نصوص أو ارقام وممكن ان تكون صوراً أو مقاطع فيديو وممكن ان تكون مادة صوتية وهكذا الى أخره من الصور المختلفة.
2- المعالجــة (Processing) وهو ما يتم على البيانات الخام المدخلة إلى الكمبيوتر من أجل تحويلها الى معلومات قيمة ومفيدة للمستخدم. وتتم معالجة البيانات بواسطة برامج الحاسب المختلفة والت صممت لتتعامل مع البيانات حسب طبيعتها و الصورة التى اُدخلت بها الى الحاسب.

3- المعلومات (Information) وهى الناتج المفيد القيم الذى تم انتاجه بعد معالجة البيانات الخام التى ادخلت الى الحاسب مسبقاً. وهذه المعلومات يمكن الاستفاده منها بالشكل الذى يرغبه المستخدم فمثلاً يمكن ان تكون معروضة على الشاشة وممكن ان تكون مطبوعة أو حتى من الممكن أن تكون مخزنة ومحفوظة لحين إستغلالها فى اى وقت.

مما يتكون الحاسب الالـى

تُقســم أجزاء ومكونات الحاسب منطقيا أو حسب طبيعة عملها الى ستة وحدات رئيسية وهى كالأتــى: 

1- وحدة إدخال البيانات (Input Unit)

وهى الوحدة المسئولة عن إستقبال البيانات مع إختلاف طبيعتها وصورها وتوصيلها إلى الوحدات الأخرى لتتم معالجتها. ويتم إستقبال البيانات من خلال أجهزة إدخال البيانات المناسبة لنوعية وصورة البيانات المدخلة الى الحاسب فمثلاً تستخدم لوحة المفاتيح (Key Board) إذا كانت البيانات المدخلة فى صورة نصوص أو أرقام, ويستخدم المايكروفون (MIC) إذا كانت البيانات فى صورة مادة صوتية . ويستخدم المصور الضوئى (Scanner) فى حالة إذا كانت البيانات فى صورة صور ضوئية أو صور ورقية. وهكذا كلما أختلفت نوعية البيانات يختلف الجهاز الذى يستخدم فى إدخالها إلى الحاسب. وكلما تطور الحاسب نجد ان هناك أجهزة إدخال جديدة ظهرت لتناسب الانواع المختلفة من البيانات.

2- وحدة الحساب والمنطق (Arithmetic and Logical Unit – ALU)

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

3- وحدة الذاكرة الرئيسية (Main Memory Unit)

وهى المكان الذى يتم فيه تخزين البيانات المدخلة عبر أجهزة إدخال البيانات بشكل مؤقت لحين معالجتها وإجراء العمليات الحسابية والمنطقية عليها. وايضاً تستخدم لتخزين المعلومات الناتجة من عملية المعالجة لحين إخراجها إلى المستخدم أو لحين تخزينها وحفظها بشكل دائم فى وحدات التخزين الدائمة (Secondary Storage). وتتميز هذه الذاكرة الرئيسية بأنها قليلة السعة إذا ما قورنت بوحدات التخزين الدائمة (Secondary Storage) ولكنها فى نفس الوقت سريعة جداً فى التخزين أو فى استرجاع البيانات والمعلومات المخزنة عليها. 

4- وحدة التخزين الدائم للبيانات (Secondary Storage Unit)
وتستخدم هذه الوحدة لتخزين البيانات والمعلومات بشكل دائم يُمكن من إستخدامها والاستفادة منها فى أى وقت لاحق. وتتميز هذه الوحدة التخزينية بالسعــة الضخمة التى تمكن من حفظ بلايين المعلومات وتنظيمها بالشكل المرغوب فيه ولمدد طويلة. كما تتميز أيضاً بتنوع أشكالها فمثلاً هناك ما يعرف بالهارد ديسك
 (Hard Desk) والذى يعتبر الصورة البديهية لوحدات التخزين الدائمة وعادة لا يخلو اى جهاز حاسب اّلى من هذه الوحدة وتتميز بسعتها الكبيرة جداً والتى لا تكف الشركات العاملة فى مجال تصنيعها عن زيادة أحجامها بشكل مستمر وسريع جداً. وهناك ما يعرف بالإسطوانات (Compact Drive – CD) التى تعتمد على تكنولوجيا الليز فى التسجيل عليها والقراءة منها. وهناك العديد من الأشكال الأخرى التى تُستخدم لحفظ البيانات والمعلومات بشكل ثابت يُمكن من نقلها من مكان إلى أخر.

5- وحدة التحكم المركزية (Central processing Unit – CPU )

تعتبر هذه الوحدة هى المدير لجهاز الحاسب الالى وهى المنسق لعمل الوحدات الأخرى. يمكن ان تتخيل هذه الوحدة كما لوكانت مديراً لاوركسترا تعزف سيمفونية أو لحناً . فكلاً من العازفين يستطيع ان يعزف بمفرده ولكن لن يؤدى هذا الى لحن بديعاً او عملاً فنياً ذو قيمة, ولكن ستتزاحم الأصوات وتشُز النغمات. ولكن بوجود القائد ينتظم العمل وينتج إنتاجاً مفيداً ذو قيمة. وهكذا هو دور وحدة التحكم, فهى التى تأمر وحدة إدخال البيانات (Input Unit) بأن تأخذ مدخلات وان تحفظها فى الذاكرة الرئيسية (Main Memory) بل و تحدد لها فى أى مكان فى الذاكرة سيكون التخزين.وهى التى تأمر وحدة الحساب والمنطق(ALU) بأن تأخذ البيانات المخزنة فى الذاكرة الرئيسية فى أماكن محددة وأن تُجرى عليها عمليات حسابية أو منطقية معينة. وهى التى تأمر وحدة إخراج البيانات(Output Unit) بإخراج النتائج والمعلومات الى المستخدم فى الصورة التى يرغبها المستخدم , وهى التى تقوم بحفظ الملفات والمعلومات بشكل دائم على وحدة التخزين الدائمة(Secondary Storage) وهى التى تستدعي هذه البيانات المخزنة مرة أخرى فى حالة الرغبة فى تعديلها أو إستغلالها فى غرض أخر. وهكذا فهى بالفعل العقل المدبر والمتحكم فى كل شئون الحاسب الالـى.
6- وحدة إخراج البيانات (Output Unit)

هذه الوحدة هى المسئولة عن إخراج المعلومات النهائية بعد ان تمت عليها عمليات المعالجة او مايسمى (Processing) . ويمكن ان تخرج هذه المعلومات فى صور مختلفة حسب رغبة المستخدم وحسب توفرأجهزة إخراج البيانات المناسبة (Output Devices). فمثلاً ممكن ان يكون إخراج البيانات فى صورة عرض على الشاشة او فى صورة طباعة على الطابعة او فى صورة رسومات على اجهزة الرسم الهندسى او غيرها من الاشكال المتعددة.

كيف يعمل الحاسب الألى

كما ذكرنا فى تعريفنا للحاسب الألى انه جهاز متطور صُمم ليساعد الأنسان فى أداء العمليات الحسابية والمنطقيــة المعقدة والتى تحتاج إلى وقت طويل ومجهود كبير لإنجازها. وكغيره من الأجهزة يتكون الحاسب الألى من مجموعة كبيرة من الأجزاء والوحدات التى تؤدى كل منها وظيفة ودور محددين. و يُطلق المتخصصين فى مجال الحاسب الألى على هذه الأجزاء مُجمعة مصطلح (Hardware). إذا فكلمة ال (Hardware) تعنى كل الاجزاء الاجهزة والمكونات الاساسية للحاسب الألى وتشمل على سبيل المثال لا الحصر (لوحة المفاتيح – المؤشر-جهاز قراءة الاسطوانات المدمجة- الشاشة – إلخ…) بالإضافة إلى الإجهزة الإضافية المكملة مثل (الطابعــة, السماعات, المايكروفون – إلخ …) .
ولكن كل هذه الأجهزة تحتاج الى أوامر لتشغيلها وحسن إستغلالها للوصول إلى الفائدة منها, فهى وحدها لاتمثل قيمة فى حد ذاتها لذا كان من الضرورى وجود برامج تشغيل لكل هذه الأجهزة. ويطلق المتخصصين فى مجال الحاسب الالى على هذه البرامج مصطلح (Software). إذاً فكلمة (Software) تعنى كل البرامج والاوامر التى تستخدم لتشغيل أجزاء ومكونات الحاسب وايضاً تشمل البرامج التى تعمل على معالجة البيانات المدخلة للحصول على نتائج ومعلومات مفيدة للمستخدم.
 أنظمـة تشغيل الحاسبات وكيف تتطورت
 كما اتضح لنا ان اجزاء ومكونات الحاسب الالى المختلفة الـ (Hardware) لاتعمل بمفردها ولكن تحتاج الى اوامر وبرامج لتديرها وتوظفها كما ينبغى. ولم تكن الحاسبات الالية بهذا التطور والقوة التى عليها الان فقد كانت متواضعة السرعة والسعة التخزينية وكانت تستطيع ان تؤدى وظيفة واحدة فى الوقت الواحد. بمعنى انك لو أردت ان تؤدى اكثر من عمليه حسابية مثلاً فإنه يستلزم عليك ان تأخذ دورك وتنتظر حتى يفرغ الحاسب من أداء المهمة التى شرع فيها وهكذا. لذلك كان الناس يأتون بما يريدون تنفيذه من مهام ويسلمونها للشخص المسئول عن تشغيل الحاسب والذى عادة ما يطلق عليه الـ (Computer Operator) والذى بدوره يدخل البيانات الخاصة بكل عملية إلى الحاسب الالى فى دورها بعد انتهاء الحاسب من أداء المهمة الحالية. فتخيل كيف كانت صعوبة الامر إذا اردت ان تنفذ عشرات او مئات المهام. بمرورالوقت أتضح ان إعتمادنا على العنصر البشرى الـ (Computer Operator) فى الأنتقال بين المهام التى يقوم بأداءها الحاسب الالى قد يضيع الكثير من الوقت فبدأ إشتغال العلماء بأن يعتمدوا على برنامج يقوم هو بإدارة عملية تنفيذ المهام وأطلقوا عليه إسم نظام التشغيل (Operating System) . ويمكننا تعريف نظام التشغيل (Operating System) على انه نظام اّلى(Software) لإدارة كل شئون الحاسب الالى مثل تنفيذ البرامج والاوامـر والتنسيق بين المهام لضمان استمرار عمل الحاسب بشكل منتظم ومحكم.
 تطوير برامج الحاسب الألــى 

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

كيف يتم كتابة برامج الحاسب الالى 

يتم كتابة برامج الحاسب الالى بإستخدام لغات البرمجة (Programming languages) والتى هى عبارة عن مجموعة كبيرة من الاوامر والجمل التى يستخدمها المبرمج او مطور البرنامج للتعبيرعن الاشياء والمهام التى يطلب من الحاسب تنفيذها. فهى كأى لغة بها كلمات وجمل يستخدمها مجموعة من البشر للتواصل بينهم وللتعبير عن كل ما يحتاجه أحدهم من الاخر. وقد مرت لغات البرمجة بعدة مراحل حتى تصل إلى المستوى الراقى الذى هى عليه الأن. وسنسرد أهم هذه المراحل فيما يلى :

لغة الألــة (Machine Language) 

وهى اللغة التى يفهما الحاسب الالى وينفذها مباشرة عن طريقة وحدة التحكم المركزية الخاصة به او ما يسمـى (Central Processing Unit ). وهى مرتبطة فى شكل ومعنى أوامرها بنوع الحاسب الذىستنفذ عليه هذه الاوامر بمعنى ان لكل نوع من انواع الحواسب لغة الة خاصة به لان هذه اللغات عادة ما يضع قواعدها واوامرها مصنعوا أجهزة الحاسب انفسهم.واوامر لغة الالة فى طبيعتها عبارة عن نصوص رقمية تتكون من رقمين 1 , 0 وهى الشكل الذى تفهمه اجزاء الحاسب وتخاطب بعضها بإستخدامه. وبما ان الحاسب لايفهم إلا لغة الالة المكونة من 1 , 0 توجب على مطور البرامج إستخدام نفس اللغة ليخبرالحاسب بما يريده وهو ما كان امراً فى غاية المشقة وهو ما جعل عدد المطورين للبرامج قليل جداً وبالتالى عدد البرامج الحاسوبية المطورة قليل جداً. 

لغـة الرمـوز (Assembly Languages) 

نتيجة لصعوبة التعامل بلغة الالـة (Machine Language) إتجه مطوروا البرامج الى تسهيل مهتهم فى التعامل مع الحاسب فبدلاً من إستخدام الأوامر الصعبة المكونة من 1 , 0 بدأو فى استخدام إختصارات إنجليزية سهلة للتعبير عن الاوامر الصعبة فى لغة الالـة وبعد كتابة البرنامج بإستخدام هذه الاختصارات والرموز يقوم برنامج أخر بعمل المترجم فيقوم بفك هذه الرموز وتحويل هذه الاختصارات الى لغـة الالة حتى يفهمهاالحاسب. ويطلق على هذا البرنامج المترجم (Assembler) . ونتيجة لهذا التقدم الكبير نسبياً فى هذا الوقت تطورت صناعة البرمجيات شيئاً فشيئاً لكنها ما زالت مهنة شاقة وبها الكثير من ضياع الوقت حيث انه كان يستلزم لتنفيذ مهمة واحدة كتابة الكثير من الأوامر فى صورة عدد كبير من الخطوات.

اللغات الراقيــة (High Level Languages)  

بمرور الوقت اصبح طموح مطورى البرامج يتعدى كل ما انجزوه وبدأو فى تطوير لغات برمجة تشبه اللغة التى يتحاورون بها فى حياتهم العادية وهو ما أطلق عليه مصطلح(High Level Languages) وتتميز هذه اللغات بأنها سهلة الإتقان وتستطيع بإستخدام جملة واحدة تنفيذ الكثير من الأوامر مما ادى بإستخدامها إلى زيادة الإنتاج من البرامج والتطبيقات التى يحتاجها الناس فى حياتهم اليومية. ولكن كما اتفقنامسبقاً ان الحاسب لا يفهم إلا لغة الالــة, لذا لابد من وجود مترجم يحول الجمل والاوامر المكتوبة بهذه اللغات الراقية الى لغة الالــة. ويطلق على هذا الببرنام المترجم (Compiler). وسوف نتعامل فى هذه السلسلة من المقالات مع لغة ال (C) كمثال للغات الراقيـة.

ما هى المراحل التى يمر بها البرنامج قبل ان يكون جاهزاً للتنفيذ

1- مرحلة كتابة وتحرير البرنامج (Editing)

يمر البرنامج بعدة مراحل قبل ان يكون جاهزاً للتنفيذ بداية بمرحلـة كتابة البرنامج او ما يطلق عليها مرحلة التحرير للبرنامج (Editing) وعادة ما تتم هذه المرحلة بإستخدام برامج تحريرمخصصة لكتابة البرامج والتطبيقات بلغة برمجة معينة وتسمى (Editors) وعادة ما تكون هذه البرامج مجهزة بالعديد من الوسائل المساعدة التى تجعل مرحلة الكتابة سهلة وشبه نمطية وخالية من الاخطاء النصية فى اوامر لغة البرمجة المستخدمة وهو ما يُطلق عليه (Syntax Errors). وهذه المساعدات بدورها تجعل المبرمج يصرف اهتمامه الى التفكير فى وضع الحل المناسب للمشكلة التى من أجلها كتب البرنامج دون الانشغال بأعمال التنسيق.
2- مرحلة تحويل البرنامج إلى أوامر يفهمها الحاسب (Compilation)
بعد الانتهاء من كتابة البرنامج والتأكد من سلامته من الأخطاء النصية للاوامر والجمل, يتم تحويل البرنامج الى اللغة التى يفهما الحاسب الالى او ما يسمى بلغـة الالـة (Machine Language) لانه كما ذكرنا مسبقاً ان اللغات الراقية (High Level Languages) التى يُكتب بها البرامج هى لغات لا يفهما الحاسب الالى وإنما تُستخدم لتسهيل كتابة البرامج . ويقوم بدور الترجمة والتحويل الى لغة الالــة برنامج يسمى (Compiler).

3- مرحلة ربط البرنامج بما يحتاجه من أوامر و وظائف خارجية (Linking)

ربما يحتاج البرنامج إلى إستخدام اوامر ووظائف خارجية(Functions) كانت قدتم كتابتها وتنفيذها فى برامج أخرى وهذه ميزة واسلوب مفيد جداً لتوفير الوقت والجهد والتكلفة فبدلاً من إعادة كتابة بعض الاوامر والوظائف (Functions) مرة اخرى يمكننا استغلال ما قد تم كتابته مسبقاً. ولكن اذا تم ذللك لابد من ربط البرنامج بهذه الوظائف الخارجية والتأكد من انها تعمل بكفاءة حتى يتسنى للبرنامج العمل بطريقة صحيحة أثناء عملية التنفيذ. ويطلق على عملية الربط هذه اسم (Linking) .

4-مرحلة تحميل البرنامج إلى الذاكرة الرئيسية لتنفيذه (Loading)

بعد ترجمة البرنامج من لغات البرمجة الراقية (High Level Languages) الى لغة الالة التى يفهمها الحاسب وبعد تجهيزالبرنامج بكل ما يحتاج اليه من اوامر ووظائف خارجية, اصبح البرنامج جاهزاً للتنفيذ ولكن حتى يتسنى لوحدة التحكم المركزية او ما يطلق عليه ال (Centeral Processing Unit) لابد من تحميله من وحدة التخزين الدائمــة (Secondary Storage) إلـى وحدة الذاكرة الرئيسية القريبة من وحدة المعالجة حتى يتم التنفيذ بسرعة.

5-مرحلة تنفيذ أوامر البرنامج فعلياً (Execution)

وهى المرحلة النهائية وفيها يتم تنفيذ اوامر البرنامج بالترتيب واحداً تلو الاخر حتى الانتهاء منها جميعاً وخلال هذه المرحلة يقوم المعالج او ما يسمى بالـ (Processor) بتوجيه وحدات الادخال الى استقبال البيانات اللازمة من المستخدم من خلال أجهزة الإدخال, ويوجه وحدات الاخراج الى اخراج المعلومات الى المستخدم عبر اجهزة الإخراج المناسبة وهكذا حتى ينتهى البرنامج.

 

المراجِع
C How To Program 5th Edition ISBN: 0132404168 © 2007, pp. 1112 by Deitel
http://www.deitel.com/Books/C/CHowtoProgram5e/tabid/1704/Default.aspx

 
أضف تعليق

Posted by في 2011/10/21 in حاسوب

 

الويب الدلالية : فرع من فروع الذكاء الاصطناعي

الويب الدلالية
فرع من فروع الذكاء الاصطناعي

تعرف الويب الدلالية (أو ما يطلق عليها أحيانا “الويب ذات الدلالات اللفظية” أو “الويب ذات المعنى”) (Semantic Web) على أنها “شبكة بيانات بالمعنى، أي أنه يمكن للبرامج الحاسوبية الخاصة أن تعرف ماذا تعني هذه البيانات”(رجب، 2007). ويتطلب الوصول لهذه الطريقة من التفسير والفهم للبيانات الاستعانة بالانتولوجي (Ontology)، والذي يعرف على أنه طريقة لتمثيل المفاهيم وذلك عن طريق الربط بينها بعلاقات ذات معنى، حتى تسهل ربط الأشياء الموجودة بعضها البعض ولفهم أوسع للمفاهيم المختلفة.

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

ومن هذه المشكلة ظهرت فكرة “الويب ذات الدلالات والمعاني اللفظية”، أو ما يطلق عليه بالانجليزية مصطلح “سيمانتك ويب”، والتي هي امتداد للويب الحالية ولكن تختلف عنها بأنها تتفهم مدلولات الألفاظ والمعاني البشرية.

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

وللويب الدلالية تعريفات عدة من أشهرها تعريف مخترع الويب السيد تيم برنرز لي (Tim Berners-Lee, 2001) والذي ينص على أن الويب الدلالية “… هي امتدادا للشبكة الحالية بحيث تكون للمعلومات معنى محدد، وهذا سيمكن أجهزة الحاسب والبشر على العمل في تعاون أفضل”.
أما موسوعة ويكيبديا العربية، فقد عرفت الويب الدلالية على أنها “… ثورة جديدة في عالم الويب حيث تصبح المعلومات قابلة للمعالجة من قبل الحاسبات بدلاً من كونها بشرية التوجيه في الويب الحالي. وبالتالي فإن الويب الدلالي يسمح للمتصفح أو البرمجيات العميلة بالبحث والعثور على المعلومات ومشاركتها بدلاً عنا.”

ولإضافة طبقة من الدلالات اللفظية (أي المعنى) إلى الشبكة القائمة، هناك ثلاثة تحديات تحتاج إلى تحقيق وهي (Harmelen, 2004 ) :
تركيبة واضحة لتمثيل واصفات البيانات (Metadata).
مفردات لتوصيف واصفات البيانات.
واصفات بيانات لكل صفحة من صفحات الويب.

تقنية الويب الدلالية
يتألف الويب الدلالي من نماذج بيانات (data models) تستخدم عدداً من التقنيات لتمثيلها منها:
لغة لتنسيق تبادل البيانات: مثل لغة إطار وصف المصدر (Resource Description Framework) واختصارها RDF، أو بدائلها مثل RDF/XML و N3 و Turtle و N-Triples.
مخططات العلاقات مثل (RDF Schema) ولغة وجودية الويب (Web Ontology Language) واختصارها OWL، والتي تسهل عملية توصيف المفاهيم والمصطلحات والعلاقات ضمن مجال معين.
محرك الاستدلال: والذي يحتوي على قواعد استدلالية تستخدم اللغتان السابق ذكرهما ولغات أخرى مبنية عليها لإعطاء نتائج منطقية تماما كما يفكر البشر.

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

أهمية الويب الدلالية
تكمن أهمية الويب الدلالية في تقديم معايير مفتوحة يمكن استخدامها في تكشيف محتويات مصادر المعلومات، عن طريق استخدام مجموعة من الأدوات التي تساعد في تحقيق ذلك (آل عبدالمحسن، 2008) مثل:
لغة الترميز الموسعة XML (Extensible Markup Language)، وخرائط المفاهيم أو الأنتولوجي Ontology، والمعيار العام لوصف المصادرRDF schema (Resource Describe Framework)، ولغة انتولوجيا الويب (Ontology Web Language) OWL.

أيضا تعتبر هذه اللغات معايير قياسية (Standards) متاحة للجميع ويمكن الرجوع إليها كمعيار موحد في تمثيل البيانات، وبالتالي فإن استخدامها في تطبيقات الويب الدلالية ستمنح البيانات قابلية أكثر للتبادل (Interoperability) والوصول (Accessible) من دون الحاجة لتحويلها إلى صيغة يفهمها الطرف الآخر.

إن مبادرة الويب الدلالية هي نظرة مستقبلية للشبكة العالمية ويشترك الكل في تكوينها ونجاحها. لذا فإن الأمثلة التي نطرحها تمثل رؤية مستقبلية فيما لوتحقق إنشاء الويب الدلالية. إلا أن هذه الرؤية المستقبلية لا تمنع أبدا من أن نستفيد من تقنياتها حاليا وسنبين في سياق هذا البحث ما يوضح عددا من التطبيقات التي تستخدم تقنيات الويب الدلالية لاستعراض نجاحاتها.

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

ففي المجال التجاري هناك العديد من التطبيقات والأبحاث المفيدة في هذا المجال، على سبيل المثال، تم استخدام الويب الدلالية في عمل بوابة تجارية تضم معلومات عن قطع غيار السيارات، مجلوبة من قواعد بيانات صناع وموردي ومستخدمي هذه القطع في أوروبا، وتم التوليف بين هذه البيانات باستخدام تقنيات الويب الدلالية وذلك لعمل أنتولوجي مشتركة بين جميع الأطراف المستفيدة لتوصيف بياناتها. كما تم استخدام تقنيات الويب الدلالية لإيجاد حلول لبعض المشاكل التي تحصل لقطع الغيار المعطوبة وذلك عن طريق إجراء استعلامات ذكية على البيانات الموجودة (Bryan M. and Cousins, 2008).

كما يمكن استخدام تقنيات الويب الدلالية لمساعدة الباحثين في المجال الطبي على إدارة البحوث في العلوم الطبية الحديثة، وتمكين فهم أفضل للأمراض، وتسريع عملية تطوير العلاج. فعلى سبيل المثال، قام (Oldham et al, 2006) بعمل نظام للسجلات الطبية للحد من الأخطاء الطبية، وتحسين كفاءة الطبيب مع المريض، وتحسين سلامة المرضى والارتياح في الممارسة الطبية، وتحسين عملية الفوترة لزيادة دقة الترميز. وقد استند النظام على تقنيات الويب الدلالية لتوصيف السجلات الطبية وترميزها لسرعة الوصول إليها وللقيام ببعض العمليات الاستنباطية منها. يذكر أن هذا النظام مستخدم حاليا في مركز أثينا للقلب (Athens Heart Center).

المصادر والمراجع
رجب، عبد الحميد. تقنيات الويب الدلالي للمكتبات الرقمية .- cybrarians journal .- ع 14 (سبتمبر 2007) . – تاريخ الإتاحة 28-6-2008. – موجود على العنوان: http://www.cybrarians.info/journal/no14/semantic.htm

ويكيبيديا، الويب الدلالي. تاريخ الإتاحة 28-6-2008. موجود على العنوان:
http://ar.wikipedia.org/wikiويب_دلالي/

حسين آل عبدالمحسن. نحو معالجة معلوماتية أذكى (Semantic Web) تاريخ الإتاحة 28-6-2008. موجود على العنوان:
http://www.doroob.com/?p=26668

Berners-Lee, T., J. Hendler and O. Lassila (2001). The Semantic Web. Scientific American 284(5): 34-43.

Harmelen, F. v. (2004). The Semantic Web: What, Why, How, and When. IEEE Distributed Systems Online vol. 05 (no. 3).

Bryan M. and Cousins J. (2008). Applying Semantic Web Technologies to Car Repairs. In the Book Semantic Web for Business: Cases and Applications. Information Science Reference. 

Nicole Oldham, Amit Sheth, Subodh Agrawal, Jonathan Lathem, Harry Wingate, Prem Yadav and Kelly Gallagher. (2006). Active Semantic Electronic Medical Record. 5th International Semantic Web Conference, Athens, GA, USA, November 5-9, 2006, LNCS 4273

منقول من http://knol.google.com/k/الويب-الدلالية#

 
 

مفاهيم في الشبكات – 3

مفهوم المقابس Concept of Sockets

من أجل تمكين التطبيقات من أن تتصل بشبكة حاسوب وتتبادل البيانات مع غيرها من التطبيقات عبر الشبكة نفسها، تم إنشاء مفهوم المقبس socket، كتجريد، يشبه مفهوم واصف الملف file descriptor، في سياق أنظمة التشغيل. لنتوقف أولاً قليلاً لنراجع المفاهيم السابقة من أجل أن نلخص الصورة الكبيرة بسرعة.

تتحكم البروتوكولات في عمليات الاتصال، لأنها هي التي تملي القواعد التي يجب أن يسير عليها جميع أطراف الاتصال. على الإنترنت، مجموعة بروتوكولات TCP/IP هي المسؤولة عن هذا الدور. هذه المجموعة هي عبارة عن مجموعة من البروتوكولات تتوزع على الطبقات المختلفة كما مرّ، ويجب أن يعمل عدد منها (واحد على الأقل في كل طبقة) من أجل إتمام الاتصال وتبادل البيانات. في صميم هذه المجموعة من البروتوكولات، بوتوكول الإنترنت IP، المسؤول عن توصيل الرسائل من طرف إلى آخر، عبر عدة خطوات (مروراً بعدة أطراف وسيطة). هذا البروتوكول يتطلب أن يكون لكل طرف على الشبكة معرّف فريد، أو عنوان خاص لا يتكرر مع أكثر من طرف واحد (هذا العنوان يرتبط بكرت الشبكة، وليس بالحاسوب، لذا فإن حاسوباً واحداً قد يملك أكثر من عنوان). لأن هذه العناوين مرتبطة ببروتوكول IP (هو الذي يتطلبها ويفهما)، فإنها تسمى عناوين IP.

المشكلة هنا أن حاسوباً واحداً بكرت شبكة وحيد وعنوان وحيد قد يحتاج إلى أكثر من اتصال في نفس الوقت، وهنا لم يعد العنوان الواحد كافياً لتوصيل الرسائل إلى وجهتها. المثال على ذلك حاسوب خادم server يوفر خدمة وب، وخدمة بريد، وخدمة نقل ملفات. من الواضح أن أكثر من نوع من الرسائل يصل إلى هذا الحاسوب، بعضها موجّه إلى برنامج خادم الوب، وبعضها يتصل ببرنامج خادم البريد، وآخر يتبادل الملفات مع برنامج نقل الملفات. كل الرسائل ستصل إلى نفس الجهاز (لأن له عنواناً واحداً)، لكن هذا غير كافٍ لإتمام الاتصال وتبادل البيانات بشكل صحيح ودون خلط. الحقيقة أن هذا الوضع هو الشائع هذه الأيام، حيث يكثر أن يجلس الواحد منا إلى جهازه، ويفتح متصفح الوب (ويفتح أكثر من موقع، مما يعني أنه يتبادل البيانات مع أكثر من جهاز)، وفي نفس الوقت قد يقوم بتنزيل ملف أو أكثر، وتصفح البريد أيضاً. هنا تلاحظ أن هناك الكثير من الاتصالات المتزامنة في الحاسوب الذي نجلس عليه، وفي الحواسيب الأخرى البعيدة التي نتصل بها (وغالباً، يتصل بها معنا الكثيرون من كل مكان). لا بد أن تذهب كل رسالة إلى التطبيق الذي يخصها على نفس الجهاز. كيف؟

هنا يأتي دور بروتوكولات أخرى (من نفس مجموعة بروتوكولات TCP/IP)، في طبقة أخرى (طبقة النقل). هذه البروتوكولات (في الغالب الأعم إما TCP أو UDP)، هي المسؤولة عن إنشاء الاتصال ليس بين طرفين فحسب، وإنما بين تطبيقين محددين على كل طرف. هي مسؤولة عن تمييز الرسائل الواردة (والصادرة)، وإعطاء كل ذي حق حقه. الوسيلة التي يتم بها ذلك تشبه فكرة العنونة في بروتوكول IP، لكن العناوين هنا أبسط وأقصر، وتميز فقط كل الخدمات (التطبيقات) ضمن جهاز واحد بعنوان IP واحد. العنوان لكل تطبيق في هذه الطبقة يسمى رقم منفذ port number. ولذلك تسمع كثيراً عن المنافذ المفتوحة والمغلقة في كل جهاز، والتي تعبّر في النهاية عن الخدمات المتوفرة (أو التطبيقات الشغالة) في كل جهاز. بعض أرقام المنافذ المتعارف عليها لخدمات شهيرة، منفذ 80 لخدمة الوبHTTP ، ومنفذ 25 لخدمة البريد SMTP، ومنفذ 20 لخدمة نقل الملفات FTP. تستطيع أن تجد قائمة كاملة بأرقام المنافذ على هذا الرابط: http://www.iana.org/assignments/port-numbers.

من ذلك تعرف أن التطبيقات إن أرادت أن تتواصل فيما بينها، فلا بد لها من تحديد عنوان الطرف الآخر، وعنوان التطبيق النظير على ذلك الطرف. عندما يكتب المبرمجون التطبيقات فإنهم يحددون هذه الأشياء، أو يتركون تحديدها للمستخدم، كما هو الحال في المتصفح. ربما كان من المفيد أن أذكر هنا أن المبرمج أو المستخدم قد لا يضطر لتحديد عنوان IP مباشرة (من الصعب جداً تذكر هذه العناوين)، لأن هناك نظاماً خاصاً يحول بين عناوين IP وبين أسماء أكثر تعبيراً وأسهل للتذكر تسمى أسماء الدومين domain names. المهم هنا أن هناك ثلاثة عناصر تحدد كل اتصال: عنوان IP، ورقم منفذ، ونوع البروتوكول في طبقة النقل (TCP أو UDP)، حيث يمكن أن يستخدم نفس رقم المنفذ مع أي من هذين البروتوكولين. هذه الثلاث عناصر على طرف، مع ما يقابلها من ثلاث عناصر على الطرف الثاني، تحدد اتصالاً فريداً بين تطبيقين محددين.

لقد وصلنا بالفعل إلى بيت القصيد. باختصار: مجموع المكونات الثلاثة: عنوان IP ورقم منفذ وبروتوكول محدد هو اصطلاحاً مقبس. تخيّل أن الاتصال بين تطبيقين هو عبارة عن سلك طويل في كلا طرفيه قابس plug. وتخيّل أنك تريد أن يكون هذا الاتصال بين تطبيقين محددين على حاسوبين محددين. هذا يعني أنك تريد أن تدخل القابس على أحد أطراف سلك الاتصال في مكان، وتدخل القابس على الطرف الثاني في مكان آخر. القابس يحتاج إلى مقبس socket ليدخل فيه. المقبس هنا هو مجموع عنوان الحاسوب مع رقم المنفذ مع نوع البروتوكول (منطقياً).

من ناحية تقنية، في البرمجيات التي تمثل بروتوكولات TCP/IP، يرتبط المقبس بهيكل بيانات معين data structure، إلى جانب عدد صحيح فريد يعرّف المقبس. تحتوي هياكل البيانات هذه على معلومات تتعلق برقم المنفذ للتطبيق المصدر والتطبيق الوجهة، وعنوان بروتوكول الإنترنتIP للطرف المصدر والطرف الوجهة، وربما معلومات أخرى اعتماداً على نوع المقبس. يوضح الشكل رقم 3 مفهوم المقابس، وعلاقاتها مع التطبيقات وأرقام المنافذ.

مفهوم برمجة المقابس Socket Programming Concept

البرمجيات التي تمثّل مجموعة بروتوكولات TCP/IP (هذا يعني أنها تقوم بعمل البروتوكلات) هي أساساً جزء من نظام التشغيل، لكن مبرمجي التطبيقات لهم القدرة على كتابة تطبيقات الشبكات باستخدام المقابس من خلال مكتبات واجهات برمجية خاصة، مزودة من قبل نظام التشغيل، وتضم مجموعة من الدوال التي تضع الوظيفة المنفّذة من قبل نظام التشغيل في متناول المبرمجين. تسمى هذه المكتبات واجهات برمجة التطبيقاتAPI، والمكتبة الأصل في هذا الصدد هي واجهة مقابس بيركلي Berkeley sockets API، التي بنيت على أساسها العديد من الواجهات، بما في ذلك مقابس ويندوز (WinSock). تمت كتابة هذه المكتبات بلغة سي C، لذلك فإن مبرمجي هذه اللغة مدعومين بشكل افتراضي. ومع ذلك، تملك العديد من لغات البرمجة مكتبات غنية بدوال الشبكات، والتي توفر واجهات مماثلة لتلك التي كتبت بلغة سي، مثل لغة البرمجة جافا ، وبايثون ، وبيرل.

هذه التقنية (برمجة المقابس) أساسية جداً لكتابة تطبيقات الشبكات ومنها الإنترنت، بما في ذلك جميع أدوات الشبكات التي تستخدم إما كوسيلة مساعدة في إدارة الشبكة، أو لتنفيذ تقنيات كسر/اختبار أمن الشبكات.

هناك قدر كبير من الدروس التي تشرح برمجة المقابس على الإنترنت، لكن العمل الكلاسيكي من قبل ويليام ريتشارد ستيفنز، في كتابه برمجة شبكات يونكس، الجزء الأول(Unix Network Programming, volume1)، يبقى المرجعية المعيارية لمبرمجي المقابس منذ عام 1990 ميلادي، لا سيما بعد صدور طبعته الثالثة عام 2003 (بعد وفاته في الحقيقة). 

هناك العديد من التفاصيل التي لا بد من الإلمام بها والتعامل معها عند البرمجة الفعلية مع المقابس، وبطبيعة الحال، فإن ذلك يقع خارج نطاق هذه المقالة التي تقدم للمفهوم فحسب، لكن من باب منح فكرة عن ماهية البرمجة مع المقابس عمليّاً، أختم المقال بقائمة تلخص الدوال التي توفرها مكتبة واجهة بيركلي (مترجمة من صفحة ويكيبيديا على الرابط التالي http://en.wikipedia.org/wiki/Berkeley_sockets):

socket()
تنشئ مقبساً جديداً من نوع محدد، وتعرّفه برقم صحيح، وتخصص له موارد النظام اللازمة.

bind()
تستخدم عادة في جانب الخادم، وتربط مقبساً بهيكل عنوان مقبس، مما يعني رقم منفذ محلياً وعنوان IP.

listen()
تستخدم في جانب الخادم، وتجعل مقبس TCP مربوطاً يدخل في حالة الاستماع.

 connect()
تستخدم في جانب العميل، وتعيّن رقم منفذ محلياً وغير مستخدم من قبل لمقبس. في حالة مقبس من نوع TCP، تتسبب هذه الدالة في محاولة إنشاء اتصال TCP جديد.

accept()
تستخدم في جانب الخادم. تقوم بقبول المحاولات المستقبلة القادمة من عميل بعيد من أجل إنشاء اتصال TCP، وتنشئ مقبساً جديداً مرتبطاً بالعنوان القادم مع طلب الاتصال.

send() و recv(), أو write() و read(), أو sendto() و recvfrom()
تستخدم لإرسال واستقبال البيانات إلى/من مقبس بعيد.

close()
تتسبب في أن يحرر النظام الموارد التي خصّصت لمقبس. في حالة TCP، ينتهي الاتصال.

gethostbyname() و gethostbyaddr()
تحول بين أسماء وعناوين الأجهزة. فقط في IPv4.

select()
تستخدم من أجل فحص مجموعة معطاة من المقابس لتحديد تلك الجاهزة للقراءة أو الكتابة أو التي تعاني من أخطاء.

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

getsockopt()
تستخدم لاستعادة القيمة الحالية لخيار معين من خيارات المقبس المحدد.

setsockopt()
تستخدم لتعيين خيار معين من خيارات المقبس المحدد.

 
أضف تعليق

Posted by في 2011/10/21 in شبكات

 

مفاهيم في الشبكات – 2

هذه المقالة تكمل ما بدأناه في المقالة السابقة من الكلام عن مفهوم البروتوكولات والطبقات في عالم شبكات الحاسوب. حان الدور الآن لنتعرف على مفهوم رأس البروتوكول protocol header، وهو الجزء الذي يحدد عملياً الفرق بين بروتوكول وآخر داخل الأسلاك. بالنسبة للهاكرز (بالمفهوم الشامل للكلمة) يمثل هذا الجزء القطعة الأهم من الكعكة كلها. بعد ذلك، نعرّج بإذن الله على المصدر الأساسي الذي تجد فيه كل مايتعلق بتفاصيل ما تكلمنا عنه (وما لم نفعل). دور رؤوس البروتوكولات Protocols Headers يمكن تصوير مفهوم الطبقات بسهولة باستخدام الصور والأشكال، ولكن هناك حاجة إلى وسيلة لتطبيق هذا المفهوم في الأسلاك (أو على قناة لاسلكية). كما لوحظ سابقاً، العبء الإضافي overhead من كل رسالة بين طرفين على الشبكة يقسّم إلى عدة أجزاء (راجع من فضلك المقالة السابقة)، كل جزء يخصّ كائناً معيناً في كلا الطرفين، وينتمي إلى طبقة محددة. كل طبقة مسؤولة عن إضافة ما يعنيها من الأعباء الإضافية إلى الرسالة الصادرة عند الإرسال (في شكل عدد محدد من البايتات بالطبع). تضاف هذه الأجزاء من الحمل عادة في بداية الرسالة المنقولة، ولذلك تسمى برأس الرسالة header. الرؤوس التي تلحقها كل طبقة بالرسالة، على طول الطريق من الطبقات العليا وصولاً إلى الطبقات السفلى، هي في الواقع تمثل بروتوكولات تلك الطبقات؛ وهكذا عندما تنطلق الرسالة في الأسلاك (وسيطة النقل الفيزيائية)، فإن الطبقات المنطقية التي تكلمنا عنها سابقاً هي في الواقع متجسدة في أجزاء الرسالة التي تمثل العبء الإضافي، وكل جزء من هذا العبء هو في الحقيقة رأس تم إلحاقه من قبل طبقة محددة. ترتيب الرؤوس في الرسالة يحدد ترتيب الطبقات التي أضافت هذه الرؤوس، ويتم فصله من قبل الطبقات النظيرة على الطرف الآخر، انطلاقاً من الطبقات السفلى حتى تصل الرسالة إلى الطبقات العليا في هذا الطرف. عندما تستخرج كل طبقة في الطرف المستقبل ما يخصها من رأس، فإنها تستخدم معلومات البروتوكول التي يحويها من أجل أداء وظيفتها. لأن كل طبقة تضيف رأس البروتوكول الذي يخصها على التوالي، يبدو الأمر كما لو أنه يتم تغليف البروتوكولات العليا داخل البروتوكولات الأدنى. الشكل رقم 2 يصور هذه الفكرة فيما يتعلق ببروتوكولات TCP/IP، مع بروتوكولات مثال من كل طبقة.

دلالة الشكل أعلاه هي أن جميع المعلومات المتعلقة بروتوكول معين تتلخص في الرأس الذي يخص ذلك البروتوكول. الفهم الجيد لتركيبة هذه الرؤوس، ووظيفة كل جزء منها (ويشار إليها بالحقول)، أمر ضروري من أجل فهم جيد لوظائف البروتوكولات المختلفة، ومن ثمّ وظيفة الشبكة (وكذلك من أجل فهم مختلف التقنيات التي قد تستخدم في كسر أمن الشبكات، لمن كان مهتماً). الوصف التفصيلي لهذه المعلومات متوفر في أدبيات الشبكات بشكل عام، ولكنه متركز بشكل خاص في وثائق رسمية للمعايير أو المقاييس standards، ويشار إليها باسم طلبات للتعليق Request For Comments. الاسم المختصر الأكثر شيوعاً (والأبعد عن غرابة الترجمة، ولذلك سنستخدمه إن شاء الله)، هو RFCs. المزيد من المعلومات حول مستندات RFC ومصادرها بعد هنيهة في هذا المقال.

أود أن أشير هنا إلى أن نظريات بروتوكولات التشبيك ومفاهيم الطبقات، ومختلف النماذج (بخلاف TCP/IP) مفصّل في عدد كبير من كتب شبكات الحاسوب، بعض هذه العناوين المعروفة، التي تستخدم ككتب text books في الجامعات:

1. Tanenbaum Andrew S. 2003. Computer Networks, Fourth Edition. New Jersey: Pearson Education, Inc.

2. Stallings, William. 2007. Data and Computer Communications, Eighth Edition. New Jersey: Pearson Prentice Hall.

3. Forouzan, Behrouz A. 2007. Data Communications and Networking, Fourth Edition. New York: McGraw-Hill Companies Inc. 

مستندات طلبات التعليقات RFCs

وعلى الرغم من أن بروتوكولات TCP/IPلا يخلو تقريباً كتاب في الشبكات من ذكرها وشرحها، تظل المرجعية القياسية الأكثر شمولاً وموثوقية لهذه البروتوكولات، هي مجموعة من الوثائق، متاحة للجميع في الإنترنت، ومعروفة باسم RFC كما مر معنا أعلاه. يمكن كتابة هذه الوثائق من قبل أي شخص، في العادة المهندسين وعلماء الكمبيوتر، ويمكن أن تكون لأغراض إعلامية (من باب الإعلام بالشيء وتعليمه، وليس من باب الإعلام الاصطلاحي هذه الأيام) أو للمراجعة من قبل الزملاء والأقران على مسار التقييس (بهدف أن تصبح مادة المستند مقياساً متفقاً عليه standard). يمكن أن تبدأ RFC كمقياس مقترح، تشرح بالتفصيل على سبيل المثال تعريف بروتوكول جديد، ثم تنتقل إلى حالة مسودة مقياس draft standard، وأخيراً تتحول إلى حالة مقياس معتمد من مقاييس الإنترنت، إذا تمت الموافقة عليها من قبل كيان رسمي (فريق مهام هندسة الإنترنت the Internet Engineering Task Force IETF). عند هذه النقطة، تصبح الـ RFC مرجعية لتنفيذ (برمجة) البروتوكول من قبل أي جهة. لاحظ أن المفترض أن نسخ كل الجهات المختلفة يعمل بعضها مع بعض بسلاسة، لأنهم يستخدمون نفس البروتوكول، ويلتزمون بنفس المرجع، وهذا هو الهدف من التقييس في المقام الأول. المصدر الرسمي لجميع الـ RFCs موقع ويب محرر RFC على الرابط التالي: http://www.faqs.org/rfcs/rfc-index.html.

بروتوكولات TCP/IP وهي تعمل

على الرغم من أن مستندات RFC هي أهم مصدر لتفاصيل بروتوكولات TCP/IP، فهي نظرية بحكم طبيعتها، ومستوى التفاصيل التي تقدمها قد تكون عائقاً أمام فهم سهل لطريقة عمل البروتوكولات، لغير من يريد بالفعل أن ينفذها في منتجه. لحسن الحظ، قام بعض الكتاب باتباع أسلوب مميّز لشرح مجموعة البروتوكولات هذه، عن طريق تشريح رسائل البروتوكولات، وتتبعها على الأسلاك، وهي تنتقل من جهاز إلى جهاز، وذلك باستخدام برامج لالتقاط الحزم packet sniffers، مثل tcpdump. واحدة من أكثر الأعمال شعبية، والتي تستحق جيداً سمعتها، المرجع الكلاسيكي لستيفنز، وكتب أخرى مماثلة في هذا الصدد:

1. Stevens W. Richard. 1993. TCP/IP Illustrated, Volume 1: The Protocols. Massachusetts: Addison Wesley.

2. Goralski, Walter. 2009. The illustrated network: how TCP/IP works in a modern network. Massachusetts: Morgan Kaufmann Publishers is an imprint of Elsevier

3. Northcutt, S., & Novak , J. 2003. Network intrusion detection, Third Edition. Indiana: New Riders Publishing.

 
أضف تعليق

Posted by في 2011/10/21 in شبكات