خبر ها - News

 

از آنگاه كه انسان پا در كره خاكي نهاد، همواره زمان و مكان دو پارامتري بودند كه او را به خود محصور كرده، و اگرچه وجود اين دو پارامتر به زندگي انسان معني مي‌داد و داستان زندگي بشر در گذشت زمان و تغيير مكان تعريف مي‌شد، با اين وجود دو عامل محدودكننده زمان و مكان بر وجود بشر سنگيني مي‌كرده است.

آيا تا به حال اتفاق افتاده كه در يك ساعت خاص جلسه مهمي داشته باشيد و يك ساعت قبل از شروع جلسه در مسير رسيدن به آن با ترافيك سنگيني برخورد كرده باشيد؟ در اين ترافيك سنگين گذشت زمان حتي دقايق و ثانيه‌هاي آن براي شما رنج‌آور خواهد بود و خود را اسير مكان مي‌بينيد طوري كه نمي‌توانيد طومار معني آن را در‌هم بپيچيد و در مكان مورد نظر حاضر شويد.

همانطور كه اشاره شد زمان و مكان، داستان زندگي ما را پايه‌گذاري مي‌كنند. اما اين دو پيش از آنكه براي بشر مفيد جلوه كنند، بيشتر آثار بازدارنده خود را به رخ مي‌كشند. در نتيجه انسان آگاهانه يا ناخودآگاه همواره در صدد غلبه بر اين دو عامل بازدارنده بوده است.

ساخت وسائط نقليه ابتدايي، اولين‌گام براي غلبه بر مكان بود و از زماني كه پيشرفت اين وسائط جهت دستيابي به سرعت بالاتر و كاستن زمان لازم براي تغيير مكان آغاز شد، انسان براي غلبه بر زمان نيز گام نخست را برداشت. تا آنجا كه در داستانهاي تخيلي بشر 50 سال پيش مي توان به اتومبيلها و توربوترن‌هاي فوق سريع برخورد كه كره خاكي را تحت سيطره او در مي‌آورد. با توجه به خودروهاي فوق سريع در تخيل بشر 50 سال پيش، زندگي 50 سال آينده تصوير زيبايي مي‌يابد. زندگي 50 سال آينده تغيير بسيار زيادي را شاهد خواهد بود زيرا او از بند زمان و مكان خواهد‌رست. ديگر شما مجبور نخواهيد بود منزل خود را نزديك به محل كار خود انتخاب نماييد، به راحتي مي‌توانيد در يك مكان خوش آب و هوا و مطابق ميل خود اقامت كنيد و فقط چند دقيقه قبل از زمان شروع كار خود از منزل خارج شويد و توسط يكي از اين توربوترن‌هاي فوق سريع در زمان مناسب در محل كار خود حاضر شويد. در اين دنياي تخيلي شهرها معناي خود را از دست مي‌دهند و انسانها در زمين پراكنده مي‌شوند.

اين دنياي زيبا در تخيل بشر 50 سال پيش توسط توربوترن‌ها و وسائط نقليه فوق سريع دست يافتني بود، تا اينكه بحث ارتباطات و شبكه‌هاي كامپيوتري گام به عرصه دنياي تكنولوژي نهاد.

شبكه‌هاي كامپيوتري جهاني (كه انسانهاي مختلف با آداب و رسوم مختلف در دورترين نقاط جهان را به يكديگرمرتبط مي‌سازند) زودتر از آنچه كه فكرش را بكنيم روياي بشر را به تحقق رساندند. در دنياي شبكه‌هاي كامپيوتري جهاني براي ديدن دوستان خود و بحث و تبادل نظر پيرامون مسائل مختلف، ديگر نيازي به تغيير مكان و يا زمان خود نداريد، مي‌توانيد به راحتي در هر لحظه دلخواه و در كمتر از چند ثانيه به دوستي در آنسوي جهان دسترسي داشته باشيد و اطلاعات لازم را از او گرفته و يا اطلاعات مورد نيازش را به او برسانيد.

شايد اين سئوال براي شما به وجود آمده باشد كه چگونه شبكه‌هاي كامپيوتري در عرصه تكنولوژي حضور يافتند؟

