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


 انضم لمعجبينا على الفيس بوك
  #1  
قديم 08-01-2011, 09:48
فــــــارس فــــــارس غير متواجد حالياً
صقر صغير




افتراضي مفاهيم في الشبكات

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

المفهوم الأساسي






المفهوم الأساسي للشبكة هو ربط أكثر من جهاز واحد بغرض مشاركة الموارد (موارد حسابية computational ، تخزينية storage، أو طرفيات peripheral) والتواصل communication. تقليدياً ، كانت الأجهزة عبارة عن حواسيب (تسمى hosts) وراوترات، ووسيلة الاتصال هي الأسلاك. أما الآن، فمن الممكن لأية آلة مع بعض الذكاء المدمج (معالج)، أن يكون لها عنوان شبكة (مثل الطابعات مثلاً)، وأن تتبادل الاتصال مع جميع الأنواع الأخرى من الأجهزة، من خلال وسائط من جميع الأنواع، سلكية أو لاسلكية.
التركيب الفيزيائي للشبكة physical topology، وأنواع وسائط الاتصال communication media، تقع في دائرة اهتمام مصممي وفنيي الشبكات. ما يقلق مديري الشبكات، والمبرمجين (بما فيهم الهاكرز) أكثر من ذلك، هو الجانب الآخر من الشبكات: جانب البرمجيات.
دور البروتوكولات
الاتصالات بين أجهزة الحاسوب هي في الأساس تدفق إشارات. باستخدام نفس التمثيل للإشارات ضمن الحاسوب الواحد، فإن هذه الإشارات تمثّل أيضاً باعتبارها تدفق سيل من البتات bit (البت الواحد: إشارة تحتمل قيمتين فقط)، والتي غالبا ما يتم التعامل معها في مجموعات من ثمانية، كل مجموعة منها تسمى بايتاً byte. لذلك، فإن الاتصال بين طرفين (حاسوبين) هو في نهاية المطاف سلسلة من البايتات. العديد من الوحدات ضمن كل طرف قد تتعامل مع هذه السلاسل من البايتات، ابتداءً من البرامج المثبتة على كروت واجهة الشبكة، وحتى الوحدات البرمجية المكوّنة لنظام تشغيل الحاسوب ، أو تطبيقات المستخدمين. المشكلة هي أن هذا السيل المتدفق من سلاسل البايتات عبر وسائط النقل يمكن أن يعني أي شيء لتلك الوحدات؛ ودون اتفاق واضح محدد سلفاً على معنى هذه السلاسل، فإنها ليست أكثر من قمامة إلكترونية. من أجل هذا، اتفق الناس علي تفسيرات مشتركة للبايتات المتبادلة بينهم، وأخذ ذلك شكل مجموعة من القواعد والاصطلاحات التي تتحكم في الاتصال بين الأجهزة على الشبكات. تسمى هذه القواعد، بطبيعة الحال، بروتوكولات الشبكات.
تتطلب البروتوكولات أن يتم تبادل البايتات في كتل تسمى رسائل messages. تحدد البروتوكولات بدقة كلاً من تركيب أنماط البايتات في الرسائل(الـsyntax)، ويشار اليها عادة باسم تنسيقات الرسالة (message format)، بالإضافة إلى دلالات هذه التنسيقات (الـsemantics)؛ أي معنى كل جزء من الأجزاء المختلفة لتلك الرسائل، على افتراض أنه ستكون هناك حاجة إلى عدة أجزاء في كل رسالة متبادلة من أجل التحكم الكامل في الاتصال بين الأطراف المختلفة. أيضاً ، تتحكم البروتوكولات في تزامن الاتصال، ويعني ذلك التأكد من أن هناك توافقاً بين معدلات وتوقيت الإرسال والاستقبال بين كل طرفين. وعلى المستويات الأدنى، فيما يتعلق بأجهزة التشبيك (العتاد الصلب hardware)، فإن هناك حاجة إلى بروتوكولات للسيطرة على توقيت الإشارات المرسلة، وغيرها من المواصفات الكهربائية والميكانيكية للإشارات ولأجهزة الشبكات.
على الرغم من أن عدة مجموعات من هذه البروتوكولات قد أتت من جهات صناعية وعسكرية على مر الوقت، فإن مجموعة واحدة (تسمى مجموعة البروتوكولات المترابطة عادة بكومة stack أو suit) كانت تتمتع بكونها قياسية منذ فترة طويلة، ومطبّقة على نطاق واسع، هذا بالإضافة إلى متانة تصميمها وسلامته (أثبت الوقت ذلك فيما بعد)، مما رشّحها لأن يتم اختيارها كمجموعة بروتوكولات الإنترنت. تلك هي مجموعة بروتوكولات TCP/IP.
مثل كل شيء إذا لم يكن عتاداً صلباً في أجهزة الحاسوب، فإن بروتوكولات الشبكات تنفّذ أساساً كوحدات برمجية، إما في تعريف كرت الشبكة، وإما في نظام التشغيل، وكذلك في تطبيقات المستخدم. إذا أراد طرف أن يتواصل مع طرف آخر باستخدام مجموعة معينة من البروتوكولات، يجب أن تكون لديه البرامج المناسبة التي تمثل هذه المجموعة من البروتوكولات. من هذا يمكن أن تستنتج أن البرمجيات التي تمثّل بروتوكولات TCP/IP مثبتّة على كل جهاز متصل بشبكة الإنترنت (وإلا لم يكن متصلاً بشبكة الإنترنت، لأنه غير قادر على التفاهم مع بقية الأطراف)، وهذه البروتوكولات مدعومة حتى في أنظمة التشغيل التي تقوم بتطبيق بروتوكولات من مجموعات أخرى، مثل نتوير NetWare. تستخدم TCP/IP كذلك في شبكات أخرى، مثل الشبكات المحلية المعزولة، وهذا ما يجعل الدراسة والتجربيب مع بروتوكولاتها ممكناً، سواء داخل مختبر محلي مستقل، أو عبر الشبكة العالمية.
مفهوم الطبقات