بشر اوليه از آغاز به اين امر واقف بود كه براي ادامه حيات نياز به ارتباط با ديگر انسانها دارد و اولين گام را (ۿا ايجاد صداهاي مختلف زباني و يا كشيدن خطوط مختلف بر سنگها برداشت و براي رساندن پيام خود به دور دست استفاده از دود  آتش را تجربه كرد. با پيشرفت بشر و به وجود آمدن تفنگها و توپها استفاده از آنها نيز براي رساندن پيام براي او مفيد واقع شد. در دنياي تكنولوژيك و پيشرفته قرن اخير، پست ، تلگراف و تلفن ادامه مسيري هستند كه بشر نخستين آغاز نمود.

اما محدوديتها و قدرت اندك وسائل ارتباطي مانند پست، تلگراف و تلفن‌هاي اوليه، دانشمندان را بر آن داشت كه همين وسايل ارتباطي را نيز پيشرفته‌تر كنند. معايب اين سيستمها را مي توان به صورت زير برشمرد:

رسيدن دير هنگام محمولـه‌هاي پستي و گاه مفقود شدن آنها از مهمترين معايب پست بشمار مي‌آيند. در دنيايي كه  تجارت و اقتصاد، در لحظه تعيين موقعيت مي‌شوند ديگر نمي‌توان بسته‌اي پستي را از مبدأ فرستاد و يك هفته بعد در مقصد آن را دريافت نمود. تلگراف و عدم توانايي آن در ارسال تصاوير، ديتاي خاص و اطلاعات با حجم بالا نيز نتوانست نياز بشر را جبران نمايد. آنگاه كه تلفن توانست بدون داشتن محدوديت‌هاي پست و تلگراف در اختيار بشر قرار گيرد، ديگر پيشرفت دنياي حاضر آن قدر بود كه خواسته‌هاي او را افزايش دهد و تلفن هم نتواند جوابگوي نيازهاي او باشد. اختلاف ساعات شبانه روز در مدارهاي مختلف زمين و محدوديت‌هاي زماني و مكاني ديگر را مي توان از علل عدم كارايي تلفن براي بشر امروز بر‌شمرد. به عنوان مثال شما در طول شبانه روز شايد فقط 10 ساعت در منزل باشيد، كه از اين 10 ساعت نيز 6 تا 8 ساعت آن را در خواب به سر مي‌بريد و تلفن منزل شما عملاً كارايي لازم را ندارد. تعدد مشاغل و پيچيدگي شغلي بشر امروز نيز به گونه‌اي است كه كمتر كسي در يك محل ثابت و مشخص مشغول به كار است بنابراين تلفن محل كار نيز اعتبار خود را از دست مي‌دهد.  

اين مشكلات باعث به صحنه آمدن تلفن همراه گرديد. اما تلفن‌هاي همراه نيز نتوانست بعضي محدوديت‌هاي تلفن‌هاي ثابت را بر طرف نمايد. تا آنكه شبكه‌هاي جهاني با داشتن قابليت‌هاي بسيار زياد پا به عرصه زندگي بشر نهادند و هم اكنون شما مي‌توانيد به راحتي با دورترين نقاط جهان ارتباط برقرار كنيد و هر نوع ارتباط كه مد نظر شما باشد توسط اين شبكه‌هاي جهاني ميسر است.پست الكترونيكي با قابليت‌هاي بسيار زياد بدون داشتن هيچ گونه محدوديت زماني، مكاني و يا محدوديت در نوع ديتاي ارسالي مي‌تواند هر نوع نقل و انتقالات اطلاعات شما را پاسخ دهد.

ديگر براي شركت در جلسات و حضور بهم رساندن با دوستان يا دانشجويان خود نيازي نيست به محل خاصي نقل مكان كنيد. شما مي‌توانيد در منزل خود باشيد و  با دوستان خود كه ممكن است هر يك در گوشه‌اي از زمين باشند تشكيل جلسه داده، با يكديگر به بحث و تبادل نظر بپردازيد. اين بحث و تبادل نظر مي تواند به صورت متن، تصوير و صدا باشد.

ديگر نيازي نيست براي معرفي شركت، كارخانه و يا تبليغ براي محصولات خود كاتالوگ‌هايي را تهيه نماييد و به ديگر نقاط جهان ارسال كنيد. به راحتي مي توانيد اطلاعات خود را بر روي شبكه جهاني قرار داده تا هر كسي كه مي خواهد از آنها استفاده نمايد. همچنين شما مي توانيد در شركت‌ها، فروشگاه‌ها، دانشگاه‌ها و مراكز تحقيقات جهاني به راحتي جستجو كنيد و اطلاعات مورد نياز خود را بيابيد.

در اين كتاب ضمن بررسي مباني شبكه‌هاي كامپيوتري و ارائه روشهاي مختلف جهت ارتباط كامپيوترهاي گسترش‌‌يافته در محدوده‌هاي كوچك و بزرگ، به روشهاي كاربردي استفاده از شبكه‌هاي كامپيوتري پرداخته و نحوه استفاده از سرويس‌هاي مختلف شبكه‌هاي جهاني مانند اينترنت را به صورت تفصيلي بررسي مي‌نماييم.

*   انواع شبكه‌هاي كامپيوتري

*   - شبكه CAN

*   - شبكه WAN

*   مباني مقدماتي شبكه‌ها

*   - همبندي شبكه‌ها

*   - نحوه دستيابي به كانال ارتباطي

*   - كانال ارتباطي

يك شبكه كامپيوتري شامل تعدادي كامپيوتر مستقل است‌ كه با يكديگر مرتبط هستند و از منابع يكديگر به صورت مشترك مي‌توانند استفاده كنند. منظور از منابع در يك سيستم كامپيوتري واحدپردازش، حافظه اوليه، حافظه ثانويه و مي‌باشد. اشتراك منابع در سيستم‌هاي كامپيوتري در چهار گام ميسر مي‌گردد كه در ادامه آنها را بررسي مي‌نمائيم.

 

گام اول: اشتراك زماني

متداول‌ترين روش دسترسي به منابع مشترك كه معمولاً در دنياي كامپيوترهايMainframe عموميت تام دارد، شامل يك سيستم پردازشگر مركزي است كه همه اطلاعات در آن ذخيره شده و همه درخواست‌ها نيز از طريق آن سرويس‌دهي مي‌شود. در چنين سيستمي يك واحد پردازشگرو چندين واحد ورودي/خروجي داريم كه از  واحد پردازشگر به صورت مشترك استفاده مي‌كنند.

 

 

 

 شكل2-1 :  اشتراك زماني در كامپيوترهايMainframe

در چنين سيستمي، پردازشگر سيستم مركزي  زمان خود را بين كنسولهايي تقسيم مي‌كند كه به آن متصل هستند و از آن بهره مي‌خواهند. به عنوان مثال در يك ثانيه از زمان پردازش هر يك صدم ثانيه را به يك كنسول اختصاص مي‌دهد و ديتاي مورد نظر آن را پردازش مي‌نمايد و به اين ترتيب مي‌تواند به 100كنسول سرويس دهد. از آنجا كه سرعت واحد پردازش از سرعت دنياي انسانها بسيار بيشتر است، انسان متوجه اين اشتراك زمان نخواهد شد و هر شخصي كه در مقابل يك كنسول قرار مي‌گيرد احساس مي‌كند كه واحد پردازش مركزي فقط به او سرويس مي‌دهد. در كامپيوترهايMainframe منابع برروي سيستم توزيع نشده‌اند و محدوديت ظرفيت سيستم مركزي يك مشكل عمده است. چرا كه در صورت تكميل ظرفيت واحد پردازشگر توسعه آن گران و يا از نظر فني غير ممكن خواهد بود. لازم به ذكر است كه كامپيوترهاي Mainframe در قالب تعريف شبكه‌هاي كامپيوتري نمي‌گنجند زيرا در تعريف شبكه‌هاي كامپيوتري گفتيم كه شبكه از تعدادي كامپيوتر مستقل از هم كه به يكديگر مرتبطند تشكيل مي‌شود در صورتي كه در سيستمMainframe كامپيوترهاي مستقل از هم نداريم.

 

گام دوم: انتقال فايل

گام دوم اشتراك منابع انتقال ديتا از كامپيوتري به كامپيوتر ديگر است كه در اين حالت پردازش روي همان كامپيوتري كه برنامه در حال اجرا است بصورت محلي صورت مي‌پذيرد و اساساً مهم نيست كه انتقال فايل روي شبكه انجام شود و يا از طريق وسايل ذخيره اطلاعات مانند ديسك فلاپي صورت گيرد. در هر دو حالت اين مسئله وجود دارد كه كپي فايل با آخرين حالت نسخه اصلي متفاوت مي‌باشد يعني فايل ممكن است در هر كدام از كامپيوترهاي مبدأ يا مقصد تغيير كند و اين تغيير در كامپيوتر دوم منعكس نشود. بديهي است كه اين تفاوت‌ها با  روشهاي پريوديك و احتمالاً بسيار پيچيده مي‌تواند حذف شود.

 

 


 

 شكل 2-2 : انتقال فايل

 

گام سوم: دسترسي به فايلهاي شبكه

در گام سوم، با دسترسي به بلوكهاي مختلف فايلي كه روي يك سيستم  سرويسگر ذخيره شده اشتراك منابع انجام مي‌شود. در اين مرحله فايلها اساساً به صورت مركزي اصلاح مي‌شوند. يعني برخلاف گام قبل تغيير در فايل، مختص كپي از فايل كه بين سيستمها رد و بدل مي‌شود، نيست بلكه روي كپي مشترك يا مركزي انجام مي‌پذيرد.

 

 

 


شكل 2-3 :  اشتراك فايلها

 

فرق ديگري كه اين حالت با انتقال فايل دارد آن است كه در اين مرحله فقط بخشي از فايل كه مورد نياز است، در هر لحظه به درخواست كننده ارسال مي‌شود. بااين حال به عنوان يك پيش شرط، همه برنامه‌هاي استفاده كننده از فايل، بايد ساختار فايل مشابهي را انتظار داشته باشند.

 

گام چهارم: استفاده از سيستم سرويسگر/مشتري[1]

پيش از آنكه به توضيح در خصوص اين مدل بپردازيم، دو واژه سرويسگر و ايستگاه كاري را تعريف مي‌كنيم.

سرويسگر: در يك شبكه كامپيوتري، كامپيوتري سرويسگر يا سرويس‌دهنده گفته مي‌شود كه به ديگر كامپيوترها سرويس مي‌دهد. در واقع سرويسگر به تقاضاي كامپيوترهاي ديگر پاسخ مناسب مي‌دهد. اين پاسخ مناسب مي‌تواند در اختيارگذاردن ديتاي مورد تقاضاي آنها و يا اجراي دستورالعمل آنها  باشد.

ايستگاه كاري: به كامپيوترهايي از شبكه كه كاربران از آنها استفاده مي‌كنند و سرويس‌هاي مورد نياز خود را از سرويسگرهاي موجود در شبكه دريافت مي‌كنند ايستگاه كاري گفته مي‌شود. در يك شبكه كامپيوتري معمولاً تعداد ايستگاه‌هاي كاري از تعداد سرويسگرها بيشتر است.

در گام چهارم كه استفاده از سيستم سرويسگر/مشتري مي‌باشد تعدادي از كامپيوترها به عنوان ايستگاه‌هاي كاري و يا مشتري تقاضاي خود را به كامپيوتر سرويسگر مي‌فرستند، سرويسگر تقاضاي رسيده از ايستگاه‌هاي كاري را بررسي مي‌كند و ركورد مورد تقاضا را براي متقاضي مي‌فرستد. در اين حالت، ديتاها بر اساس معيارهايي كه در تقاضا ذكر شده است در سرويسگر انتخاب مي‌شوند و بنابراين فقط ديتاهاي مورد نظر از طريق يك يا چند بسته اطلاعاتي ارسال مي‌شوند. در واقع سرويسها در حد ركورد ارائه مي‌شود و سرويسگر بجاي فايلها ركوردها را ذخيره و مديريت مي‌كند.

يك شبكه كامپيوتري مي‌تواند سرويسگرهاي مختلفي داشته باشد و سرويسهاي متنوعي را به ايستگاههاي كاري ارائه نمايد. از انواع سرويسگرها مي‌توان به چهار سرويسگر زير اشاره كرد:

 

الف) سرويسگر فايل[2]: اين سرويسگر وظيفه مديريت و نظارت بر نحوه دسترسي كاربران به فايلها و امكانات جنبي را بر عهده دارد. توسط اين سرويسگر مي‌توان يك حافظه ثانويه بزرگ را در نظر گرفت و بقيه كامپيوترهاي شبكه نيز از اين حافظه ثانويه به صورت مشترك استفاده ‌نمايند. معمولاً به جاي نام سرويسگر فايل از عبارت سرويسگر استفاده مي‌شود و هر جا كه نوع سرويسگر ذكر نشده باشد منظور سرويسگر فايل است.

 

ب) سرويسگر چاپ[3] : سرويسگر چاپ دستگاه يا برنامه‌اي است كه عمليات مديريتي براي به اشتراك گذاردن چاپگر را انجام مي‌دهد. با استفاده از چنين سرويسگري به جاي آنكه هر كامپيوتر در شبكه يك چاپگر جداگانه داشته باشد مي‌توان فقط با يك چاپگر به تمام كاربران سرويس داد. ضمن آنكه توسط اين سرويس استفاده كاربران از چاپگر را نيز مي‌توان كنترل كرد.

 

 ISO OSI

 IEEE

 TCP/IP

 

به طوركلي سيستم‌هاي تكنولوژيك را مي‌توان به دو دسته سيستم‌هاي باز[1] و سيستمهاي بسته[2] تقسيم نمود. سيستمهاي بسته سيستمهايي هستند كه توسط يك شركت سازنده به بازار عرضه مي‌شوند و شركت سازنده از ارائه تكنولوژي ساخت آن خودداري مي‌كند، چنين سيستم‌هايي در انحصار شركت سازنده خود بوده و تعمير، نگهداري و تهيه قطعات يدكي يا جانبي اين سيستم‌ها منحصر به آن شركت مي‌باشد. در كامپيوترهايي كه از سيستم بسته تبعيت مي‌كنند امكان ارتباط با كامپيوترهاي ديگر وجود ندارد و به منظور ارتقاء، بهبود و يا تعويض قسمتهايي از كامپيوتر فقط بايد شركت سازنده را در جريان گذاشت و محصولات كارخانجات ديگر كارايي ندارند.

اما در سيستمهاي باز، محصول موجود در بازار منحصر به يك شركت سازنده نيست و شركتهاي مختلف اقدام به توليد آن مي نمايند و از آنجا كه انتظار داريم اين محصولات عرضه شده به بازار از سوي كارخانجات مختلف با يكديگر سازگاري داشته باشند لاجرم شركتهاي توليدكننده سيستمهاي باز بايد از يك استاندارد معين استفاده كنند. لزوم اين امر در شبكه‌هاي كامپيوتري كه قرار است كامپيوترها از قسمتهاي مختلف به يكديگر متصل شوند و سازنده آنها نيز متفاوت هستند بديهي به نظر مي‌رسد. رعايت استاندارد از سوي كارخانجات علاوه بر مزيت فوق باعث استفاده همگاني محصول شده و با افزايش توليد موجب كاهش قيمت و افزايش تقاضا و در نتيجه آثار اقتصادي مطلوب مي‌گردد.

استانداردها با توجه به آنكه از سوي چه موسسه يا شركتي ارائه شده باشند به دو گروه تقسيم مي‌شوند:

گروه اول، استانداردهايي هستند كه توسط يك كارخانه سازنده محصول ارائه شده‌اند و به آن استاندارد Defacto گفته مي‌شود. به عنوان مثال مي توان به استاندارد تعريف شده در خصوص كامپيوترهاي شخصي IBM اشاره نمود. شركت IBM پس از آنكه كامپيوترهاي شخصي خود را به بازار عرضه نمود استاندارد كامپيوترهاي شخصي خود را معرفي كرد و از آن پس شركتهاي مختلف زيادي به ساخت كامپيوترهاي شخصي سازگار با كامپيوترهاي IBM  اقدام نمودند كه اصطلاحاً كامپيوترهاي سازگار با IBM[3]  گفته مي‌شوند.

گروه دوم، استانداردهايي هستند كه توسط مؤسسات رسمي استانداردسازي ارائه مي‌شوند و آنها را استانداردهاي رسمي يا Dejure مي‌نامند. مؤسسات استانداردسازي، مؤسساتي هستند كه وظيفه آنها تعريف استاندارد بوده و ممكن است توسط دولتهاي ملي و به واسطه يك پيمان بين المللي ايجاد شده باشند و يا سازمانهايي باشند كه به صورت داوطلبانه اقدام به تعريف استاندارد كرده باشند. از مؤسسات استاندارد رسمي مي توان به مؤسسه استاندارد ISO كه به نام سازمان استانداردهاي جهاني[4]شناخته مي‌شود نام برد. اين سازمان جهاني در سال 1946 به صورت داوطلبانه از سوي سازمانهاي استانداردهاي ملي كشورهاي جهان تاسيس گرديد و 89 كشور از جمله مؤسسه استاندارد ANSI از آمريكا، مؤسسه BSI از انگلستان، مؤسسه AFNOR از فرانسه و مؤسسه DIN از آلمان اعضاي آن هستند. سازمان استانداردهاي جهاني استانداردهاي مختلفي در زمينه‌هاي متفاوت ارائه نموده است. اين سازمان تقريبا 200 كميته فني[5] دارد كه به ترتيب تأسيس شماره‌گذاري شده‌اند و هر كميته فني به ارائه استاندارد در يك زمينه خاص مي‌پردازد. به عنوان مثال كميته فني شماره يك در زمينه پيچ و مهره و كميته فني شماره 97 در زمينه كامپيوتر و پردازش اطلاعات فعاليت دارند. هر كميته فني از تعدادي زير كميته[6] و هر زير كميته از تعدادي گروه كاري تشكيل مي‌شوند. مي‌توان گفت كار اصلي در گروه‌هاي كاري انجام مي‌شود كه بيش از 100000 نفر به صورت داوطلبانه از سراسر جهان در اين گروه‌هاي كاري بر روي موضوعاتي كار مي‌كنند كه توسط سازمان استانداردهاي جهاني تعيين مي‌گردد.

نحوه پذيرش استاندارد از سوي ISO بدين صورت است كه يكي از سازمانهاي استاندارد احساس مي‌كند كه در موضوعي كمبود استاندارد وجود دارد. سپس يك گروه كاري تشكيل مي‌شود تا پيشنهاد اوليه[7] را ارائه نمايد. پيشنهاد اوليه در اختيار تمامي گروه‌هاي عضو قرار مي‌گيرد و 6 ماه فرصت دارند تا آن را نقد و بررسي كنند، اگر پيشنهاد اوليه بتواند موافقان زيادي را به خود جلب كند، از روي آن پيش‌نويس استاندارد بين المللي[8] تهيه مي‌شود و براي نظر سنجي بين كميته‌هاي فني توزيع مي‌گردد.پس از آن كه دو مرحله متن نهايي استاندارد بين المللي تهيه شدو مورد تصويب قرار گرفت، به عنوان استاندارد جهاني منتشر مي گردد.

علاوه بر سازمان استانداردهاي جهاني ISO، انجمن مهندسان برق و الكترونيك[9](IEEE) كه يك مؤسسه علمي در زمينه برق و الكترونيك است و با برگزاري سمينارها و كنفرانس‌هاي علمي و همچنين چاپ و نشر مقالات علمي حاوي آخرين دستاوردهاي برق و الكترونيك، در اين زمينه كار مي‌كند. اين موسسه علاوه بر فعاليت علمي اوليه خود در بعضي زمينه‌ها اقدام به تعريف استانداردهايي نموده است.حال به معرفي استانداردهاي تعريف شده در زمينه شبكه‌هاي كامپيوتري از سوي سازمان استانداردهاي جهاني، انجمن مهندسان برق و الكترونيك و مركز پروژه هاي پيشرفته تحقيقاتي وزارت دفاع آمريكا كه يكي ديگر از موسسات استاندارد معتبر است مي‌پردازيم.

- پروتكل Ethernet

پروتكل IEEE 802.3

- 10Base2

- 10Base5

- 10BaseT

10BaseF

IEEE 802.5

 IEEE 802.4

 IPX/SPX

شبكه‌هاي محلي شبكه‌هايي هستند كه گستردگي آنها از حد يك ساختمان بيشتر نباشد. شبكه‌هاي محلي به علت وسعت كم از نوع شبكه‌هاي پخشي هستند يعني يك ايستگاه كاري بسته ارسالي خود را روي شبكه مي‌فرستد و اين بسته از يك كامپيوتر به كامپيوتر ديگر مي رود و به همه كامپيوترهاي شبكه مي رسد و هر كامپيوتري كه آدرس مقصد درج‌شده در بسته ارسالي با آدرسش تطابق داشته باشد آنرا پردازش‌كرده و به كامپيوتر بعد از خود مي‌فرستد. در زمينه شبكه‌هاي محلي استانداردهايي تعريف شده ‌است كه پروتكل‌هاي Ethernet، IEEE802.3، IEEE802.4، IEEE802.5 و IPX/SPX از مهمترين پروتكل‌هاي تعريف‌شده در اين زمينه

هستند كه به ترتيب از سوي سازمان استانداردهاي جهانيISO، انجمن مهندسان برق و الكترونيكIEEE و شركتNovell تعريف

شده اند.

خطوط مخابراتي

- امواج مايكرو ويو

- امواج راديويي

- ماهواره‌ها 

به يك شبكه كامپيوتري كه حيطه ايستگاه‌هاي‌كاري آن از حديك كمپ تجاوز كند، شبكه كامپيوتري گسترده[1] مي‌گوييم و مهمترين ويژگي اين شبكه‌ها آن است كه براي ارتباط بين ايستگاه‌هاي‌كاري ناچار به استفاده از خطوط ارتباطي عمومي مثل سرويسهاي شركتهاي مخابراتي و يا روشهاي ارتباطي بي‌‌سيم هستيم زيرا محدوده اين شبكه‌ها از ملك خصوصي ما تجاوز نموده و نمي‌توانيم در اماكن عمومي به نصب و استفاده از كابل‌هاي خصوصي خود بپردازيم. در شبكه‌هاي گسترده ارتباط بين ايستگاههاي كاري و سايت‌ها به دو روش كلي سوئيچينگ بسته و سوئيچينگ مدار صورت مي‌گيرد. در روش سوئيچينگ مدار يك مسير بين مبدأ و مقصد انتخاب مي‌گردد و در طول مدت تماس، اين مسير در اختيار ارتباط مبدأ و مقصد حفظ خواهد شد. ولي در روش سوئيچينگ بسته، زنجيره‌اي از اتصالات وجود دارد كه داده‌ها براي رسيدن به مقصدشان از آن‌ها استفاده مي‌كنند. شكل 6-1 يك شبكه سوئيچينگ عمومي را نشان مي‌دهد.

يك شبكه سوئيچينگ بسته را مي‌توان به صورت ابري در نظر گرفت كه بسته‌هاي اطلاعاتي در بسته‌هايي به اندازه مشخص از طريق مسيرهاي ارتباطي درون اين ابر از مبدأ به مقصد مي‌رسند. در واقع بسته‌هاي اطلاعاتي بر اساس آدرس مقصد در اتصالات ابر شبكه مسيريابي مي‌شوند كه در قسمتي از بسته اطلاعاتي قرار دارد.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

شكل  6-1:شبكه سوئيچينگ عمومي

 

تصميم‌گيري براي انتخاب يكي از دو روش سوئيچينگ مدار و سوئيچينگ بسته بر اساس مقدار تأخير مجاز بين فرستنده و گيرنده مي‌باشد. در سيستم‌هايي كه تأخير ثانيه‌اي، دقيقه‌اي و ساعتي قابل اغماض هستند استفاده از سيستم‌هاي سوئيچينگ بسته‌اي كه سرعت پايين‌تري دارند و از نظر اقتصادي نيز مناسب‌تر هستند پيشنهاد مي‌شود. براي كاربردهاي بلادرنگ استفاده از روش سوئيچينگ مدار اگرچه از نظر اقتصادي هزينه بيشتري دارد، چون پهناي باند كامل و رسيدن اطلاعات را به صورت On-Line تضمين مي‌كنند، مناسب‌تر خواهد بود.

در ادامه اين فصل به معرفي روشهاي ارتباطي استفاده شده در شبكه‌هاي گسترده مي‌پردازيم.


 

 

كليدواژه ها
● شبكه كامپيوتري● شبكه محلي ●شبكه گسترده ● = ● LAN=WAN● TCP/IP

چكيده
يافتن الگوريتمي جهت جلوگيري از واكنشهاي زنجيره‌اي به شكل يك polynomial غيرممكن است؛ اما با تبعيت از روشهاي اين مقاله، مي‌توان اين گونه واكنشهاي مخرب را در شبكه‌هاي كامپيوتري كاهش داد.

 