كما ذكرت في الفقرات أعلاه، نحتاج عادة إلى البروتوكولات في شكل مجموعات (لا يمكن أن يكفي بروتوكول واحد لإتمام عمليات التواصل بين الأجهزة)، ومجموعة البروتوكولات التي تستخدم معاً لإدارة الاتصالات عبر شبكة اتصال تسمى protocol suit أو protocol stack. الحاجة إلى عدة بروتوكولات تأتي من حقيقة أن سلاسل البايتات المتبادلة في كل رسالة بين نقطتي نهاية، تتعلق بكائنات أو وحدات مختلفة في كل طرف. ليست كل البايتات في رسالة تحمل المحتوى الفعلي الذي يهم المستخدم النهائي عند كل طرف، إذ أن هناك حاجة إلى بعض هذه الباياتات من أجل توفير بعض الوظائف الأساسية لجعل التواصل ممكناً (في الحقيقة، هناك أنواع من الرسائل المتبادلة لا تحوي على الإطلاق أي بيانات تهم المستخدم مباشرة، وإنما تستخدم في تشغيل الشبكة). هذه الوظائف تشمل التزامن synchronization، والعنونة addressing، والكشف عن أخطاء الإرسال وربما تصحيحها error detection and correction، والتحكم في التدفق flow control (هذا يعني أساساً عدم السماح لمرسل سريع بغمر مستقبل بطيء بالبايتات المرسلة)، التوجيه routing (توجيه الرسائل من جهاز إلى آخر حتى تصل إلى الجهاز المقصود كوجهة والذي قد يبعد عن الجهاز المصدر عدة خطوات)، التحكم في الازدحام congestion control (المقصود هو ازدحام الرسائل في مسار واحد من عدة مسارات محتملة مما يستدعي اكتشاف هذا الاختناق ومعالجته)، والأمن security، وغيرها. ويتم تنفيذ العديد من هذه المهام على أكثر من مستوى واحد من قبل أكثر من كائن واحد، في كل من طرفي الاتصال. لأن الأجزاء التي تحقق هذه الوظائف ضمن الرسائل المتبادلة لا تمثّل المحتوى النهائي الذي يستقبله المستخدم، فإنها تسمى مجتمعة بالأعباء الإضافية overhead.
الموضوع الأصلى من هنا: منتديات شبكة الصقر مفاهيم في الشبكات
باتباع القاعدة الذهبية القديمة في علوم الحاسب الآلي، فرّق تسد، جزء تسلسل البايتات الذي يمثل هذه الأعباء الإضافية يقسّم إلى عدة أجزاء، وكل جزء يستقبل بواسطة كائن أو وحدة معينة داخل أحد طرفي الاتصال، لديه اهتمام بالوظيفة المقدمة من هذا الجزء. لذا، فإن عدة كائنات في أحد الطرفين تساهم في إرسال كل سلسلة بايتات (رسالة)، ويتم استقبال مساهمات كل كائن من قبل كائنات مماثلة في الجانب الآخر، لأن كلاً منها يتحمل مسؤولية الوظيفة نفسها في كل طرف، وكلاً منها سوف تستخدم نفس البروتوكول للاتصال مع نظيره، ومن هنا تتضح الحاجة إلى بروتوكولات متعددة في عملية الاتصال ككل. أمثلة على الكائنات التي تشارك في هذه العملية هي تعريف جهاز واجهة الشبكة (كرت الشبكة)، وعدة وحدات من نظام التشغيل، وغيرها من وحدات التطبيق الذي يعمل عليه المستخدم. من الواضح في هذه الأمثلة أن وظائف الاتصال مقسمة على كائنات ابتداءً من مستوى منخفض، بالقرب من وسائط الاتصال المادية (مستوى الآلة)، حتى تصل إلى مستوى رفيع، بالقرب من المستخدم النهائي للاتصال. كل كائن في المستويات الدنيا يخفي التعقيدات التي ينطوي عليها توفير وظيفته الخاصة من جميع الكائنات الأخرى في المستويات الأعلى، وتقدم خدماتها إلى الكائن الذي يقع منطقياً فوقها مباشرةً، من خلال واجهة واضحة. هذه الواجهة عبارة عن استدعاءات دوال يقوم بها الكائن الذي يطلب وظيفة ما (خدمة) من الكائن الذي يقع أسفل منه في التقسيم المنطقي للكائنات، عادة مع بعض البارامترات (تذكّر أن كل عمل البروتوكولات في النهاية هو عبارة عن برامج مكونة من دوال كما تفعل ذلك في أي برمجة).
الموضوع الأصلى من هنا: منتديات شبكة الصقر مفاهيم في الشبكات
في هذا السياق، كل مستوى يعدّ طبقة، ويتم تقسيم وظائف الاتصالات كلها إلى طبقات، كل واحدة منها هي المعنية بمجموعة معينة من المهام، وتستفيد من الخدمات التي تقدمها الطبقة تحتها، أو تقدم خدماتها إلى الطبقة أعلاها. ولأن عدة مهام يتم تعيينها لكل طبقة، فإنه من الممكن أن نجد عدداً من البروتوكولات المختلفة تعمل في كل طبقة. يوضح الشكل رقم 1 مفهوم طبقات الشبكة، والكائنات المتماثلة أو النظائر أو الأنداد peers، والواجهات بين كل طبقة وأخرى interfaces، والبروتوكولات، في سياق نموذج TCP/IP، حيث تقسم البروتوكولات تقليدياً إلى أربع طبقات: طبقة الوصول إلى الشبكة network access، الشبكة inter-network، والنقل transport، وطبقة التطبيقات applications، على الترتيب من المستويات الأدنى إلى المستويات العليا.