نه برنامه‌هاي كامپيوتري هميشه صحيح‌اند و نه سخت افزار كامپيوتر همواره بدون عيب. يك نقص سخت افزاري، به راحتي مي تواند كامپيوتري را از كار بيندازد و اين موضوع در مورد برنامه‌هاي نرم افزاري هم صدق مي كند. اغلب كامپيوترها، به صورت دوره‌اي از كار مي‌افتند و حتي كامپيوترهاي با قابليت اطمينان بالا نيز، گاهي دچار مشكل مي شوند. اما اكنون كه كامپيوترها، در شبكه‌هاي متفاوت قرار گرفته‌اند، خطر احتمال بروز نقص در يكي از كامپيوترهاي شبكه، يا وجود نقص در يكي از پروتكلها- كه باعث از كارافتادن كل سيستم شبكه‌اي شود-بيشتر است. بدين ترتيب روشن است كه از كار افتادن كل سيستم در اثر از كار افتادن يك كامپيوتر قابل قبول نيست. در اين مقاله از" واكنشهاي زنجيره‌اي" براي مشخص كردن اين گونه از كار افتادگي در شبكه‌ها بحث مي‌شود." واكنش زنجيره‌اي" را فرهنگنامه و بستر (Webster)" سلسله واكنشهاي شيميايي يا هسته‌اي خودجوشي كه در آن محصولات واكنش سبب ادامه روند واكنشها مي شوند" تعريف كرده است. اين تعريف به غير از قسمتي از آن كه، تعريف را منحصر به واكنشهاي شيميايي و هسته‌اي كرده است، براي منظور ما كاملا"مناسب است. قابليت دسترسي هر چه بيشتر به شبكه‌ها سبب به وجود آمدن انواع كاربردها كه محتاج به الگوريتمها و پروتكلهاي پيچيده براي پردازش توزيعي در شبكه‌هاست، شده است. اين پيچيدگي مضاعف باعث بالا رفتن امكان پيدايش نقص در طراحي شبكه‌ها شده است. هدف اصلي اين مقاله، معرفي تعدادي از اين نقايص و بحث در مورد جلوگيري از بروز آنهاست. متاسفانه هيچ راهي براي بالا بردن قابليت اطمينان سيستمهاي نرم افزاري وجود ندارد. اما هر چقدر نقاط ضعفها را بهتر تشخيص دهيم، بهتر مي توانيم خود را جهت محافظت از كل سيستم مجهز كنيم. اين مقاله وضعيتهايي كه منجر به پايين آمدن كل سيستم مي شود، مشخص مي كند و نقصهاي حقيقي را كه در سيستمهاي متفاوت اتفاق افتاده اند و داراي شباهتهاي زيادي هستند، ارائه مي دهد. همچنين در اين مقاله، مثالهايي از فروريزي احتمالي سيستمها كه در نتيجه نقصهاي جزئي در طراحي آنها وجود داشته، ارائه مي گردد. ساختن يك برنامه كامپيوتري كلي، كه بتواند تمام واكنشهاي زنجيره اي را بشناسد و از آنها جلوگيري كند همچنانكه در نظريه1 در اين مقاله نشان داده خواهد شد، غيرممكن است؛ اما اين مقاله، به چند قانون براي كم مردن احتمال وقوع هر گونه نقص در سيستم شبكه‌اي، اشاره خواهد كرد. مقدار زيادي از مطالب آن مثل قصه‌هاي رايج بين اهل فن است. اما هدف كلي، جمع آوري و يكي كردن يك سري مشاهدات و راه‌حلهاي فاقد عموميت است. عده زيادي معتقدند كه برنامه‌هاي توزيعي، كلا" مي توانند داراي آن چنان نواقص جزئي باشند كه پيدا كردن آنها فوق تا مشكل است. اين مقاله، از اين درك حمايت مي كند؛ اما در ضمن كمك مي نمايد تا درك نواقص و جلوگيري آنها مشخصتر شود.اين موضوع، بويژه اهميت زيادي دارد، چرا كه شبكه ها هر روز پيچيده‌تر و گسترده‌تر مي شوند.

يك واكنش زنجيره اي در يك"Ethernet"
اولين مثال، شامل يك شبكه محلي است. مسئله، در اثر وجود نقص پروتكل سيستم عامل جديدي به نام 4.3 Unix به وجود آمد. سيستم جديد، روي تعداديWorkstations به نام Microuaxs نصب شد. اين كامپيوترها، توسط يك شبكه محلي Ethernet به يك سري Workstation ديگر كه قبلا" با سيستم عامل قديميتر (Unix 4.2) به يكديگر مرتبط بودند، متصل شدند. در اين مقاله, به بحث در جزئيات مربوط به كاربرد پروتكلها و قسمتي از شبكه كه دراز كار افتادگي كل آن سهيم بوده است خواهيم پرداخت.

سابقه
Ethernet يك وسيله داده پراكني است كه پيغامها را به تمامي مقصدها مي‌فرستد. هر كامپيوتر ميزبان، داراي يك كنترل‌كننده Ethernet است كه مسوول شناختن پيغامهاي آدرس شده، به كامپيوتر ميزبان وصل شده به اوست. پيغامهاي كه به وسيله كنترل كننده دريافت مي شود دو نوع اند:1-پيغام آدرس شده به كامپيوتر ميزبان؛ 2-پيغام داده پراكنده به كليه وسايل روي شبكه.IP- Internet Protocol نام پروتكلي است كه رابطه "بين شبكه‌اي" است و مسوءول دريافت پيغامهاي گرفته شده توسط كنترل كننده Ethernet است. IP پروتكل پيچيده‌اي است كه مسوءوليتهاي زيادي دارد مخصوصا" كه اين پروتكل به پروتكل ديگري به نام ARP ياAddress Resolution Protocol متصل است. ARP كار ترجمه آدرسهاي بين شبكه اي، به آدرسهاي فيزيكي كامپيوترهاي ميزبان را، عهده دار مي باشد. در واقع، هر پيغام روي شبكه داراي دو آدرس است:1- آدرس IP 2- آدرس ARP. Ethernet پروتكل رابط مياني بين اين دو آدرس است. هر دو پروتكلهاي IP و APR، پروتكلهاي همه منظوره براي شبكه‌هاي بزرگ‌اند؛ اما از آنها مي‌توان در شبكه‌هاي محلي نيز استفاده كرد.شكل (1) نشان دهنده رابطه بين كنترل كننده ARP,IP,Ethernet است.

 

هر پيغام درستي كه روي شبكه فرستاده مي شود، داراي يك آدرس صحيحEthernet و يك آدرس صحيح IP است. پيغام توسط كنترل شونده Ethernet ، با آدرس برابر با آدرس پيغام، گرفته مي شود و از آنجا ارسال مي گردد. IP ابتدا آدرس خود را امتحان مي‌كند و در صورت برابري، كاري را كه در پيغام نهفته است، انجام مي‌دهد (مانند حوركردن بسته‌هاي داده‌ها) و پيغام را توسط پروتكلهاي ديگر، به كامپيوتر ميزبان واگذار مي كند. IP همچنين پيغامهاي را از كامپيوتر ميزبان دريافت مي‌نمايد و با استفاده از ARP آدرس Ethernet صحيح را پيدا و پيغام را براي آن مي‌فرستد.

فروريزي شبكه بالا
در زير خواهيم ديد كه در اثر واكنش زنجيره‌اي ناشي از ناسازگاري بين دو سيستم عامل4.2 Unix Berkeley و Unix 4.3 Berkeley در مشخص نمودن پيغامهاي داده پراكني، كل سيستم شبكه فرو مي‌ريزد. در سيستم Berkeley Unix 4.2 يك پيغام داده پراكني به وسيله تمام صفر OO..O Unix در كامپيوتر ميزبان در آدرس IP مشخص مي0157گردد، در صورتي كه با تمام يك مشخص 11.. 1 در سيستم عامل 4.3 كامپيوتر Berkeley مي‌شود. يك پيغام داده پراكني از سيستم عامل مشخص Unix 4.3 را در نظر بگيريد كه در آدرس IP ميزبان، با تمام يك دريافت شد11..1 مي‌شود. اين پيغام توسط IP از نوع 4.2 كنترل كننده‌هاي Ethernet در سيستم 4.2 (چون آدرس 11..1 آدرس را Ethernet آن درست بود) و سپس به OO..O فرستاده شد. اما آدرس IP سيستم 4.2 به تمام يك نمي‌شناخت. چرا كه در اين سيستم تمام صفر سعي كرد اين درست است. در اين موقع تصحيح كند. IP اشتباه آشكار را بنابراين، با استفاده از مكانيزمي كه در آن وجود صحيح داشت، از پيدا APR خواست كه آدرس Ethernet را، براي آن آدرس IP كند تا پيغام بدين ترتيب به مقصد اصلي‌اش فرستاده شود. ولي يك ARP هيچ گونه اطلاعي از اين آدرس بخصوص نداشت. بنابراين‌هاي ARP پيغام در خواستي براي كليه قدرت ARP روي شبكه فرستاد. آيا كسي مي‌تواند اين آدرس را ترجمه كند؟ به دليل هيچ آن ARP ترجمه پيغام بخصوص را نداشت، در نتيجه پيغام داده پراكني مزبور به دور انداخته شد. اين اشتباه، نتيجه غيرقابل جبراني به وجود نياورد. تعدادي پيغانهاي داده پراكني به مقصدشان نرسيدند. اين باعث به وجود آمدن پيغامهاي خطا شد كه خود باعث اضافه‌شدن بار شبكه و پروتكلها گرديد. بعضي از فرمانهاي سيستم عامل كه شبكه، مانند متداول rwho پيغامهاي داده شدن تعداد پيغامهاي خطا و افزودن بار شبكه شدند. سيستم شبكه اي كه Unix 4.2 و Unix 4.3 را بهم متصل مي‌كرد، در اثر وجود بار زياد از سرعتش بسيار كاسته شد، ليكن از كار نيفتاد، اما سعي در از بين بردن اين نقص، باعث پايين آوردن سيستم گرديد. براي كارشناساني كه كل سيستم را نظارت مي‌گردند، اشكال در آدرس IP با تمام يك 11..1 بود، كه به دليلي باعث به وجود آمدن درخواستهاي متعدد از ها ARP مي‌شد. در يك سايت، اين راه حل براي مسئله پيدا شد: در جدول يكي از ARP ها، آدرس داده پراكني Ethernet مترادف با داده پراكني تمام يك 11..1 IP قرار داده شد، به اين منظور كه درخواست ARP ها بالاخره به آن ARP مخصوص با جدول دستكاري شده خواهد رسيد و در آنجا مسئله حل ناسازگاري بين دو سيستم نتيجه 4.2 و 4.3 خواهدگرديد. اما را IP عمل، كاملا" متفاوت بود. براي روشن شدن موضوع، يك پيغام متصل به آن IP از سيستم 4.2 در نظر بگيريد كه پيغام سيستم فهميد كه پيغام 4.3 را نمي‌شناخت و در نتيجه از ARP در خواست كمك كرد پيغام را با يك.ARP واقعا" يك پيغام داده پراكني است. اما اين IP آدرس داده به وجود IP پراكني پيغام Ethernet پيغام رد شده خود باعث بدون تغيير IP آمدن مسئله مي‌شد. علتش اين بود كه آدرس ترجمه شده بود. بنابراين، اين پيغام به وسيله بقيه شناخته 4.2 هاي كار 4.2 نمي شد. پس مسئله پيشين، دوباره تكرار مي‌گشت. پس اگر در سيستم شبكه، تا پيغام K ماشين با سيستمK مي كرد هر پيغام داده پراكني، باعث به وجود آمدن تا پيغام K جديد مي شد و هر كدام از آن جديد K تا پيغام به نوبه خود به وجود مي‌آورد و غيره. نتيجتا" كل شبكه، از اين پيغامها پرشد و تعدادي ماشين از كارافتاد تا كار شناسان سايت مجبور شدند كابلهايي را كه سيستمها را به هم متصل مي‌كرد از هم جدا كرده و دوباره ماشينها را به كار بيندازند و كابلها را ببندند.

حلقه بسته بينهايت"Infinite Loop"
وقتي كه يك استفاده كننده شبكه از ماشيني به ماشيني ديگر رفت، بايد كاري كند كه پيغامهاي دريافتي را به ماشين جديد منتقل نمايد. اين كار، با به كار بردن فرمانهاي منتقل كننده قابل انجام است. براي مثال، در سيستم عاملUnix شخص مي‌تواند آدرس ماشين جديد را در فايلي به نام Forward مشخص كند. قبل از اينكه پيغامي به شخص استفاده كننده ماشين انتقال يابد، اين فايل امتحان مي‌شود و چنانچه در داخل آن خالي نباشد، پيغام به طور اتوماتيك، به آدرس جديد فرستاده مي‌شود. حال وضعيتي را در نظر بگيريد كه، شخص بي احتياطي در فايلهايForward. دو كامپيوتر مختلف دو آدرس قرار مي‌دهد. به عبارت ديگر، او در Forward A ، آدرس ماشين B و در Forward ماشين B آدرس ماشين A را قرار مي‌دهد و بدين ترتيب يك سيكل به وجود مي‌آورد. پس، يك پيغام فرستاده شده به ماشين A ، از A به B و از B به A در حلقه بسته بي نهايت باقي مي‌ماند. عمل اين گونه پيغامها، داراي طول عمرند هر بار كه از ماشين، به ماشين ديگر فرستاده مي‌شوند، از عمر پيغام كاسته مي‌گردد تا اينكه عمر آن تمام مي‌شود و قبل از اينكه پيغام از بين برود يك پيغام خطا به وجود مي‌آورد.

از كار افتادگي
معمولا" اين گونه حلقه بسته ها، مشكلي به وجود نمي‌آوردند، بجز آنكه شخص استفاده كننده هيچ گاه پيغامي دريافت نمي‌كند؛ اما در سناريوي زير مشكل تفاوت مي‌كند: جان كه، در دام چنين حلقه بسته‌اي افتاده بود، بدون كوچكترين اطلاعي متوجه مي‌شود كه پيغامي دريافت نمي‌كند. او تصميم مي‌گيرد كه براي خودش پيغامي بفرستد، تا ببيند نتيجه چه مي‌شود. پيغامي كه او براي خودش فرستاد البته در داخل حلقه بسته افتاد و بعد از آنكه طول عمرش سپري شد از بين رفت و پيغام به وجود آورد. آن پيغام خطايي ايجاد شده، به كسي كه پيغام را فرستاده بود (جان)، فرستاده شد. البته سر نوشت پيغام خطا، همانند پيغام اصلي بود و اين پيغام هم قبل از از بين رفتن، پيغام خطاي ديگري به وجود آورد. اما هر بار كه يك پيغام خطاي جديد به وجود مي‌آمد، طولش بزرگتر مي‌شد به دليل اينكه، هر پيغام، شامل پيغام، مشخصات پيغام و صادر كننده پيغام بود. اين روند رو به رشد در حجم پيغامها، از تابع خطي پيروي مي‌كرد كه براي از كار انداختن كل سيستم كافي بود. در مثال بالا، دو ماشين A و B در يك شبكه با سرعت زياد قرار گرفته بودند. بنابراين، پيغامها خيلي سريع از A به B و بر عكس مي‌رفت و بزرگتر مي‌شد و در نتيجه سيستم خيلي سريع پايين آمد. اگر سرعت شبكه، پايين بود پيغامها با سرعت كمتري رد و بدل مي‌شدند كه خود باعث پايين آمدن كارآيي سيستم و تاخير در تشخيص مشكل مي گشت. مثال ديگر، عبارت است از يك حلقه بسته بي‌نهايت كه در دانشگاه آريزونا در سال 1986 اتفاق افتاده. به علت اشتباه در دادن مقادير به فايلهاي اوليه، يك كامپيوتر مشحص به نام Corana فكر مي‌كرد كه اسمش كامپيوتر ديگري است بنام Baskerville كه با Corana روي يك شبكه بودند. وقتي كه Corana به كار افتاد، تلاش كرد كه اتصالش را با Baskerville همانند بقيه كامپيوترها برقرار كند. اين اتصال ناموفق بود براي اينكه Baskerville نمي خواست كه با خود صحبت كند، چرا كه Baskerville ازCorana پيغامي به صورت سلام، من Baskerville هستم دريافت كرد. اين اتصال ناموفق باعث به وجود آمدن يك پيغام خطا شد. پيغام خطا به طور اتوماتيك به كامپيوتر ديگري به نام مگارون (Megaron) روي شبكه فرستاده شد. مگارون مسوول نگهداري آدرس كارشناسان سايت بود. متاسفانه كارشناسي كه مسوول بود، پيغامهايش را روي Corana دريافت مي كرد؛ اما چون Corana فكر مي كرد كه Baskerville است، كارشناس سايت هيچ وقت پيغام خطا را دريافت نكرد. چون پيغام خطا، نمي‌توانست به مقصدش برسد. همين باعث به وجود آمدن پيغام خطاي ديگري شد كه، به نوبه خود پيغام خطايي ديگري شد كه، به نوبه خود پيغام خطاي ديگري را به وجود آورد و غيره. بايد توجه كرد به علت اينكه چندين استفاده كننده در اين مورد دخيل بودند، اثرات نامطلوب حلقه بسته خيلي جديتر بود: هر پيغام خطا، به تمام آدرسها فرستاده مي‌شد. نتيجه اينكه، در اثر پر شدن ديسكها، تعداد زيادي ماشين، از جمله ماشينهاي كارشناسان سايت از كار افتادند. اين مثال، نشان دهنده خطر فرستادن بيش از يك پيغام و يا استفاده از يك ليست بلند در نامه‌نگاري است. بهتر است كه پيغامهاي خطا را در يك فايل ريخت و مسوول آن گاهگاهي به آن فايل نگاه كند تا اينكه، از روش پيغام رساني استفاده شود. امروزه، استفاده از ليستهاي بلند نامه نگاري، در سراسر جهان متداول است و از كارافتادگي سيستم شامل آنها مي تواند بسيار مضر باشد.