يتبع إن شاء الله



http://www.sakr1.com/vb/sakr-style/pic/write-comment.png

ضع تعليق باستخدام حساب الفيس بوك

رد مع اقتباس الرد السريع على هذه المشاركة
قديم 08-01-2011, 09:49   رقم المشاركة : [2]
فــــــارس
صقر صغير
 





فــــــارس is on a distinguished road
افتراضي

هذه المقالة تكمل ما بدأناه في المقالة السابقة من الكلام عن مفهوم البروتوكولات والطبقات في عالم شبكات الحاسوب. حان الدور الآن لنتعرف على مفهوم رأس البروتوكول 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.
الموضوع الأصلى من هنا: منتديات شبكة الصقر مفاهيم في الشبكات
(يتبع إن شاء الله...)
فــــــارس غير متواجد حالياً   رد مع اقتباس الرد السريع على هذه المشاركة
قديم 08-01-2011, 09:52   رقم المشاركة : [3]
فــــــارس
صقر صغير
 





فــــــارس is on a distinguished road
افتراضي

في هذه المقالة الأخيرة من سلسلة (مفاهيم في الشبكات) نختم باستعراض مفهوم المقابس sockets وفكرة البرمجة مع المقابس socket programming.

مفهوم المقابس 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. تستطيع أن تجد قائمة كاملة بأرقام المنافذ على هذا الرابط: 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()
تستخدم لتعيين خيار معين من خيارات المقبس المحدد.
كيف تستخدم هذه الدوال، ومتى، ولماذا؟ هذه هي الأسئلة التي يتوجب عليك أن تبحث عن إجابتها، وتفهمها، إذا كنت حقاً تجرؤ أن تكون مبرمج شبكات!
فــــــارس غير متواجد حالياً   رد مع اقتباس الرد السريع على هذه المشاركة
إضافة رد

مواقع النشر (المفضلة)

*=== (( ما يلفظ من قول إلا لديه رقيب عتيد )) ===*

الرسالة:
اسم العضو:
سؤال عشوائي

إلغاء تنسيق النص
عريض
مائل
نص تحته خط

إدراج صورة
إدراج [اقتباس]
 
تقليص المساحة
توسيع المساحة

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

هل ترغب بتثبيت موضوعك ليكون دائما في مقدمة المواضيع ؟ انقر هنا

 
 
خيارات

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are معطلة
Refbacks are معطلة

الانتقال السريع

اشتراك في مجموعة الصقر البريدية

البريد الإلكتروني:

ضع بريدك  واضغط على اشتراك


الساعة الآن 04:39


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2

godaddy counter
سبحان الله وبحمده :: سبحـان الله العظيم
جميع ما ينشر في المنتدى لا يعبر بالضرورة عن رأي صاحب الموقع وإنما يعبر عن وجهة نظر كاتبه
الاستضافة مقدمة من هوستك لتقنية المعلومات