مثالهاي بيشتر:
چهار مثال ديگر در مورد واكنشهاي زنجيره‌اي، نشان مي دهد كه پروتكلهاي شبكه‌اي تا چه اندازه مي‌توانند آسيب پذير باشند. مشهورترين واكنش زنجيره‌اي، در سال 1980 روي شبكه Arpanet رخ داد: يك نقص سخت افزاري در يك كامپيوتر ميزبان، باعث به وجود آمدن حلقه بسته اي از پيغامهاي مسيرگزين در شبكه شد كه در انتها، كل سيستم را پايين آورد. همچنانكه قبلا" گفته شد، هر پيغام، هميشه داده پراكني مي شود؛ ليكن مقصد پيغام، پيغام را مي خواند. حال فرض كنيد، مي‌خواهيم تعدادي شبكه محلي را به وسيله چند پل(Bridges) به يكديگر متصل نماييم. همچنين فرض كنيد مي‌خواهيم شكل فرستادن پيغامهاي داده پراكني را روي كل سيستم حفظ كنيم. اگر سيستم جديد كه از مجموعه سيستمهاي قبلي به وجود آمده، داراي حلقه بسته نباشد، يك الگوريتم سيل آسا (Flooding) اين كار را انجام خواهد داد. بدين ترتيب كه، پلي كه تعدادي شبكه محلي را به يكديگر متصل مي‌كند، هر پيغامي را كه از يك شبكه دريافت مي‌نمايد، آن را به همه شبكه‌هايي كه به آن متصل‌اند مي‌فرستد به غير از شبكه اي كه پيغام را از آن دريافت كرده است. اما اگر كل سيستم داراي حلقه بسته بود، از الگوريتم درخت پوشا (Spanning Tree) استفاده مي‌كنيم. درخت پوشا، عبارت است از يك زير گراف (Subgraph) كه تمام گره‌ها (Nodes) را شامل ميشود بدون اينكه حلقه بسته‌اي داشته باشد.پرلمن (Perlman) الگريتمي دارد كه مي تواند يك درخت پوشا را پيدا كند. پرلمن و وارگيز (Varghese) نشان مي‌دهند كه اين پروتكل، چگونه مي تواند تعداد زيادي پيغام به صورت نمايي به وجود آورد. ما در اينجا، جزئيات اين پروتكل را بررسي نمي‌كنيم؛ بلكه فقط به نقصهاي اصلي آن مي‌پردازيم. كار اصلي پروتكل، اين است كه از طرف هر پل روي شبكه براي يافتن حلقه بسته پيغامي به صورت سيل آسا به تمام گره‌هاي شبكه بفرستد. از اين جهت كه بالاخره تمام اين پيغامها جذب مي‌شوند، هيچ گونه حلقه بسته بي نهايتي ظاهر نمي‌گردد. مسئله در اينجاست كه براي شبكه هاي چون شبكه زير، چنين پيغامهاي سيل آسا تعداد زيادي پيغام به صورت نمايي به وجود مي‌آورد.

 

 در اينجا خطري وجود دارد و آن اين است كه، قبل از اينكه پيغامي بتواند جذب شود، آن تعداد پيغام به وجود آيد كه كل سيستم غير قابل استفاده گردد. بنابراين در اين مثال، تنها بودن حلقه‌هاي بسته بي‌نهايت كافي نيست؛ بلكه ما بايد مطمئن شويم كه تعداد زيادي پيغام به وجود نيايد. يك مثال ديگر، پروتكل سوال كردن روي شبكه است. يك گروه مي تواند پيغام سوال را مي دهد و يا آن را به گره ديگري ارسال مي دارد. فرض كنيد كه هر سوال يك مشخصه دارد و هر گروه سوالاتش را در حافظه اش ضبط مي نمايد. سوالات به صورت سيل آسا پخش مي شوند و توسط الگوريتمي كه سوالات را جذب مي‌كند، محو مي شوند به طوري كه هيچ گره‌اي، يك سوال را دوبار از خود عبور نمي‌دهند و فرض كنيد شخصي به بهتر كردن اين الگوريتم به روش زير مصمم شود: سوالي از گره اي به وجود آمده است. گره‌هاي ديگر، اگر بتوانند قسمتي از سوال را جواب دهند آن را به طور كامل از خود عبور نمي‌دهد. و فقط قسمتهاي را كه جواب داده نشده‌اند به جلو مي‌فرستند. فرض كنيد وقتي كه قسمتي از سوال، جواب داده شد، بقيه آن داراي يك مشخصه جديد شود، چرا كه بقيه سوال، سوالي جديد است كه با سوال قبلي تفاوت دارد. اين باعث به وجود آمدن هيچ گونه حلقه بسته بي نهايت نمي‌شود؛ چرا كه اگر سوالي از K قسمت به وجود آمده باشد حداكثر تا1-K دفعه مي‌تواند تغيير كند (هر بار از دفعه قبل كوچكتر مي‌گردد). گر چه تعداد تغييرات1- K دفعه است؛ اما ما مي‌توانيم K 2 سوال جديد از يك سوال داشته باشيم. بنابراين در بدترين وضعيت K2 پيغام از يك پيغام روي شبكه به وجود مي‌آيد كه اين قابل قبول نيست. آخرين مثال، با بقيه مثالها تفاوت دارد. اين مثال، درباره پارازيت بين شبكه اي "Internet Worm" است كه در سال 1988 به كليه كامپيوترها در آمريكا حمله كرد. علت به وجود آمدن پارازيت نا مشخص است. از مشخصات پارازيت اين بود كه، سعي كرد تا آنجا كه مي تواند در شبكه پخش و پراكنده شود و موقعي كه در ماشيني قرار گرفت، تكثير شده و تعداد بيشتري از خود به وجود آورد. البته، اين مشخصات يك واكنش زنجيره‌اي است. به دليل نبودن مكانيزمي در پروتكلهاي شبكه جهت جلوگيري يا لااقل كاهش پارازيتها، تعداد آنها به قدري زياد شد كه كل سيستم از كار افتاد.

شناسايي و جلوگيري از واكنشهاي زنجيره‌اي
كليه مثالهاي بالا داراي مشخصات مشترك‌اند. در اين قسمت، مشخصات مشترك مورد بررسي قرار مي‌گيرد و توصيه‌هاي در مورد جلوگيري از واكنشهاي زنجيره‌اي پيشنهاد مي‌شود. در ضمن، مشخص خواهد شد كه، جلوگيري از بروز نقصها غير ممكن است و در اين زمينه بهترين روش، عمل به توصيه‌هايي است كه، به وجود آمدن واكنشهاي زنجيره‌اي را به حداقل مي‌رساند. عامل مشترك بين تمام مثالهاي فوق، يك حلقه بسته بي‌نهايت"Infinite Loop" يا يك حلقه بسته نمايي"Exponential Loop" است. اين حلقه‌هاي بسته از پيغامهاي كنترل، معمولي و داده پراكني به وجود مي‌آوردند. وجود حلقه‌هاي بسته در اثر نقصهاي جزئي در طراحي سيستم بود. اولين سوال اين است كه، آيا امكان تشخيص چنين حلقه‌هاي بسته‌اي وجود دارد؟يعني آيا ما مي توانيم پروتكلها را تجزيه و تحليل كنيم و وجود اين گونه وضعيتها را پيش بيني كنيم؟ متاسفانه، پاسخ سوالات فوق خير است.

غير ممكن بودن تشخيص حلقه هاي بسته بي‌نهايت
اجازه بدهيد ابتدا از يك مدل ساده محاسبات توزيعي؛ صحبت كنيم. N عدد ماشين وجود دارد كه هر كدام مشغول اجرا كردن يك برنامه محلي (پروتكلي) مي‌باشد. برنامه‌ها ترتيبي هستند. در ضمن دو فرمان اصلي به نامهاي Send و Receive وجود دارد. فرمان Send تعدادي داده را از ماشيني به ماشين ديگر، مشخص شده در فرمان، مي‌فرستد و در حافظه واسطه (Buffer) ماشين مقصد قرار مي دهد. فرمان Receive پيغامها را مي‌گيرد و روي آنها عمل مي‌كند. براي ساده كردن مطلب از موضوعات مربوط به همزماني (Synchronization)، وقفه‌ها (Interrupts) و اتصال (Connectivity) صرف نظر مي‌نماييم و فرض مي‌كنيم كه تمام ماشينها كاملا" به يگديگر متصل‌اند. سوال مطرح شده اين است كه، آيا تعداد پيغامها محدودند؟ خير؛ زيرا اين مسئله مكث كردن است. در مسئله مكث، صورت مسئله اين است كه، به فرض داشتن يك برنامه هرگز پايان مي‌پذيرد؟ اين مسئله فاقد جواب است. بدليل معني كه، هيچ برنامه‌اي نمي‌تواند آن را در طول مدت معيني حل كند (اثبات در مرجع شماره5 پايان مقاله :(J.E.Hopcraft, J.D.Ullman) اثبات مسئله بالا از اثبات مسئله مكث كردن پيروي مي‌كند.

نظريه 1
با فرض داشتن يك سيستم توزيعي، مشخص كردن تعداد پيغامهاي به وجود آمده توسط يك برنامه غيرممكن است. اثبات: فرض كنيدكه، يك برنامه به نامP داريم كه مي‌تواند با داشتن مدل بالا مشخص كند كه، آيا تعداد پيغامها محدودنديا نه؟ چنين برنامه‌اي مي تواند براي حل مسئله مكث كردن به كار رود. چرا كه اگر بخواهيم مسئله مكث كردن را براي برنامه‌اي ترتيبي چون S حل كنيم، مي‌توانيم بعد از هر فرمان درS يك فرمان Send به يك ماشين اختياري، بدهيم. در آن صورت بديهي است و به وضوح معلوم است كه تعداد پيغامهاي صادر شده از S محدود است، اگر و فقط اگر S پايان پذيرد. در عمل، غير قابل حل كردن مسئله مكث، از نوشتن برنامه توسط برنامه‌نويسها جلوگيري نمي‌كند. معمولا" مي‌توان مدت زماني را كه يك برنامه اجرا مي‌شود تخمين زد و چنانكه خيلي طولاني بود، آن را از كار انداخت. اما يك تفاوت اساسي بين محاسبات ترتيبي و توزيعي، در اين است كه به سادگي محاسبات ترتيبي، نمي‌توان محاسبات توزيعي را در هنگام اجرا از كار انداخت. مثلا"نمي‌توانيم كليدي مانند Kill را فشار دهيم و روند اجرا را پايان دهيم. چرا كه تعداد بيش از يك كامپيوتر، در آن واحد مشغول كار هستند. از طرف ديگر، در شبكهاست. اما به دليل وجود واكنش زنجيره‌اي شبكه غيرقابل استفاده است. به همين دليل جلوگيري از واكنشهاي زنجيره‌اي بسيار مهم است.

تشابهات مثالهاي فوق:
در مثال Ethernet، مسئله پيغامهاي داده پراكني بدون اينكه تشخيص داده شوند، از ماشيني به ماشين ديگر انتقال يافتند. يك حلقه بسته شامل پيغامهاي داده پراكني، بسيار مشكل ساز است؛ اما اساس مسئله، در ناتواني پروتكل IP مي‌باشد و در تشخيص اينكه، مشغول فرستادن پيغامي است كه قبلا" از خود عبور كرده است. در مثال بعدي، حلقه بسته پيغامها از پيغامهاي خطايي به وجود آمده بود كه، خود از پيغامهاي خطاي ديگر مايه مي‌گرفتند. باز هم در اين مثال، ساز و كار پردازش خطا، به قدر كافي باهوش نبود كه متوجه شود در حال گزارش دادن خطاي قبلي است. توجه كنيد در مثال هر بار، پيغام خطاي جديدي از پيغام خطاي قبلي كه ريشه در پيغام خطاي اوليه داشت، گزارش مي‌شد. در مثال مجموعه شبكه‌هاي متصل محلي، مسئله در ناتواني تشخيص حلقه بسته نبود؛ بلكه در رشد نمايي پيغامها بود قبل از اينكه حلقه بسته‌اي توسط الگوريتم مخصوصي تشخيص داده شود. اين مثال، نشان مي‌دهد كه حتي داشتن يك حلقه بسته موقتي نيز مي‌تواند، باعث از كار انداختن سيستم شود.

توليد اتوماتيكي پيغام
Automatic Generation of Message - AGM
علت اصلي نهفته در مثالهاي فوق را مي‌تواند AGM ناميد. اين تعريف، شامل هر پيغامي كه به وسيله برنامه‌اي كه خود توسط يك پيغام از ماشين ديگري به وجود آمده، مي‌شود. بنابراين، به جلو فرستادن يك پيغام، يك AGM است. استفاده از آن امري است ضروري. زيرا كه انتشار متناوب اطلاعات مسيرگزيني نمي‌تواند، بدون AGM انجام شود و يا اينكه پيغامهاي خطا، همواره اتوماتيكي به وجود مي‌آيند و داشتن فايلForward، به AGM نياز دارد. اما از طرفي AGM باعث ضربه‌پذير شدن پروتكلهاي شبكه مي‌گردد. حتي ساده‌ترين AGM مي تواند باعث واكنش زنجيره‌اي شود. يك مثال ديگر: برنامه تعطيلات، برنامه‌اي است ساده و پر طرفدار. اين برنامه، پيغامهاي رسيده را مي‌خواند و به طور اتوماتيك جواب مي‌دهد. مثلا": من به تعطيلات رفته ام و وقتي برگشتم جوابتان را مي‌دهم. با تمام سادگي، چون اين برنامه AGM است، بايد در نوشتن آن محتاط بود. براي مثال، اگر پيغامي كه توسط برنامه داده مي‌شود، باعث به وجود آمدن پيغام خطايي شود خود پيغام خطا، پيغام برنامه را دريافت خواهد كرد و بدين ترتيب، يك حلقه بسته بي نهايت به وجود مي­آيد. يك برنامه خوب تعطيلات، بايد تمام آدرسهايي را كه به آنها جواب داده، به حافظه بسپارد تا به آنها دوباره جواب ندهد لااقل در يك زمان مشخص. در آن مو قع، اگر برنامه در تشخيص آدرس پيغام اصلي درماند، به وجود آمدن حلقه بسته بي‌نهايت امكان‌پذير مي‌شود.

روشهاي كنترل AGM
روشهاي كنترل AGM، فاقد عموميت بوده و ناكا في‌اند. بهترين روش در مقابله با بي‌نهايت پيغام، پيرشدن Aging است. هر پيغام داراي محدوده‌اي است كه به طور متناوب هر بار كه پيغام به جلو فرستاده مي‌شود، پيرامونش افزايش مي يابد، تا زماني كه پيغام خيلي كهنه شود. كهنه شدن مي‌تواند به تعداد جهشهاي پيغام، از كامپيوتري به كامپيوتر ديگر بستگي داشته باشد. اگر پيغام، تعداد زيادي جهش داشته باشد كنار زده مي‌شود. اين روشي است كه قرار بود از به وجود آمدن حلقه بسته پيغامها جلوگيري كند. يك روش ديگر، عبارت است از: استفاده از زمان معيني از تولد يك پيغام به دور انداخته مي‌شود. اين روش احتياج به همزمان سازي با ساعت سيستم دارد. در بسياري موراد، كهولت نمي‌تواند كافي باشد. علت آن اين است كه، AGM نه تنها باعث جلو رفتن پيغامها مي‌شود؛ بلكه مي تواند پيغامهاي كاملا" جديدي ايجاد كند. يك پيغام جديد، بنا به تعريف يك پيغام جوان است. توجه كنيد كه اين، دقيقا" عامل به وجود آمدن حلقه‌هاي بسته بي‌نهايت در مثالهاي قبلي است. روند كهنه شدن حلقه بسته اصلي تشخيص داده شده بود؛ ولي يك پيغام خطا (تولد پيغام جوان) باعث به وجود آمدن حلقه بسته ديگري شد. بنابراين مي‌توان استدلال كرد كه پيغامهاي خطا، با داشتن سن پيغامهايي كه درباره آنها هستند، بايد به وجود آيند. ساختن چنين مكانيزمي كار آساني نيست. براي مثال، پيغام خطايي كه راجع به پيغام كهنه‌اي است، نمي‌تواند گزارشش را به كسي دهد؛ زيرا كه قبلا" زندگي خودش هم به سر آمده است. شايد بهتر باشد كه تعداد جهشهاي پيغام خطا را، برابر ماكزيمم تعداد جهشها منهاي K قرار دهيم. K عددي است كوچك و اختياري، براي دادن زمان كافي به كليه پيغامهاي خطا. اما اشكال ديگري پيدا مي‌شود و آن امكان دوباره به وجود آمدن حلقه هاي بسته بي‌نهايت است. راه حل ديگر تكيه بر Time-outs است چنانچه پيغامي در مدت مشخصي به مقصدش نرسيد، آن را كنار مي‌گذاريم و يا يك كپي از پيغام فرستاده شده را نگه داشته، در صورتي كه بعد از مدتي جواب پيغام دريافت نشد؛ پيغام را دوباره مي‌فرستيم. گرچه اين روش، باعث جلوگيري از زيست پيغامهاي كهنه مي‌شود؛ ليكن از تولد پيغامهاي جوان جلوگيري نخواهد كرد. يك نقص ديگر اين روش، اين است كه واكنشهاي زنجيره‌اي مي‌توانند زودتر از Time-outs شبكه را پراز پيغام كنند. روش ديگر براي جلوگيري از بي‌نهايت AGM، جذب است. به پيغامها اجازه توليد پيغامها اجازه توليد پيغامهاي جوان داده مي‌شود؛ اما هر پيغامي بنا به قانونهايي جذب مي­شود. يك قانون كلي چسباندن يك شناسنامه به هر پيغام و به حافظه سپردن تمام شناسنامه‌هاست. اگريك پيغام، دوبار به يك گره رسيد، كنار گذاشته مي‌شود. اشكال اين روش، اين است كه چگونه شناسنامه‌ها را به وجود آورد و براي چه مدتي آنها را به حافظه سپرد.

يك روش نسبتا" بي خطر براي كم كردن واكنشهاي زنجيره‌اي
با مخلوط كردن روشهايي كه تا به حال راجع به آنها صحبت شد، مي توانيم الگوريتمي به دست آوريم كه در بيشتر موارد از واكنشهاي زنجيره‌اي جلوگيري كند. تعدادي الگوريتم مشابه پيشنهاد شده است (مرجع شماره7 در پايان مقاله:R.Periman). الگوريتم پيشنهادي من ( نويسنده) بيشتر از ديگران عموميت دارد و تنها آن دسته AGM را كه در اين بحث مطرح شدند در برنمي‌گيرد. البته به خاطر عموميت آن، ممكن است از راندمان كمتري نسبت به ديگر الگوريتمها بر خوردار باشد؛ ولي در نظر گرفتن AGM به صورت عمومي از اهميت كافي برخوردار است. اين الگوريتم لااقل مي‌تواند به عنوان راهنما مورد استفاده قرار گيرد. همان طور كه ديديم، AGM ريشه به وجود آمدن واكنشهاي زنجيره‌اي مي‌باشد؛ ليكن وجود آن براي پروتكلهاي شبكه ضروري است. ما نمي‌توانيم و نمي‌خواهيم كه استفاده از AGM را محدود كنيم، همين طور ما نمي‌توانيم بين AGM خوب و بد تشخيص دهيم. من (نويسنده) بر اين باور هستم كه هر AGM را بايد با پتانسيل ايجاد واكنش زنجيره‌اي در نظر گرفت. قبلا" مثالهايي را ديديم كه چگونه واكنشهاي زنجيره‌اي ناشي از پيغامهاي خطا و گم شده (چون پيغامهاي داده پراكني)، شبكه را از كار انداختند. هر وقت كه يك پروتكل مجبور شد كه يك پيغام را در جواب يك پيغام ديگر به وجود آورد، آن پروتكل بايد مورد آزمايش قرار گيرد. مشكل در اينجاست كه پروتكلها بسيار پيچيده و مرتبط به هم‌اند. بعضي مواقع غير ممكن است كه تمام احتمالات پيش بيني شود. اگر ما AGM را يك ريسك در نظر بگيريم، بايد يك الگوريتم جذبي كلي در اختيار داشته باشيم كه به هر AGM بخورد. البته ممكن است كه الگوريتم را در يك مورد بخصوص طوري تغيير داد كه راندمان آن بيشتر شود؛ اما داشتن الگوريتم كلي براي تمام پروتكلها مورد نظر است. در اينجا به چهار قانون اشاره شد.
1) يك شناسنامه منحصر به فرد براي هر پيغام در شبكه لازم است. در بعضي موارد در خود پيغام به قدر كافي اطلاعات براي مشخص كردن وجود دارد (مانند اسم كامپيوتر ميزبان، فرستنده، روز و غيره).
2) هر موقع كه يك پيغام مانند 2M در اثر پيغام ديگري مثل1M به وجود آمد و به عبارت ديگر AGM اجرا شد، بايد پيغام2M داراي شناسنامه‌اي مانند پيغام1M شود. اين قانون، بايد براي هر AGM اجرا شود بدون در نظر گرفتن اينكه، پروتكل چقدر ساده با چقدر مورد استفاده قرار مي‌گيرد.
3) تمام شناسنامه‌هاي پيغامهايي كه AGM از آنها به وجود آمده، بايد در كامپيوتر ميزبان به حافظه شوند.
4) وقتي كه يك پيغام ضبط شده در يك كامپيوتر ميزبان، دوباره به كامپيوتر ميزبان بر مي‌گردد، بايد از توليد دوبارهAGM توسط آن جلوگيري كرد. قوانين فوق اگر به صورت صحيح اجرا شوند، براي جلوگيري از واكنشهاي زنجيره‌اي كافي هستند.

نظريه 2
فرض كنيد قوانين فوق، توسط تمام پروتكلها اجرا شوند، و H حداكثر تعداد پيغام به وجود آمده توسط شخص در تمام شبكه باشد. فرض كنيد L تعداد پلها در شبكه باشد. در اين صورت، تعداد كل پيغامها در شبكه حداكثر 2LH مي‌شود.

اثبات:
قانون دوم، اشاره مي‌كند به اينكه تمام پيغامهايي كه از برنامه‌ها به وجود مي‌آيند، داراي همان شناسنامه‌هاي پيغامهاي نوشته شده به وسيله اشخاص هستند. بنابراين برنامه ها هيچ گونه پيغام جديدي به وجود نمي‌آورند. هر پيغامي مانند M كه با دست نوشته شده است، حداكثر دو دفعه (در دو جهت مختلف) مي‌تواند از يك پل عبور كند. قوانين فوق نشان دادند كه از هر گره، يك پيغام بيش از يك بار عبور نمي كند. بنابراين، تعداد كل پيغامها برابر 2LH است. قوانين1 تا4 ممكن است، نتواند وجود واكنشهاي زنجيره‌اي را به طور كامل محو كند؛ زيرا كه تضميني در اجرا صحيح آنها و يا، بدون نقص بودن سخت افزارها وجود ندارد. اگر سخت‌افزاري، متحمله داشتن نقص فني باشد، عملكرد هيچ الگوريتمي صد در صد نيست. در ضمن، اثبات درستي پروتكلها بسيار مشكل است و در اينجا از آنها صحبت نخواهد شد. به دلايل زير، اين قوانين به نظر ناكافي و محدود مي‌آيد:
1-شرط به حافظه سپردن شناسنامه هر پيغامي كه روي شبكه قرار گيرد، به نظر صحيح نمي‌آيد. زيرا براي اين كار، به مقدار زيادي حافظه نياز خواهيم داشت. خوشبختانه ما مي‌توانيم اين شرط را ساده‌تر كرده و مقرر كنيم كه: فقط پيغامهاي رسيده در فاصله زماني T (مثلا" يك ساعت) تا زمان حاضر حفظ شوند. مقدار T به سرعت و بزرگي شبكه بستگي دارد. اين شرط ساده شده، از واكنشهاي زنجيره‌اي جلوگيري نمي‌كند؛ زيرا ممكن است حلقه‌هاي بسته بي‌نهايت به وجود آيد، ليكن در اثر وجود فاصله زماني معيني آنها شديدا" كاهش مي‌يابد. مثلا" اگر T، يك ساعت باشد در آن صورت، هر حلقه بسته بي‌نهايت، مي‌تواند يك بار در يك ساعت به وجود آيد. به حافظه سپردن پيغامهاي اخير در فاصله زماني T، به مقدار زيادي حافظه احتياج ندارد. همچنين امتحان كردن پيغامها، براي يافتن كپي آنها به پردازش چنداني احتياج ندارد. پس كافي نيست كه فقط K پيغام را در فاصله زماني محدودي چون T به حافظه سپرد. اگر واكنش زنجيره‌اي، براي يك كامپيوتر ميزبان شامل بيش از K پيغام باشد، آن واكنش زنجيره‌اي ممكن است قابل جلوگيري نباشد. دومين مسئله به وجود آوردن شناسنامه‌هاست. يك پيغام، معمولا" از تعدادي لايه‌هاي پروتكلي عبور مي‌كند كه هر كدام مستقل‌اند و ممكن است، يك AGM تعداد زيادي از آنها را شامل گردد. اگر يك شناسنامه در يك پروتكل نزديك به سخت افزار ايجاد شود، پروتكلهاي فوق ممكن است، نتوانند آنرا بشناسند. براي اينكه آن شناسنامه قسمتي از پيغامي است كه براي پروتكلهاي فوق، غيرقابل دسترسي است.براي جلوگيري از واكنشهاي زنجيره‌اي، بايد هر چه زودتر شناسنامه به وجود آيند (مثلا" به وسيله برنامه‌هاي كاربردي) و بعد از به وجود آمدن،در جايي محفوظ باشند تا در دسترس تمامي پروتكلهاي AGM قرار گيرند. البته امكان داشتن شناسنامه براي هر لايه پروتكلي وجود دارد؛ ولي ضروري نيست. اين روش، ممكن است باعث زير پا گذاشتن استقلال هر لايه شود. سومين مسئله نيز، در اثر تعدد در پروتكلها و استقلال آنهاست. پيغامي كه به يك ماشين ميزبان بخصوص مي‌رسد، ممكن است چند AGM را در لايه‌هاي مختلف شامل گردد. بنا به تعريف، AGM به پيغامهاي گفته مي‌شود كه از ماشين ديگري نشات گرفته شده باشند اما پيدا كردن منشا كار ساده‌اي نيست. طبق قوانين3 و4، در هر كامپيوتر ميزبان جدولي وجود دارد كه، باعث جلوگيري از دومين AGM وارد شده به كامپيوتر مي شود. براي از بين بردن مسئله AGM در لايه‌ها، مي‌توان براي هرلايه‌اي، يك جدول بنا كرد و يا آن دسته AGM را كه در يك ماشين حركت مي‌كنند، به عنوان پيغام معمولي و نه AGM در نظر گرفت. مسئله چهارم در بسيار محدود كردن پيغامهاي خطا توسط قانون چهارم است. اگر خطايي به وسيله ماشيني كه قبلا" پيغام آن را فرستاده است تشخيص داده شود، آن ماشين، ديگر نمي‌تواند پيغام خطا به وجود آورد، ساده كردن قانون چهارم، مي تواند به صورت زير انجام گيرد: ما مي توانيم دو و يا بيشتر پيغام تعريف كنيم. مثلا" پيغامهاي نرمال و پيغامهاي خطا. يك پيغام خطاي به وجود آمده از يك پيغام نرمال، همان شناسنامه را حفظ مي‌كند، اما اسم يك پيغام خطا را خواهدگرفت. بنابراين، قانون4 به صورت زير تغيير مي يابد: هيچ كامپيوتر ميزبان نمي تواند پيغامي كه داراي شناسنامه و هويت بخصوص است بيش از يك مرتبه از خود عبور دهد. توجه كنيد كه اين قانون از به وجود آمدن پيغامهاي خطا توسط پيغامهاي خطاي ديگر جلوگيري مي‌كند. پنجمين اشكال، در مدت زمان و فضاي لازم جهت اجراي قوانين است. بعضي از پروتكلها، مانند پروتكلهاي مسير گزيني، تا حد زيادي به اجرا با راندمان بالا نياز دارند، و نمي توانند با راندمان پايين عمل كنند. ما مي‌توانيم تعداد زيادي از قوانين را ساده كنيم؛ اما اين كار باعث افزايش احتمال وقوع واكنشهاي زنجيره‌اي خواهد شد. براي مثال هنگامي كه يك پيغام فرستاده شده از A به B، از چند كامپيوتر ديگر عبور مي‌كند، كامپيوترهاي سر راه به ثبت كردن اين واقعه احتياج ندارند و ما مي‌توانيم فرض كنيم كه پيغام از A به B مستقيما" ارسال شده است. اساس كار اين قوانين، بر عموميت آنها بر تمام پروتكلهاست بعضي از پروتكلها نوشته شده‌اند كه قوانين فوق را در كل يا جزء اجرا كنند. براي مثال: ICMP Internet Control Message Protocol پروتكلي است مسوءول پيغامهاي خطا، كه اجازه به وجود آمدن يك پيغام خطا از پيغام خطاي ديگر را نمي‌دهد (مرجع شماره8 در پايان مقاله:D.Comer). برنامه تعطيلات كه يك قسمتي از بركلي Unix است، كه كپي آدرسهايي را كه به آنها پيغام فرستاده نگه مي‌دارد و به طور قرار دادي به هر آدرسي، فقط يك بار در هفته پيغام مي‌فرستد. قوانين فوق، باعث محدوديت در طراحي پروتكل مي گردند. بعضي مواقع، يك كامپيوتر به فرستادن يك پيغام، بيش از يك بار احتياج دارد. در اين صورت مي‌توان براي تعداد دفعاتي كه مي‌توان يك پيغام را فرستاد، حد بالايي قائل شد و در عوض داشتن يك نوع پيغام، چند نوع را در نظر گرفت. پيدا كردن اين موارد و مشخص كردن نوع پيغامها مهم است. حتي اگر قوانين ترميم شده اجرا نگردد. براي مثال، پروتكل سوال كردن را در نظر بگيريد. فرض كنيد كه كامپيوتري درصدد فرستادن جواب به سوال كننده برآيد. اگر پيغام جواب، از كامپيوتري بگذرد كه در فرستادن پيغام سوال دخالت داشته، بنابر قوانين فوق، نبايد جواب فرستاده شود. (جواب AGM پيغام سوال خواهد بود و در اين صورت داراي همان شناسنامه است). راه حل اين سوال واضح است. بايد دو نوع پيغام باشد: 1- سوالي 2- جوابي. ما مي توانيم قانون چهارم را قدري ساده‌تر كنيم: پيغامهايي كه از يك كامپيوتر عبور مي كنند، براي مدتي ذخيره شوند (مثلا" يك ساعت). اين كار، باعث برداشتن تعدادي از محدوديتها مي‌گردد. مانند محدوديت در برابر پيغامهاي خطا، در جواب پيغامهاي خطاي ديگر و در ضمن باعث كم شدن سرعت به وجود آمدن واكنشهاي زنجيره‌اي نيز مي‌گردد. ضروري است كه قبل از ذخيره كردن يك پيغام، وجود يا عدم وجود آن در حافظه مشخص مي‌گردد.