کنترل تنظیمات(رمزنگاری)
در امنیت اطلاعات از رمزنگاری استفاده میشود تا اطلاعات به فرمی تبدیل شود که به غیر از کاربر مجاز کس دیگری نتواند از آن اطلاعات استفاده کند حتی اگر به آن اطلاعات دسترسی داشته باشد. اطلاعاتی که رمزگذاری شده تنها توسط کاربر مجازی که کلید رمز نگاری را دارد میتواند دوباره به فرم اولیه تبدیل شود(از طریق فرایند رمزگشایی).

رمزنگاری برای حفاظت اطلاعات در حال انتقال (اعم از الکترونیکی و یا فیزیکی) و یا ذخیره شده است. رمزنگاری امکانات خوبی برای امنیت اطلاعات فراهم می کند از جمله روشهای بهبود یافته تصدیق هویت، فشرده سازی پیام، امضاهای دیجیتالی، قابلیت عدم انکار و ارتباطات شبکه رمزگذاری شده.
رمزنگاری اگر درست پیاده سازی نشود می تواند مشکلات امنیتی در پی داشته باشد. راه حلهای رمز نگاری باید با استفاده از استانداردهای پذیرفته شده که توسط کارشناسان مستقل و خبره بررسی دقیق شده انجام گیرد. همچنین طول و قدرت کلید استفاده شده در رمزنگاری بسیار مهم است. کلیدی ضعیف یا خیلی کوتاه منجر به رمزگذاری ضعیف خواهد شد. مدیریت کلید رمزنگاری موضوع مهمی است. رمز گذاری داده ها و اطلاعات و تبدیل کردن آنها به شکل رمز گذاری شده ،روشس موثر در جلوگیری از انتشار اطلاعات محرمانه شرکت می باشد.
معماری و طراحی سیستمهای امن
مسائل حقوقی مرتبط با امنیت اطلاعات
حراست فیزیکی
حراست فیزیکی دارایی ها عنصری است که در هر سیستم حسابداری وجود دارد.رایانه ها و اطلاعات و برنامه های موجود در این رایانه ها در حقیقت دارایی های با ارزش سازمان هستند.امنیت فیزیکی می تواند با اعمال کنترل ها ی زیر به دست آید : ۱-در صورت داشتن امکانات مالی استفاده از سیستم امنیتی هشدار دهنده و دوربین مدار بسته ۲-نگهداری و حفاظت و انبار کردن ابزار های حاوی اطلاعات مثل دیسک ها و نوار ها
حراست فیزیکی چیز خوبی است.
به دنبال روشی برای مدیریت امنیت اطلاعات
به دنبال جستوجوی روشی بهجز شیوههای سنتی امنیت شبکهٔ IT شرکت آیبیام و چند شرکت و سازمان IT شورای جدید حفاظت از اطلاعات را احداث کردهاند. هدف از این کار ایجاد روشهایی برای مقابله با هکرها و دیگر راههای دسترسی غیرقانونی به اطلاعات است. شرکت IBM در گزارشی اعلام کرد که این شورا برای تنظیم طرحی نوین برای محافظت و کنترل در اطلاعات شخصی و سازمانی افراد همهٔ تلاش خود را به کار خواهد گرفت. استوارت مکایروین، مدیر بخش امنیت اطلاعات مشتری IBM میگوید: "بیشتر شرکتها و همینطور افراد حقیقی کنترل و امنیت اطلاعات خود را به عنوان مسئلهای فرعی در نظر میگیرند و در کنار دیگر فعالیتهای خود به آن میپردازند." به عقیدهٔ اعضای این شورا کنترل و نظارت بر اطلاعات به این معناست که چهگونه یک شرکت در کنار ایجاد امکان بهرهبرداری از اطلاعات مجاز، محدودیتهایی را برای دسترسی و محافظت از بخشهای مخفی تدارک میبیند. اعضای این شورا برآناند تا تعریفی جدید از مدیرت کنترل اطلاعات و سیاستهای مربوط به آن ارایه دهند. همچنین پیشبینی شده است که این راهکارها بخش مهمی را در زیربنای سیاستهای IT داشته باشد. مکآروین میگوید: "ایدهٔ اولیهٔ تشکیل این شورا در جلسات سه ماه یکبار و غیررسمی شرکت IBM با مشتریان و برخی شرکا شکل گرفت. ما با افرادی گفتوگو میکردیم که با مشکلات ناامنی اطلاعات به شکل عینی روبهرو بودند. برای شرکت IBM و شرکای تجاری آن مشارکت مشتریان عاملی موثر در اصلاح و هماهنگی نرمافزارهای امنیتی موجود و طراحی نرمافزارهای جدید است. ما سعی میکنیم ابزارهای امنیتی IBM را با نیازهای مشتری آشتی دهیم. بسیاری از مشتریان شرکت که اکنون اعضای فعال این شورا را تشکیل دادهاند، خود طرح پروژههای جدید برای کنترل خروج اطلاعات و مدیریت آنرا تنظیم کردهاند. آنها داوطلب شدهاند که برای اولین بار این روشها را در مورد اطلاعات شخصی خود به کار گیرند. بدیهی است شرایط واقعی در مقایسه با وضعیت آزمایشی نتیجهٔ بهتری دارد. رابرت گاریگ، مدیر ارشد بخش امنیتی بانک مونترآل و یکی از اعضای شورا، معتقد است اکنون زمان آن رسیده که شرکتها روشهای جدیدی را برای کنترل اطلاعات مشتریان خود بهکار بگیرند او میگوید: "من فکر میکنم اکنون زمان مدیریت کنترل اطلاعات فرارسیده است." پیش از این بخش IT تمام حواس خود را بر حفاظت از شبکهها متمرکز کرده بود، اما اکنون اطلاعات به عنوان بخشی مستقل به محدودیتهایی برای دستیابی و همچنین روشهای مدیریتی نوین نیازمند است. این حوزه به کوششی چشمگیر نیازمند است. شرکتها هر روز بیش از پیش با سرقت اطلاعات روبهرو هستند. هدف اصلی شورا ایجاد مدیریتی هوشمند و بیواسطه است . مسائل مورد توجه این شورا به ترتیب اهمیت عبارتاند از: "امنیت، حریم خصوصی افراد، پذیرش قوانین و برطرف کردن سوء تعبیرهایی که در مورد IT و وظایف آن وجود دارد." به نظر این شورا مشکل اصلی ناهماهنگی برنامههای بخش IT با فعالیتهای شرکت و بیتوجهی به ادغام این راهکارهاست. شرکت آمریکن اکسپرس و بانک جهانی، دانشگاه ایالتی کارولینای شمالی و ... از اعضای این شورا هستند
برنامه جامع امنیت تجارت الکترونیک
با وجود تمام مزایایی که تجارت الکترونیک بهمراه دارد، انجام تراکنشها و ارتباطات آنلاین محملی بزرگتر برای سوء استفاده از فناوری و حتی اعمال مجرمانه فراهم میکند. این مشکلات تنها مختص تجارت الکترونیک نیست و بخشی از مشکلات گسترده ایست که در سراسر جهان گریبانگیر سیستمهای اطلاعاتی و کامپیوتری هستند. هر ساله سازمانهای بسیاری هدف جرائم مرتبط با امنیت اطلاعات، از حملات ویروسی گرفته تا کلاه برداریهای تجاری از قبیل سرقت اطلاعات حساس تجاری و اطلاعات محرمانه کارتهای اعتباری، قرار میگیرند. چنین حملات امنیتی موجب میلیونها دلار ضرر و اخلال در فعالیت شرکتها میشوند. بسیاری از گزارشگران و مشاوران هزینه خسارات مرتبط با نقائص امنیتی را تا میلیاردها دلار برآورد کرده اند. با اینحال آنچه مهمتر از صحت میزان این خسارات است، این واقعیت است که با افزایش کاربران سیستمهای اطلاعاتی، دسترسی آسان به اطلاعات و رشد فزاینده کاربران مطلع (فنی) میتوان به راحتی فرض کرد که تعداد این سوء استفادهها از فناوری و تهدیدهای امنیتی نیز به همین نسبت افزایش یابد. متاسفانه، از آنجا که بسیاری از شرکتها دوست ندارند نفوذ به سیستمشان را تایید و اطلاعاتشان در مورد این نفوذها و وسعت آنها را با دیگران به اشتراک بگذارند، میزان دقیق خساراتی که شرکتها از جرائم مرتبط با امنیت متحمل شده اند، را نمیتوان بدست آورد. بی میلی به ارائه اطلاعات مربوط به نقائص امنیتی، از این ترس معمول ناشی میشود که اطلاع عموم از چنین نقائصی باعث بی اعتمادی مشتریان نسبت به توانایی شرکت در حفظ دارائی های خود میشود و شرکت با این کار مشریان خود و در نتیجه سوددهی اش را از دست خواهد داد. از آنجایی که مصرف کنندگان امروزی نسبت به ارائه آن لاین اطلاعات مالی بی اعتماد اند، شرکتها با تایید داوطلبانه این واقعیت که قربانی جرائم مرتبط با امنیت شده اند، چیزی بدست نمیآورند. با هیجانات رسانهای که امروزه دور و بر اینترنت و قابلیتهای آن وجود دارد، حفظ یک تصویر مثبت از امنیت تجارت الکترونیک در اذهان، دغدغه شماره یک بسیاری از شرکتها است و برای بقاء و باقی ماندن در رقابت کاملا ضروری است. نبود اطلاعات دست اول از موارد واقعی برنامه ریزی و مقابله با تهدیدهای امنیتی را بسیار مشکلتر کرده است اما با این وجود هم فناوریها و روشهای امنیت اطلاعات و فنون کلی مدیریتی در برنامه ریزی و حفاظت از منابع فناوری اطلاعات سازمان، در یک دهه گذشته پیشرفت قابل توجهی داشته اند. اکنون خبرگانی هستند که در حوزه امنیت سایبر تخصص پیدا کرده اند و راهکارهای زیادی برای حفاظت از فناوریهای تجارت الکترونیک از مجرمین بالقوه فضای سایبر دارند. بسیاری از شرکتها دریافته اند که برای موفقیت در تجارت الکترونیک، علاوه بر روشهای امنیتی که برای حفاظت از منابع فناوری اطلاعات طراحی شده اند، نیازمند سرمایه گذاری و برنامه ریزی برای ایجاد یک برنامه جامع امنیت هستند تا بدان طریق از داراییهایشان در اینترنت محافظت و از نفوذ مجرمین به سیستم هایشان که موجب خسارت دیدن فعالیتهای تجارت الکترونیک آنها میشود جلوگیری کنند. برنامه جامع امنیت تجارت الکترونیک شامل برنامههای حفاظتی که از فناوریهای موجود (نرمافزار و سختافزار)، افراد، برنامه ریزی راهبردی استفاده میکنند و برنامههای مدیریتی که برای حفاظت از منابع و عملیات تجارت الکترونیک شرکت طراحی و اجرا میشوند، است.چنین برنامهای برای بقاء کلی فعالیتهای تجارت الکترونیک شرکت حیاتی است و سازمان باید آنرا به عنوان مولفهای اساسی در راهبرد تجارت الکترونیک موفق به حساب آورد.موفقیت چنین برنامههایی به حمایت کامل مدیران رده بالا و مشارکت کامل بخش فناوری اطلاعات و مدیریت در جهت درک تاثیر گذاری و محدودیتهای برنامه است.علاوه بر این برای اطمینان از بروز بودن این برنامه و ابزارهای آن و هماهنگی با آخرین فناوریها و فنون مدیریت، باید آن را بطور مداوم مورد ارزیابی و سنجش قرار داد.
ارزیابی عملیات تجارت الکترونیک
اولین گام برای ایجاد یک برنامه جامع امنیت تجارت الکترونیک، انجام یک ارزیابی کامل از ارزش و اهمیت تجارت الکترونیک در موفقیت کلی اهداف و برنامه تجاری شرکت است.گام بعدی باید ارزیابی آسیب پذیری سیستم تجارت الکترونیک شرکت از هر دو جنبهٔ تهدیات داخلی و خطرات موجود خارجی است.شناخت آسیب پذیریهای خارجی بسیار ساده تر از دیدن آسیب پذیریهای خارجی است.با این وجود تمام تلاشها باید در راستای شناخت حوزههایی باشد که سیستم از داخل مورد سوءاستفاده قرار میگیرد.این کار را میتوان به خوبی با صحبت با کاربران سیستم و توسعه دهندگان انجام داد.علاوه بر این بستههای نرمافزاری بسیاری هم وجود دارند که میتوانند توانایی نظارت بر استفاده کلی از سیستم و دسترسی داخلی به آن را دارند و میتوانند تحلیل کاملی از فعالیتهای مشکوک احتمالی کاربران داخلی ارائه دهند.
طرح مستمر
گام بعد ایجاد یک طرح مستمر تجارت الکترونیک است که بطور شفاف تمام نقاط ضعف احتمالی، روشهای جلوگیری و مقابله با آنها و برنامههای محتمل برای ترمیم نفوذها و و تهدیدهای امنیتی است. بسیاری از شرکتها تمایل دارند به خود بقبولانند که داشتن برنامه ضد ویروس و دیوارههای آتش، برای حفاظت از سیستم هایشان کافی است. داشتن چنین نرمافزارهایی گام نخست خوبی است اما حتی با این وجود نیز سیستمهای تجارت الکترونیک با نقاط ضعف زیر روبرو هستند:
آتش سوزی و انفجار،
خرابکاری عمدی در سختافزار، نرمافزار و یا دادهها و اطلاعات،
دزدیده شدن نرمافزار و سختافزار،
فقدان پرسنل کلیدی امنیت تجارت الکترونیک
فقدان برنامههای کاربردی
فقدان فناوری
فقدان ارتباطات
فقدان فروشندگان.
تهدیدها در هر یک از این حوزهها باید به دقت ارزیابی و طرحهای محتمل ترمیم باید با جزئیات کامل برای مقابله با هر کدام تهیه شود. علاوه بر این باید در طرح افراد مسئول مدیریت و تصحیح مشکلات بوجود آمده از این نقائص معین گردند. سپس، سازمان باید نرمافزارها و سختافزارهایی که حفاظت از سیستم تجارت الکترونیک را برعهده دارند را، ارزیابی کند.درک اینکه فناوریهای مورد استفاده باید مناسب نیازهای شرکت بوده و برای تمام تهدیدهای امنیتی احتمالی سطحی از محافظت را فراهم کنند از اهمیت بسزایی برخوردار است.
حوزههای بحرانی که با مورد توجه قرار گیرند عبارتند از : حساسیت دادهها و اطلاعات در دسترس، حجم ترافیک دسترسی و روشهای دسترسی.امنیت تجارت SSL (Secure Socket Layer) یا SET (Secure Electronic Transaction)الکترونیک مبتنی بر تکنولوژی باید با استفاده از الگوی امنیت شامل لایههای مختلف امنیتی باشد.هدف نهایی امنیت مبتنی بر فناوری باید فراهم کردن صحت، یکپارچگی، پنهان کردن و غیر قابل رد بودن موثر باشد.بسیاری از شرکتها ،
در طول این مرحله ایجاد برنامه جامع امنیت تجارت الکترونیک از تجربه شرکتهای دیگری که در زمینه ارزیابی سیستمهای امنیتی مبتنی بر فناوری تخصص دارند، استفاده می کنند.
افراد
مهمترین مولفه هر برنامه امنیتی موثری افرادی هستند که آنرا اجرا و مدیریت میکنند.نقائص امنیتی بیش از آن که ناشی از سیستم باشند، به وسیلهٔ کاربران سیستم و افرادی که مدیریت سیستم را برعهده دارند، رخ میدهند.بیشتر مطالعات گذشته نشان داده اند تهدیدهای داخلی سیستمهای تجارت الکترونیک اغلب بسیار مهمتر از تهدیدهای خارجی بوده اند.در بسیاری از موارد مجرمانی که در نفوذ به سیستم موفق بوده اند، یا دانش قبلی از سیستم داشته و یا دارای شریک جرمی در داخل شرکت بوده اند.مهمترین ابزاری که مدیریت برای کاهش تهدید داخلی در اختیار دارد آموزش کاربران داخلی سیستم و پرسنل مدیریت آن در مورد نتیجه اخلال در یکپارچگی و امنیت سیستم است.بسیاری از کاربران از این واقعیت که نفوذ به سیستمهای اطلاعاتی جرم است و اخلالگران تحت پیگرد قانونی قرار میگیرند، اطلاع دارند.شرکت، با آگاهی دادن به کاربران و ترساندن آنها از عواقب این اعمال میتواند تا حد زیادی مانع آنها گردد.
راهبرد
ایجاد یک برنامه راهبردی موثر و بی عیب اهمیت بسیاری در امنیت تجارت الکترونیک دارد.چنین راهبردی باید شامل هدف کلی برنامه جامعه امنیت تجارت الکترونیک، اهداف جزئی و محدوده آن باشد.این راهبرد باید در راستای راهبرد تجاری کلی تجارت الکترونیک شرکت باشد.یکی از اهداف جزئی این راهبرد میتواند حفاظت کامل از تمامی منابع تجارت الکترونیک شرکت و فراهم کردن امکان ترمیم هر اخلال با حداکثر سرعت ممکن باشد.علاوه بر این این برنامه باید شامل منابع مورد نیاز برای پشتیبانی از اهداف جزئی و کلی در کنار قیود و محدودیتهای برنامه راهبردی و همچنین حاوی منابع انسانی کلیدی، اجرای برنامههای امنیتی متفاوت در غالب بخشی از برنامه راهبردی باشد. ساختارهای مدیریتی و تصمیم سازان
مدیریت
موفقیت برنامه جامع امنیت تجارت الکترونیک در گروی مدیریت موثر چنین برنامهای است.پشتیبانی مدیریت، از مدیران رده بالا شروع و در تمام سطوح ادامه مییابد.چنین برنامهای در شرکتهای بزرگ باید مستقیما بوسیله یک مدیر ارشد و در شرکتهای متوسط و کوچکتر بوسیله رئیس یا صاحب آن شرکت اداره و نظارت گردد.مسئولیت اصلی مدیر برنامه به روز نگه داشتن کامل برنامه، اجرای برنامههای آن و ارزیابی مجدد برنامههای موجود است.
بخشی از فعالیتهای چنین فردی آموختن راهکارهای عملی موثر در برنامه امنیتی سایر سازمانهاست که میتواند آنرا با مطالعه مقالات، کتب و مطالعات موردی منتشر شده بدست آورد.
مدرک CISSP
مدرک (Certified Information Systems Security Professional) مدرکی برای متخصصان امنیت است وکسب این مدرک مراحلی دارد . این مدرک مستقل از هر نوع سختافزار و نرمافزار خاص یک شرکت است و به عنوان یک عنصر کلیدی در ارزشیابی داوطلبان کار در موسسات بزرگ و سیستمهای Enterprise شناخته میشود. افرادی که صاحب این مدرک باشند میتوانند برای پست مدیریت شبکههای کوچک و بزرگ اطلاعاتی خود را معرفی کنند.
در سال ۱۹۸۹، چند سازمان فعال در زمینهٔ امنیت اطلاعات کنسرسیومی را تحت نام ۲(ISC) بنا نهادند که هدف ان ارایهٔ استانداردهای حفاظت از اطلاعات و آموزش همراه با ارایهٔ مدرک مربوط به افراد آموزش دیده بود.
در سال ۱۹۹۲ کنسرسیوم مذکور اقدام به طرح مدرکی به نام CISSP نمود که هدف آن ایجاد یک سطح مهارت حرفهای و عملی در زمینهٔ امنیت اطلاعات برای افراد علاقمند به آن بود.
اعتبار
این مدرک به دلیل این که بر خلاف سایر مدارک امنیتی، وابسته به محصولات هیچ شرکت خاصی نیست، قادر است به افراد متخصص امنیت، تبحر لازم را در طرح و پیاده سازی سیاستهای کلان امنیتی اعطا نماید. اتخاذ تصمیمات اصلی و حیاتی برای برقراری امنیت، مسئلهای نیست که مدیران سطح بالای یک سازمان بزرگ آن را به عهدهٔ کارشناسان تازه کار یا حتی آنهایی که مدرک امنیت در پلتفرم کاری خاصی را دارند، بگذارند بلکه مهم آن است که این قبیل مسئولیتها به اشخاصی که درک کامل و مستقلی از مسائل مربوط به مهندسی اجتماعی دارند و میتوانند در جهت برقراری امنیت اطلاعات در یک سازمان به ارایه خط مشی ویژه و سیاست امنیت خاص کمک کننده سپرده شود .
مراحل کسب مدرک
برای کسب مدرک CISSP، داوطلبان باید حداقل سه سال سابقه کاری مفید در یکی از زمینههای امنیتی اعلام شده توسط ۲(ISC) را داشته باشند . از ابتدای سال۲۰۰۳ به بعد شرط مذکور به چهار سال سابقه کاری یا سه سال سابقه کار به علاوهٔ یک مدرک دانشگاهی یا بینالمللی در این زمینه تغییر یافت .زمینههای کاری امنیتی که انجمن ۲(ISC) داوطلبان را به داشتن تجربه در آن ترغیب میکند شامل ده مورد است کهبه آن عنوان (Common Body Of Knowlege) CBKیا همان اطلاعات پایه در زمینهٔ امنبیت اطلاق میشود این موارد عبارتنداز:
سیستمهای کنترل دسترسی
توسعه سیستمها وبرنامههای کاربردی
برنامه ریزی برای مقابله با بلاهای طبیعی وخطرات کاری
رمزنگاری
مسا ئل حقوقی
امنیت عملیاتی
امنیت فیزیکی
مدلهاومعماری امنیتی
تمرینهای مدیریت امنیت
امنیت شبکهٔ دادهای و مخابراتی
زمانی که داوطلب موفق به دریافت مدرک CISSP میشود باید برای حفظ این مدرک همواره خود را در وضعیت مطلوبی از لحاظ سطح دانش علمی وعملی در مقولههای مورد نظر نگه دارد .هر دارندهی این مدرک لازم است که هرسال برای تمدید گواهینامهٔ خود، کارهایی را برای اثبات پشتکار وعلاقهٔ خود به مقولهٔ امنیت انجام داده وموفق به کسب سالانه ۱۲۰ امتیاز (از لحاظ ارزش کارهای انجام شده از دید انجمن ) شود. به این منظور انجمن، فعالیتهای مختلفی را برای کسب امتیاز ات لازم به دارندگان مدرک پیشنهاد میکند. به عنوان مثال کسب یک مدرک معتبر در زمینهٔ امنیت اطلاعات، فعالیت در زمینههای آموزش مفاهیم امنیتی به متخصصان دیگر، استخدام شدن درشرکتهای معتبر، چاپ مقالات در زمینهٔ امنیت، شرکت در سمینارهای مهم وکنفرانسهای مربوط به حوزهٔ امنیت، داشتن تحقیقات شخصی وامثال آن میتوانند دارندگان مدرک را در کسب امتیازات لازم یاری دهند . کلیهٔ فعالیتهای مذکور به صورت مستند و مکتوب تحویل نمایندگیهای انجمن در سراسر دنیا شده تا مورد ارزشیابی و امتیازدهی انجمن قرار گیرد . در صورتی که دارندهٔ مدرک موفق به کسب ۱۲۰ امتیاز نشود باید جهت حفظ مدرک خود دوباره آزمون CISSP را بگذراند. CISSP شامل ۲۵۰ سئوال چهار گزینهای است که کلیهٔ مفاهیم امنیتی را در بر میگیرد .CISSP یکی از محبوبترین مدارک بینالمللی در سال ۲۰۰۳ شناخته شده به طوری که با یک افزایش ۱۳۴ درصدی در بین داوطلبان نسبت به سال قبل روبه رو بودهاست .همین آمار حاکی از موفقیت ۹۸ درصدی دارندگان مدرک در حفظ مدرک خود است . به هر حال با اوضاع و احوال امروزهٔ دنیای فناوری اطلاعات وخطرات ناشی از حملات انواع ویروسها و هکرها به نظر میرسد هر روز نیاز به وجود متخصصان امنیتی، خصوصا دارندگان مدارک معتبر بینالمللی بیشتر محسوس است. هم اکنون دو مدرک امنیتی یعنی SECURITY+ متعلق به انجمن کامپتیا و مدرک CISSP متعلق به انجمن بینالمللی حرفهایهای امنیت از شهرت خاصی در این زمینه برخوردارند.
وضعیت درآمد
طبق آمار مجلهٔ certification میانگین درآمد سالانهٔ دارندگان مدرک CISSP در سال ۲۰۰۴ نزدیک به ۸۶ هزار دلار بوده است این میزان درآمد در بین درآمد مدرکهای مختلف که طبق همین آمارگیری بدست آمده نشان میدهد که مدرک CISSP در جایگاه اول قرار دارد. در این مقایسه مدرک security+ با ۶۰ هزار دلار و مدرک MCSE securityMCP با ۶۷ هزار دلار در سال در ردههای دیگر این فهرست قرار دارند که همه نشان از اهمیت ودر عین حال دشوار بودن مراحل کسب و نگهداری مدرک CISSP دارد.
شبکه رایانهای
یک شبکه رایانهای (به انگلیسی: Computer Network)، که اغلب به طور خلاصه به آن شبکه گفته میشود، گروهی از رایانهها و دستگاههایی میباشد که توسط کانالهای ارتباطی به هم متصل شدهاند. شبکه رایانهای باعث تسهیل ارتباطات میان کاربران شده و اجازه میدهد کاربران منابع خود را به اشتراک بگذارند.
معرفی
یک شبکه رایانهای اجازه به اشتراک گذاری منابع و اطلاعات را میان دستگاههای متصل شده به هم، میدهد. در دهه ۶۰ میلادی، آژانس پروژههای تحقیقاتی پیشرفته (ARPA)، بودجهای را به منظور طراحی شبکه آژانس پروژههای تحقیقاتی پیشرفته (ARPANET) برای وزارت دفاع ایالات متحده آمریکا اختصاص داد. این اولین شبکه رایانهای در جهان بود. توسعه شبکه از سال ۱۹۶۹ و براساس طرحهای توسعه یافته دهه ۶۰ آغاز شد.
هدف
شبکههای رایانهای را میتوان برای اهداف مختلف استفاده کرد:
تسهیل ارتباطات: با استفاده از شبکه، افراد میتوانند به آسانی از طریق رایانامه (E-mail)، پیامرسانی فوری، اتاق گفتگو (Chat room)، تلفن، تلفن تصویری و ویدئو کنفرانس، ارتباط برقرار کنند.
اشتراک گذاری سخت افزارها: در یک محیط شبکهای، هر کامپیوتر در شبکه میتواند به منابع سخت افزاری در شبکه دسترسی پیدا کرده و از آنها استفاده کند؛ مانند چاپ یک سند به وسیله چاپگری که در شبکه به اشتراک گذاشته شدهاست.
اشتراک گذاری پروندهها، دادهها و اطلاعات: در یک محیط شبکهای، هر کاربر مجاز میتواند به دادهها و اطلاعاتی که بر روی رایانههای دیگر موجود در شبکه، ذخیره شدهاست دسترسی پیدا کند. قابلیت دسترسی به دادهها و اطلاعات در دستگاههای ذخیره سازی اشتراکی، از ویژگیهای مهم بسیاری از شبکههای است.
اشتراک گذاری نرمافزارها: کاربرانی که به یک شبکه متصل اند، میتوانند برنامههای کاربردی موجود روی کامپیوترهای راه دور را اجرا کنند.
تعریف
شبکههای کامپیوتری مجموعهای از کامپیوترهای مستقل متصل به یکدیگرند که با یکدیگر ارتباط داشته و تبادل داده میکنند. مستقل بودن کامپیوترها بدین معناست که هر کدام دارای واحدهای کنترلی و پردازشی مجزا بوده و بود و نبود یکی بر دیگری تاثیرگذار نیست.
متصل بودن کامپیوترها یعنی از طریق یک رسانه فیزیکی مانند کابل، فیبر نوری، ماهوارهها و... به هم وصل میباشند. دو شرط فوق شروط لازم برای ایجاد یک شبکه کامپیوتری میباشند اما شرط کافی برای تشکیل یک شبکه کامپیوتری داشتن ارتباط و تبادل داده بین کامپیوترهاست.
این موضوع در بین متخصصین قلمرو شبکه مورد بحث است که آیا دو رایانه که با استفاده از نوعی از رسانه ارتباطی به یکدیگر متصل شدهاند تشکیل یک شبکه میدهند. در این باره بعضی مطالعات میگویند که یک شبکه نیازمند دست کم ۳ رایانه متصل به هم است. یکی از این منابع با عنوان «ارتباطات راه دور: واژهنامه اصطلاحات ارتباطات راه دور»، یک شبکه رایانهای را این طور تعریف میکند: «شبکهای از گرههای پردازشگر دیتا که جهت ارتباطات دیتا به یکدیگر متصل شدهاند». در همین سند عبارت «شبکه» این طور تعریف شدهاست: «اتصال سه با چند نهاد ارتباطی». رایانهای که به وسیلهای غیر رایانهای متصل شدهاست (به عنوان نمونه از طریق ارتباط «اترنت» به یک پرینتر متصل شدهاست) ممکن است که یک شبکه رایانهای به حساب آید، اگرچه این نوشتار به این نوع پیکربندی نمیپردازد.
این نوشتار از تعاریفی استفاده میکند که به دو یا چند رایانه متصل به هم نیازمند است تا تشکیل یک شبکه را بدهد. در مورد تعداد بیشتری رایانه که به هم متصل هستند عموماً توابع پایهای مشترکی دیده میشود. از این بابت برای آنکه شبکهای به وظیفهاش عمل کند، سه نیاز اولیه بایستی فراهم گردد، «اتصالات»، «ارتباطات» و «خدمات». اتصالات به بستر سختافزاری اشاره دارد، ارتباطات به روشی اشاره میکند که بواسطه آن وسایل با یکدیگر صحبت کنند و خدمات آنهایی هستند که برای بقیه اعضای شبکه به اشتراک گذاشته شدهاند.
دسته بندی شبکههای رایانهای
فهرست زیر، دستههای شبکههای رایانهای را نشان میدهد.
بر اساس نوع اتصال
شبکههای رایانهای را میتوان با توجه به تکنولوژی سخت افزاری و یا نرمافزاری که برای اتصال دستگاههای افراد در شبکه استفاده میشود، دسته بندی کرد؛ مانند فیبر نوری، اترنت، شبکه محلی بیسیم، HomePNA، ارتباط خط نیرو یا G.hn.
اترنت با استفاده از سیم کشی فیزیکی دستگاهها را به هم متصل میکند. دستگاههای مستقر معمول شامل هابها، سوئیچها، پلها و یا مسیریابها هستند.
تکنولوژی شبکه بیسیم برای اتصال دستگاهها، بدون استفاده از سیم کشی طراحی شدهاست. این دستگاهها از امواج رادیویی یا سیگنالهای مادون قرمز به عنوان رسانه انتقال استفاده میکنند.
فناوری ITU-T G.hn از سیم کشی موجود در منازل (کابل هممحور، خطوط تلفن و خطوط برق) برای ایجاد یک شبکه محلی پر سرعت (تا۱ گیگا بیت در ثانیه) استفاده میکند.
بر اساس تکنولوژی سیم کشی
زوج بههمتابیده: زوج بههمتابیده یکی از بهترین رسانههای مورد استفاده برای ارتباطات راه دور میباشد. سیمهای زوج بههمتابیده، سیم تلفن معمولی هستند که از دو سیم مسی عایق که دو به دو به هم پیچ خوردهاند درست شدهاند. از زوج بههمتابیده برای انتقال صدا و دادهها استفاده میشود. استفاده از دو سیم بههمتابیده به کاهش تداخل و القای الکترومغناطیسی کمک میکند. سرعت انتقال داده، دامنهای از ۲ میلیون بیت درهر ثانیه تا ۱۰۰ میلیون بیت در هر ثانیه، دارد.
کابل هممحور: کابل هممحور به طور گستردهای در سیستمهای تلویزیون کابلی، ساختمانهای اداری، و دیگر سایتهای کاری برای شبکههای محلی، استفاده میشود. کابلها یک رسانای داخلی دارند که توسط یک عایق منعطف محصور شدهاند، که روی این لایهٔ منعطف نیز توسط یک رسانای نازک برای انعطاف کابل، به هم بافته شدهاست. همهٔ این اجزا، در داخل عایق دیگری جاسازی شدهاند. لایه عایق به حداقل رساندن تداخل و اعوجاج کمک میکند. سرعت انتقال داده، دامنهای از ۲۰۰ میلیون تا بیش از ۵۰۰ میلیون بیت در هر ثانیه دارد.
فیبر نوری: کابل فیبر نوری شامل یک یا چند رشته از الیاف شیشهای پیچیده شده در لایههای محافظ میباشد. این کابل میتواند نور را تا مسافتهای طولانی انتقال دهد. کابلهای فیبر نوری تحت تاثیر تابشهای الکترومغناطیسی قرار نمیگیرند. سرعت انتقال ممکن است به چند تریلیون بیت در ثانیه برسد.
بر اساس تکنولوژی بی سیم
ریزموج (مایکروویو) زمینی: ریزموجهای زمینی از گیرندهها و فرستندههای زمینی استفاده میکنند. تجهیزات این تکنولوژی شبیه به دیشهای ماهوارهاست. مایکروویو زمینی از دامنههای کوتاه گیگاهرتز استفاده میکند، که این سبب میشود تمام ارتباطات به صورت دید خطی محدود باشد. فاصله بین ایستگاههای رله (تقویت سیگنال) حدود ۳۰ مایل است. آنتنهای ریزموج معمولاً در بالای ساختمانها، برجها، تپهها و قله کوه نصب میشوند.
ماهوارههای ارتباطی: ماهوارهها از ریزموجهای رادیویی که توسط جو زمین منحرف نمیشوند، به عنوان رسانه مخابراتی خود استفاده میکنند.
ماهوارهها در فضا مستقر هستند؛ به طور معمول ۲۲۰۰۰ مایل (برای ماهوارههای geosynchronous) بالاتر از خط استوا. این سیستمهای در حال چرخش به دور زمین، قادر به دریافت و رله صدا، دادهها و سیگنالهای تلویزیونی هستند.
تلفن همراه و سیستمهای پی سی اس: تلفن همراه و سیستمهای پی سی اس از چندین فناوری ارتباطات رادیویی استفاده میکنند. این سیستمها به مناطق مختلف جغرافیایی تقسیم شدهاند. هر منطقه دارای فرستندههای کم قدرت و یا دستگاههای رله رادیویی آنتن برای تقویت تماسها از یک منطقه به منطقه بعدی است.
شبکههای محلی بی سیم: شبکه محلی بی سیم از یک تکنولوژی رادیویی فرکانس بالا (مشابه سلول دیجیتالی) و یک تکنولوژی رادیویی فرکانس پایین استفاده میکند. شبکههای محلی بی سیم از تکنولوژِی طیف گسترده، برای برقراری ارتباط میان دستگاههای متعدد در یک منطقه محدود، استفاده میکنند. نمونهای از استاندارد تکنولوژی بی سیم موج رادیویی، IEEE است.
ارتباطات فروسرخ: ارتباط فروسرخ، سیگنالهای بین دستگاهها را در فواصل کوچک (کمتراز ۱۰ متر) به صورت همتا به همتا (رو در رو) انتقال میدهد؛ در خط انتقال نباید هیچ گونه شی ای قرار داشته باشد.
بر اساس اندازه
ممکن است شبکههای رایانهای بر اساس اندازه یا گستردگی ناحیهای که شبکه پوشش میدهد طبقهبندی شوند. برای نمونه «شبکه شخصی» (PAN)، «شبکه محلی» (LAN)، «شبکه دانشگاهی» (CAN)، «شبکه کلانشهری» (MAN) یا «شبکه گسترده» (WAN).
بر اساس لایه شبکه
ممکن است شبکههای رایانهای مطابق مدلهای مرجع پایهای که در صنعت به عنوان استاندارد شناخته میشوند مانند «مدل مرجع ۷ لایه OSI» و «مدل ۴ لایه TCP/IP»، بر اساس نوع «لایه شبکه»ای که در آن عمل میکنند طبقهبندی شوند.
بر اساس معماری کاربری
ممکن است شبکههای رایانهای بر اساس معماری کاربری که بین اعضای شبکه وجود دارد طبقهبندی شود، برای نمونه معماریهای Active Networking، «مشتری-خدمتگذار» (Client-Server) و «همتا به همتا» Peer-to-Peer (گروه کاری).
بر اساس همبندی (توپولوژی)
ممکن است شبکههای رایانهای بر اساس نوع همبندی شبکه طبقهبندی شوند مانند: «شبکه باس» (Bus)، «شبکه ستاره» ((Star، «شبکه حلقهای» (Ring)، «شبکه توری» (Mesh)، «شبکه ستاره-باس» (Star-Bus)، «شبکه درختی» (Tree) یا «شبکه سلسله مراتبی» (Hierarchical) و ترکیبی و غیره.
همبندی شبکه را میتوان بر اساس نظم هندسی ترتیب داد. همبندیهای شبکه طرحهای منطقی شبکه هستند. واژه منطقی در اینجا بسیار پرمعنی است. این واژه به این معنی است که همبندی شبکه به طرح فیزیکی شبکه بستگی ندارد. مهم نیست که رایانهها در یک شبکه به صورت خطی پشت سر هم قرار گرفته باشند، ولی زمانیکه از طریق یک «هاب» به یکدیگر متصل شده باشند تشکیل همبندی ستاره میکنند نه باس. و این عامل مهمی است که شبکهها در آن فرق میکنند، جنبه ظاهری و جنبه عملکردی.
بر اساس قرارداد
ممکن است شبکههای رایانهای بر اساس «قرارداد» ارتباطی طبقهبندی شوند. برای اطلاعات بیشتر لیست پشتههای قرارداد شبکه و لیست قراردادهای شبکه را ببینید.
انواع شبکههای رایانهای از نظر اندازه
شبکه شخصی (PAN)
«شبکه شخصی» (Personal Area Network) یک «شبکه رایانهای» است که برای ارتباطات میان وسایل رایانهای که اطراف یک فرد میباشند (مانند «تلفن»ها و «رایانههای جیبی» (PDA) که به آن «دستیار دیجیتالی شخصی» نیز میگویند) بکار میرود. این که این وسایل ممکن است متعلق به آن فرد باشند یا خیر جای بحث خود را دارد. برد یک شبکه شخصی عموماً چند متر بیشتر نیست. موارد مصرف شبکههای خصوصی میتواند جهت ارتباطات وسایل شخصی چند نفر به یکدیگر و یا برقراری اتصال این وسایل به شبکهای در سطح بالاتر و شبکه «اینترنت» باشد.
ارتباطات شبکههای شخصی ممکن است به صورت سیمی به «گذرگاه»های رایانه مانند USB و فایروایر برقرار شود. همچنین با بهرهگیری از فناوریهایی مانند IrDA، «بلوتوث» (Bluetooth) و UWB میتوان شبکههای شخصی را به صورت بیسیم ساخت.
شبکه محلی (LAN)
«شبکه محلی» (Local Area Network) یک «شبکه رایانهای» است که محدوده جغرافیایی کوچکی مانند یک خانه، یک دفتر کار یا گروهی از ساختمانها را پوشش میدهد. در مقایسه با «شبکههای گسترده» (WAN) از مشخصات تعریفشده شبکههای محلی میتوان به سرعت (نرخ انتقال) بسیار بالاتر آنها، محدوده جغرافیایی کوچکتر و عدم نیاز به «خطوط استیجاری» مخابراتی اشاره کرد.
دو فناوری «اترنت» (Ethernet) روی کابل «جفت به هم تابیده بدون محافظ» (UTP) و «وایفای» (Wi-Fi) رایجترین فناوریهایی هستند که امروزه استفاده میشوند، با این حال فناوریهای «آرکنت» (ARCNET) و «توکن رینگ» (Token Ring) و بسیاری روشهای دیگر در گذشته مورد استفاده بودهاند.
شبکه کلانشهری (MAN)
«شبکه کلانشهری» (Metropolitan Area Network) یک «شبکه رایانهای» بزرگ است که معمولاً در سطح یک شهر گسترده میشود. در این شبکهها معمولاً از «زیرساخت بیسیم» و یا اتصالات «فیبر نوری» جهت ارتباط محلهای مختلف استفاده میشود.
شبکه گسترده (WAN)
«شبکه گسترده» (Wide Area Network) یک «شبکه رایانهای» است که نسبتاً ناحیه جغرافیایی وسیعی را پوشش میدهد (برای نمونه از یک کشور به کشوری دیگر یا از یک قاره به قارهای دیگر). این شبکهها معمولاً از امکانات انتقال خدمات دهندگان عمومی مانند شرکتهای مخابرات استفاده میکند. به عبارت کمتر رسمی این شبکهها از «مسیریاب»ها و لینکهای ارتباطی عمومی استفاده میکنند.
شبکههای گسترده برای اتصال شبکههای محلی یا دیگر انواع شبکه به یکدیگر استفاده میشوند. بنابراین کاربران و رایانههای یک مکان میتوانند با کاربران و رایانههایی در مکانهای دیگر در ارتباط باشند. بسیاری از شبکههای گسترده برای یک سازمان ویژه پیادهسازی میشوند و خصوصی هستند. بعضی دیگر بهوسیله «سرویس دهندگان اینترنت» (ISP) پیادهسازی میشوند تا شبکههای محلی سازمانها را به اینترنت متصل کنند.
شبکه متصل (Internetwork)
دو یا چند «شبکه» یا «زیرشبکه» (Subnet) که با استفاده از تجهیزاتی که در لایه ۳ یعنی «لایه شبکه» «مدل مرجع OSI» عمل میکنند مانند یک «مسیریاب»، به یکدیگر متصل میشوند تشکیل یک شبکه از شبکهها یا «شبکه متصل» را میدهند. همچنین میتوان شبکهای که از اتصال داخلی میان شبکههای عمومی، خصوصی، تجاری، صنعتی یا دولتی به وجود میآید را «شبکه متصل» نامید.
در کاربردهای جدید شبکههای به هم متصل شده از قرارداد IP استفاده میکنند. بسته به اینکه چه کسانی یک شبکه از شبکهها را مدیریت میکنند و اینکه چه کسانی در این شبکه عضو هستند، میتوان سه نوع «شبکه متصل» دسته بندی نمود:
شبکه داخلی یا اینترانت (Intranet)
شبکه خارجی یا اکسترانت (Extranet)
شبکهاینترنت (Internet)
شبکههای داخلی یا خارجی ممکن است که اتصالاتی به شبکه اینترنت داشته و یا نداشته باشند. در صورتی که این شبکهها به اینترنت متصل باشند در مقابل دسترسیهای غیرمجاز از سوی اینترنت محافظت میشوند. خود شبکه اینترنت به عنوان بخشی از شبکه داخلی یا شبکه خارجی به حساب نمیآید، اگرچه که ممکن است شبکه اینترنت به عنوان بستری برای برقراری دسترسی بین قسمتهایی از یک شبکه خارجی خدماتی را ارائه دهد.
شبکه داخلی (Intranet)
یک «شبکه داخلی» مجموعهای از شبکههای متصل به هم میباشد که از قرارداد IP و ابزارهای مبتنی بر IP مانند «مرورگران وب» استفاده میکند و معمولاً زیر نظر یک نهاد مدیریتی کنترل میشود. این نهاد مدیریتی «شبکه داخلی» را نسبت به باقی قسمتهای دنیا محصور میکند و به کاربران خاصی اجازه ورود به این شبکه را میدهد. به طور معمولتر شبکه درونی یک شرکت یا دیگر شرکتها «شبکه داخلی» میباشد.
به طور مثال شبکه ملی در ایران نوعی از شبکههای داخلی (اینترانت) میباشد.
شبکه خارجی (Extranet)
یک «شبکه خارجی» یک «شبکه» یا یک «شبکه متصل» است که به لحاظ قلمرو محدود به یک سازمان یا نهاد است ولی همچنین شامل اتصالات محدود به شبکههای متعلق به یک یا چند سازمان یا نهاد دیگر است که معمولاً ولی نه همیشه قابل اعتماد هستند. برای نمونه مشتریان یک شرکت ممکن است که دسترسی به بخشهایی از «شبکه داخلی» آن شرکت داشته باشند که بدین ترتیب یک «شبکه خارجی» درست میشود، چراکه از نقطهنظر امنیتی این مشتریان برای شبکه قابل اعتماد به نظر نمیرسند. همچنین از نظر فنی میتوان یک «شبکه خارجی» را در گروه شبکههای دانشگاهی، کلانشهری، گسترده یا دیگر انواع شبکه (هر چیزی غیر از شبکه محلی) به حساب آورد، چراکه از نظر تعریف یک «شبکه خارجی» نمیتواند فقط از یک شبکه محلی تشکیل شده باشد، چون بایستی دست کم یک اتصال به خارج از شبکه داشته باشد.
شبکه اینترنت (Internet)
شبکه ویژهای از شبکهها که حاصل اتصالات داخلی شبکههای دولتی، دانشگاهی، عمومی و خصوصی در سرتاسر دنیا است. این شبکه بر اساس شبکه اولیهای کار میکند که «آرپانت» (ARPANET) نام داشت و بهوسیله موسسه «آرپا» (ARPA) که وابسته به «وزارت دفاع ایالات متحده آمریکا» است ایجاد شد. همچنین منزلگاهی برای «وب جهانگستر» (WWW) است. در لاتین واژه Internet برای نامیدن آن بکار میرود که برای اشتباه نشدن با معنی عام واژه «شبکه متصل» حرف اول را بزرگ مینویسند.
اعضای شبکه اینترنت یا شرکتهای سرویس دهنده آنها از «آدرسهای IP» استفاده میکنند. این آدرسها از موسسات ثبت نام آدرس تهیه میشوند تا تخصیص آدرسها قابل کنترل باشد. همچنین «سرویس دهندگان اینترنت» و شرکتهای بزرگ، اطلاعات مربوط به در دسترس بودن آدرسهایشان را بواسطه «قرارداد دروازه لبه» (BGP) با دیگر اعضای اینترنت مبادله میکنند.
اجزای اصلی سختافزاری
همه شبکهها از اجزای سختافزاری پایهای تشکیل شدهاند تا گرههای شبکه را به یکدیگر متصل کنند، مانند «کارتهای شبکه»، «تکرارگر»ها، «هاب»ها، «پل»ها، «راهگزین»ها و «مسیریاب»ها. علاوه بر این، بعضی روشها برای اتصال این اجزای سختافزاری لازم است که معمولاً از کابلهای الکتریکی استفاده میشود (از همه رایجتر «کابل رده ۵» (کابل Cat5) است)، و کمتر از آنها، ارتباطات میکروویو (مانند آیتریپلئی ۸۰۲٫۱۱) و («کابل فیبر نوری» Optical Fiber Cable) بکار میروند.
کارت شبکه (network adapter)
«کارت شبکه»، «آداپتور شبکه» یا «کارت واسط شبکه» (Network Interface Card) قطعهای از سختافزار رایانهاست و طراحی شده تا این امکان را به رایانهها بدهد که بتوانند بر روی یک شبکه رایانهای با یکدیگر ارتباط برقرار کنند. این قطعه دسترسی فیزیکی به یک رسانه شبکه را تامین میکند و با استفاده از «آدرسهای MAC»، سیستمی سطح پایین جهت آدرس دهی فراهم میکند. این شرایط به کاربران اجازه میدهد تا به وسیله کابل یا به صورت بیسیم به یکدیگر متصل شوند.
تکرارگر (repeater)
«تکرارگر» تجهیزی الکترونیکی است که سیگنالی را دریافت کرده و آن را با سطح دامنه بالاتر، انرژی بیشتر و یا به سمت دیگر یک مانع ارسال میکند. بدین ترتیب میتوان سیگنال را بدون کاستی به فواصل دورتری فرستاد. از آنجا که تکرارگرها با سیگنالهای فیزیکی واقعی سروکار دارند و در جهت تفسیر دادهای که انتقال میدهند تلاشی نمیکنند، این تجهیزات در «لایه فیزیکی» یعنی اولین لایه از «مدل مرجع OSI» عمل میکنند.
هاب (جعبه تقسیم)- hub
«هاب» قطعهای سختافزاری است که امکان اتصال قسمتهای یک شبکه را با هدایت ترافیک در سراسر شبکه فراهم میکند. هابها در «لایه فیزیکی» از «مدل مرجع OSI» عمل میکنند. عملکرد هاب بسیار ابتدایی است، به این ترتیب که داده رسیده از یک گره را برای تمامی گرههای شبکه کپی میکند. هابها عموماً برای متصل کردن بخشهای یک «شبکه محلی» بکار میروند. هر هاب چندین «درگاه» (پورت) دارد. زمانی که بستهای از یک درگاه میرسد، به دیگر درگاهها کپی میشود، بنابراین همه قسمتهای شبکه محلی میتوانند بستهها را ببینند.
پل (bridge)
یک «پل» دو «زیرشبکه» (سگمنت) را در «لایه پیوند داده» از «مدل مرجع OSI» به هم متصل میکند. پلها شبیه به «تکرارگر»ها و «هاب»های شبکهاند که برای اتصال قسمتهای شبکه در «لایه فیزیکی» عمل میکنند، با این حال پل با استفاده از مفهوم پلزدن کار میکند، یعنی به جای آنکه ترافیک هر شبکه بدون نظارت به دیگر درگاهها کپی شود، آنرا مدیریت میکند. بستههایی که از یک طرف پل وارد میشوند تنها در صورتی به طرف دیگر انتشار مییابند که آدرس مقصد آنها مربوط به سیستمهایی باشد که در طرف دیگر پل قرار دارند. پل مانع انتشار پیغامهای همگانی در قطعههای کابل وصلشده به آن نمیشود.
پلها به سه دسته تقسیم میشوند:
پلهای محلی: مستقیماً به «شبکههای محلی» متصل میشود.
پلهای دوردست: از آن میتوان برای ساختن «شبکههای گسترده» جهت ایجاد ارتباط بین «شبکههای محلی» استفاده کرد. پلهای دور دست در شرایطی که سرعت اتصال از شبکههای انتهایی کمتر است با «مسیریاب»ها جایگزین میشوند.
پلهای بیسیم: برای «اتصال شبکههای محلی» به «شبکههای محلی بیسیم» یا «شبکههای محلی بیسیم» به هم یا ایستگاههای دوردست به «شبکههای محلی» استفاده میشوند.
راهگزین (switch)
«راهگزین» که در پارسی بیشتر واژه «سوئیچ» برای آن بکار برده میشود، وسیلهای است که قسمتهای شبکه را به یکدیگر متصل میکند. راهگزینهای معمولی شبکه تقریباً ظاهری شبیه به «هاب» دارند، ولی یک راهگزین در مقایسه با هاب از هوشمندی بیشتری (و همچنین قیمت بیشتری) برخوردار است. راهگزینهای شبکه این توانمندی را دارند که محتویات بستههای دادهای که دریافت میکنند را بررسی کرده، دستگاه فرستنده و گیرنده بسته را شناسایی کنند، و سپس آن بسته را به شکلی مناسب ارسال نمایند. با ارسال هر پیام فقط به دستگاه متصلی که پیام به هدف آن ارسال شده، راهگزین «پهنای باند» شبکه را به شکل بهینهتری استفاده میکند و عموماً عملکرد بهتری نسبت به یک هاب دارد.
از نظر فنی میتوان گفت که راهگزین در «لایه پیوند داده» از «مدل مرجع OSI» عمل کنند. ولی بعضی انواع راهگزین قادرند تا در لایههای بالاتر نیز به بررسی محتویات بسته بپردازند و از اطلاعات بدست آمده برای تعیین مسیر مناسب ارسال بسته استفاده کنند. به این راه گزینها به اصطلاح «راهگزینهای چندلایه» (Multilayer Switch) میگویند.
مسیریاب (router)
«مسیریاب»ها تجهیزات شبکهای هستند که بستههای داده را با استفاده از «سرایند»ها و «جدول ارسال» تعیین مسیر کرده، و ارسال میکنند. مسیریابها در «لایه شبکه» از «مدل مرجع OSI» عمل میکنند. همچنین مسیریابها اتصال بین بسترهای فیزیکی متفاوت را امکانپذیر میکنند. این کار با چک کردن سرایند یک بسته داده انجام میشود.
مسیریابها از «قراردادهای مسیریابی» مانند ابتدا کوتاهترین مسیر را انتخاب کردن استفاده میکنند تا با یکدیگر گفتگو کرده و بهترین مسیر بین هر دو ایستگاه را پیکربندی کنند. هر مسیریاب دسته کم به دو شبکه، معمولاً شبکههای محلی، شبکههای گسترده و یا یک شبکه محلی و یک سرویس دهنده اینترنت متصل است. بعضی انواع مودمهای DSL و کابلی جهت مصارف خانگی درون خود از وجود یک مسیریاب نیز بهره میبرند.
در امنیت اطلاعات از رمزنگاری استفاده میشود تا اطلاعات به فرمی تبدیل شود که به غیر از کاربر مجاز کس دیگری نتواند از آن اطلاعات استفاده کند حتی اگر به آن اطلاعات دسترسی داشته باشد. اطلاعاتی که رمزگذاری شده تنها توسط کاربر مجازی که کلید رمز نگاری را دارد میتواند دوباره به فرم اولیه تبدیل شود(از طریق فرایند رمزگشایی).

رمزنگاری برای حفاظت اطلاعات در حال انتقال (اعم از الکترونیکی و یا فیزیکی) و یا ذخیره شده است. رمزنگاری امکانات خوبی برای امنیت اطلاعات فراهم می کند از جمله روشهای بهبود یافته تصدیق هویت، فشرده سازی پیام، امضاهای دیجیتالی، قابلیت عدم انکار و ارتباطات شبکه رمزگذاری شده.
رمزنگاری اگر درست پیاده سازی نشود می تواند مشکلات امنیتی در پی داشته باشد. راه حلهای رمز نگاری باید با استفاده از استانداردهای پذیرفته شده که توسط کارشناسان مستقل و خبره بررسی دقیق شده انجام گیرد. همچنین طول و قدرت کلید استفاده شده در رمزنگاری بسیار مهم است. کلیدی ضعیف یا خیلی کوتاه منجر به رمزگذاری ضعیف خواهد شد. مدیریت کلید رمزنگاری موضوع مهمی است. رمز گذاری داده ها و اطلاعات و تبدیل کردن آنها به شکل رمز گذاری شده ،روشس موثر در جلوگیری از انتشار اطلاعات محرمانه شرکت می باشد.
معماری و طراحی سیستمهای امن
مسائل حقوقی مرتبط با امنیت اطلاعات
حراست فیزیکی
حراست فیزیکی دارایی ها عنصری است که در هر سیستم حسابداری وجود دارد.رایانه ها و اطلاعات و برنامه های موجود در این رایانه ها در حقیقت دارایی های با ارزش سازمان هستند.امنیت فیزیکی می تواند با اعمال کنترل ها ی زیر به دست آید : ۱-در صورت داشتن امکانات مالی استفاده از سیستم امنیتی هشدار دهنده و دوربین مدار بسته ۲-نگهداری و حفاظت و انبار کردن ابزار های حاوی اطلاعات مثل دیسک ها و نوار ها
حراست فیزیکی چیز خوبی است.
به دنبال روشی برای مدیریت امنیت اطلاعات
به دنبال جستوجوی روشی بهجز شیوههای سنتی امنیت شبکهٔ IT شرکت آیبیام و چند شرکت و سازمان IT شورای جدید حفاظت از اطلاعات را احداث کردهاند. هدف از این کار ایجاد روشهایی برای مقابله با هکرها و دیگر راههای دسترسی غیرقانونی به اطلاعات است. شرکت IBM در گزارشی اعلام کرد که این شورا برای تنظیم طرحی نوین برای محافظت و کنترل در اطلاعات شخصی و سازمانی افراد همهٔ تلاش خود را به کار خواهد گرفت. استوارت مکایروین، مدیر بخش امنیت اطلاعات مشتری IBM میگوید: "بیشتر شرکتها و همینطور افراد حقیقی کنترل و امنیت اطلاعات خود را به عنوان مسئلهای فرعی در نظر میگیرند و در کنار دیگر فعالیتهای خود به آن میپردازند." به عقیدهٔ اعضای این شورا کنترل و نظارت بر اطلاعات به این معناست که چهگونه یک شرکت در کنار ایجاد امکان بهرهبرداری از اطلاعات مجاز، محدودیتهایی را برای دسترسی و محافظت از بخشهای مخفی تدارک میبیند. اعضای این شورا برآناند تا تعریفی جدید از مدیرت کنترل اطلاعات و سیاستهای مربوط به آن ارایه دهند. همچنین پیشبینی شده است که این راهکارها بخش مهمی را در زیربنای سیاستهای IT داشته باشد. مکآروین میگوید: "ایدهٔ اولیهٔ تشکیل این شورا در جلسات سه ماه یکبار و غیررسمی شرکت IBM با مشتریان و برخی شرکا شکل گرفت. ما با افرادی گفتوگو میکردیم که با مشکلات ناامنی اطلاعات به شکل عینی روبهرو بودند. برای شرکت IBM و شرکای تجاری آن مشارکت مشتریان عاملی موثر در اصلاح و هماهنگی نرمافزارهای امنیتی موجود و طراحی نرمافزارهای جدید است. ما سعی میکنیم ابزارهای امنیتی IBM را با نیازهای مشتری آشتی دهیم. بسیاری از مشتریان شرکت که اکنون اعضای فعال این شورا را تشکیل دادهاند، خود طرح پروژههای جدید برای کنترل خروج اطلاعات و مدیریت آنرا تنظیم کردهاند. آنها داوطلب شدهاند که برای اولین بار این روشها را در مورد اطلاعات شخصی خود به کار گیرند. بدیهی است شرایط واقعی در مقایسه با وضعیت آزمایشی نتیجهٔ بهتری دارد. رابرت گاریگ، مدیر ارشد بخش امنیتی بانک مونترآل و یکی از اعضای شورا، معتقد است اکنون زمان آن رسیده که شرکتها روشهای جدیدی را برای کنترل اطلاعات مشتریان خود بهکار بگیرند او میگوید: "من فکر میکنم اکنون زمان مدیریت کنترل اطلاعات فرارسیده است." پیش از این بخش IT تمام حواس خود را بر حفاظت از شبکهها متمرکز کرده بود، اما اکنون اطلاعات به عنوان بخشی مستقل به محدودیتهایی برای دستیابی و همچنین روشهای مدیریتی نوین نیازمند است. این حوزه به کوششی چشمگیر نیازمند است. شرکتها هر روز بیش از پیش با سرقت اطلاعات روبهرو هستند. هدف اصلی شورا ایجاد مدیریتی هوشمند و بیواسطه است . مسائل مورد توجه این شورا به ترتیب اهمیت عبارتاند از: "امنیت، حریم خصوصی افراد، پذیرش قوانین و برطرف کردن سوء تعبیرهایی که در مورد IT و وظایف آن وجود دارد." به نظر این شورا مشکل اصلی ناهماهنگی برنامههای بخش IT با فعالیتهای شرکت و بیتوجهی به ادغام این راهکارهاست. شرکت آمریکن اکسپرس و بانک جهانی، دانشگاه ایالتی کارولینای شمالی و ... از اعضای این شورا هستند
برنامه جامع امنیت تجارت الکترونیک
با وجود تمام مزایایی که تجارت الکترونیک بهمراه دارد، انجام تراکنشها و ارتباطات آنلاین محملی بزرگتر برای سوء استفاده از فناوری و حتی اعمال مجرمانه فراهم میکند. این مشکلات تنها مختص تجارت الکترونیک نیست و بخشی از مشکلات گسترده ایست که در سراسر جهان گریبانگیر سیستمهای اطلاعاتی و کامپیوتری هستند. هر ساله سازمانهای بسیاری هدف جرائم مرتبط با امنیت اطلاعات، از حملات ویروسی گرفته تا کلاه برداریهای تجاری از قبیل سرقت اطلاعات حساس تجاری و اطلاعات محرمانه کارتهای اعتباری، قرار میگیرند. چنین حملات امنیتی موجب میلیونها دلار ضرر و اخلال در فعالیت شرکتها میشوند. بسیاری از گزارشگران و مشاوران هزینه خسارات مرتبط با نقائص امنیتی را تا میلیاردها دلار برآورد کرده اند. با اینحال آنچه مهمتر از صحت میزان این خسارات است، این واقعیت است که با افزایش کاربران سیستمهای اطلاعاتی، دسترسی آسان به اطلاعات و رشد فزاینده کاربران مطلع (فنی) میتوان به راحتی فرض کرد که تعداد این سوء استفادهها از فناوری و تهدیدهای امنیتی نیز به همین نسبت افزایش یابد. متاسفانه، از آنجا که بسیاری از شرکتها دوست ندارند نفوذ به سیستمشان را تایید و اطلاعاتشان در مورد این نفوذها و وسعت آنها را با دیگران به اشتراک بگذارند، میزان دقیق خساراتی که شرکتها از جرائم مرتبط با امنیت متحمل شده اند، را نمیتوان بدست آورد. بی میلی به ارائه اطلاعات مربوط به نقائص امنیتی، از این ترس معمول ناشی میشود که اطلاع عموم از چنین نقائصی باعث بی اعتمادی مشتریان نسبت به توانایی شرکت در حفظ دارائی های خود میشود و شرکت با این کار مشریان خود و در نتیجه سوددهی اش را از دست خواهد داد. از آنجایی که مصرف کنندگان امروزی نسبت به ارائه آن لاین اطلاعات مالی بی اعتماد اند، شرکتها با تایید داوطلبانه این واقعیت که قربانی جرائم مرتبط با امنیت شده اند، چیزی بدست نمیآورند. با هیجانات رسانهای که امروزه دور و بر اینترنت و قابلیتهای آن وجود دارد، حفظ یک تصویر مثبت از امنیت تجارت الکترونیک در اذهان، دغدغه شماره یک بسیاری از شرکتها است و برای بقاء و باقی ماندن در رقابت کاملا ضروری است. نبود اطلاعات دست اول از موارد واقعی برنامه ریزی و مقابله با تهدیدهای امنیتی را بسیار مشکلتر کرده است اما با این وجود هم فناوریها و روشهای امنیت اطلاعات و فنون کلی مدیریتی در برنامه ریزی و حفاظت از منابع فناوری اطلاعات سازمان، در یک دهه گذشته پیشرفت قابل توجهی داشته اند. اکنون خبرگانی هستند که در حوزه امنیت سایبر تخصص پیدا کرده اند و راهکارهای زیادی برای حفاظت از فناوریهای تجارت الکترونیک از مجرمین بالقوه فضای سایبر دارند. بسیاری از شرکتها دریافته اند که برای موفقیت در تجارت الکترونیک، علاوه بر روشهای امنیتی که برای حفاظت از منابع فناوری اطلاعات طراحی شده اند، نیازمند سرمایه گذاری و برنامه ریزی برای ایجاد یک برنامه جامع امنیت هستند تا بدان طریق از داراییهایشان در اینترنت محافظت و از نفوذ مجرمین به سیستم هایشان که موجب خسارت دیدن فعالیتهای تجارت الکترونیک آنها میشود جلوگیری کنند. برنامه جامع امنیت تجارت الکترونیک شامل برنامههای حفاظتی که از فناوریهای موجود (نرمافزار و سختافزار)، افراد، برنامه ریزی راهبردی استفاده میکنند و برنامههای مدیریتی که برای حفاظت از منابع و عملیات تجارت الکترونیک شرکت طراحی و اجرا میشوند، است.چنین برنامهای برای بقاء کلی فعالیتهای تجارت الکترونیک شرکت حیاتی است و سازمان باید آنرا به عنوان مولفهای اساسی در راهبرد تجارت الکترونیک موفق به حساب آورد.موفقیت چنین برنامههایی به حمایت کامل مدیران رده بالا و مشارکت کامل بخش فناوری اطلاعات و مدیریت در جهت درک تاثیر گذاری و محدودیتهای برنامه است.علاوه بر این برای اطمینان از بروز بودن این برنامه و ابزارهای آن و هماهنگی با آخرین فناوریها و فنون مدیریت، باید آن را بطور مداوم مورد ارزیابی و سنجش قرار داد.
ارزیابی عملیات تجارت الکترونیک
اولین گام برای ایجاد یک برنامه جامع امنیت تجارت الکترونیک، انجام یک ارزیابی کامل از ارزش و اهمیت تجارت الکترونیک در موفقیت کلی اهداف و برنامه تجاری شرکت است.گام بعدی باید ارزیابی آسیب پذیری سیستم تجارت الکترونیک شرکت از هر دو جنبهٔ تهدیات داخلی و خطرات موجود خارجی است.شناخت آسیب پذیریهای خارجی بسیار ساده تر از دیدن آسیب پذیریهای خارجی است.با این وجود تمام تلاشها باید در راستای شناخت حوزههایی باشد که سیستم از داخل مورد سوءاستفاده قرار میگیرد.این کار را میتوان به خوبی با صحبت با کاربران سیستم و توسعه دهندگان انجام داد.علاوه بر این بستههای نرمافزاری بسیاری هم وجود دارند که میتوانند توانایی نظارت بر استفاده کلی از سیستم و دسترسی داخلی به آن را دارند و میتوانند تحلیل کاملی از فعالیتهای مشکوک احتمالی کاربران داخلی ارائه دهند.
طرح مستمر
گام بعد ایجاد یک طرح مستمر تجارت الکترونیک است که بطور شفاف تمام نقاط ضعف احتمالی، روشهای جلوگیری و مقابله با آنها و برنامههای محتمل برای ترمیم نفوذها و و تهدیدهای امنیتی است. بسیاری از شرکتها تمایل دارند به خود بقبولانند که داشتن برنامه ضد ویروس و دیوارههای آتش، برای حفاظت از سیستم هایشان کافی است. داشتن چنین نرمافزارهایی گام نخست خوبی است اما حتی با این وجود نیز سیستمهای تجارت الکترونیک با نقاط ضعف زیر روبرو هستند:
آتش سوزی و انفجار،
خرابکاری عمدی در سختافزار، نرمافزار و یا دادهها و اطلاعات،
دزدیده شدن نرمافزار و سختافزار،
فقدان پرسنل کلیدی امنیت تجارت الکترونیک
فقدان برنامههای کاربردی
فقدان فناوری
فقدان ارتباطات
فقدان فروشندگان.
تهدیدها در هر یک از این حوزهها باید به دقت ارزیابی و طرحهای محتمل ترمیم باید با جزئیات کامل برای مقابله با هر کدام تهیه شود. علاوه بر این باید در طرح افراد مسئول مدیریت و تصحیح مشکلات بوجود آمده از این نقائص معین گردند. سپس، سازمان باید نرمافزارها و سختافزارهایی که حفاظت از سیستم تجارت الکترونیک را برعهده دارند را، ارزیابی کند.درک اینکه فناوریهای مورد استفاده باید مناسب نیازهای شرکت بوده و برای تمام تهدیدهای امنیتی احتمالی سطحی از محافظت را فراهم کنند از اهمیت بسزایی برخوردار است.
حوزههای بحرانی که با مورد توجه قرار گیرند عبارتند از : حساسیت دادهها و اطلاعات در دسترس، حجم ترافیک دسترسی و روشهای دسترسی.امنیت تجارت SSL (Secure Socket Layer) یا SET (Secure Electronic Transaction)الکترونیک مبتنی بر تکنولوژی باید با استفاده از الگوی امنیت شامل لایههای مختلف امنیتی باشد.هدف نهایی امنیت مبتنی بر فناوری باید فراهم کردن صحت، یکپارچگی، پنهان کردن و غیر قابل رد بودن موثر باشد.بسیاری از شرکتها ،
در طول این مرحله ایجاد برنامه جامع امنیت تجارت الکترونیک از تجربه شرکتهای دیگری که در زمینه ارزیابی سیستمهای امنیتی مبتنی بر فناوری تخصص دارند، استفاده می کنند.
افراد
مهمترین مولفه هر برنامه امنیتی موثری افرادی هستند که آنرا اجرا و مدیریت میکنند.نقائص امنیتی بیش از آن که ناشی از سیستم باشند، به وسیلهٔ کاربران سیستم و افرادی که مدیریت سیستم را برعهده دارند، رخ میدهند.بیشتر مطالعات گذشته نشان داده اند تهدیدهای داخلی سیستمهای تجارت الکترونیک اغلب بسیار مهمتر از تهدیدهای خارجی بوده اند.در بسیاری از موارد مجرمانی که در نفوذ به سیستم موفق بوده اند، یا دانش قبلی از سیستم داشته و یا دارای شریک جرمی در داخل شرکت بوده اند.مهمترین ابزاری که مدیریت برای کاهش تهدید داخلی در اختیار دارد آموزش کاربران داخلی سیستم و پرسنل مدیریت آن در مورد نتیجه اخلال در یکپارچگی و امنیت سیستم است.بسیاری از کاربران از این واقعیت که نفوذ به سیستمهای اطلاعاتی جرم است و اخلالگران تحت پیگرد قانونی قرار میگیرند، اطلاع دارند.شرکت، با آگاهی دادن به کاربران و ترساندن آنها از عواقب این اعمال میتواند تا حد زیادی مانع آنها گردد.
راهبرد
ایجاد یک برنامه راهبردی موثر و بی عیب اهمیت بسیاری در امنیت تجارت الکترونیک دارد.چنین راهبردی باید شامل هدف کلی برنامه جامعه امنیت تجارت الکترونیک، اهداف جزئی و محدوده آن باشد.این راهبرد باید در راستای راهبرد تجاری کلی تجارت الکترونیک شرکت باشد.یکی از اهداف جزئی این راهبرد میتواند حفاظت کامل از تمامی منابع تجارت الکترونیک شرکت و فراهم کردن امکان ترمیم هر اخلال با حداکثر سرعت ممکن باشد.علاوه بر این این برنامه باید شامل منابع مورد نیاز برای پشتیبانی از اهداف جزئی و کلی در کنار قیود و محدودیتهای برنامه راهبردی و همچنین حاوی منابع انسانی کلیدی، اجرای برنامههای امنیتی متفاوت در غالب بخشی از برنامه راهبردی باشد. ساختارهای مدیریتی و تصمیم سازان
مدیریت
موفقیت برنامه جامع امنیت تجارت الکترونیک در گروی مدیریت موثر چنین برنامهای است.پشتیبانی مدیریت، از مدیران رده بالا شروع و در تمام سطوح ادامه مییابد.چنین برنامهای در شرکتهای بزرگ باید مستقیما بوسیله یک مدیر ارشد و در شرکتهای متوسط و کوچکتر بوسیله رئیس یا صاحب آن شرکت اداره و نظارت گردد.مسئولیت اصلی مدیر برنامه به روز نگه داشتن کامل برنامه، اجرای برنامههای آن و ارزیابی مجدد برنامههای موجود است.
بخشی از فعالیتهای چنین فردی آموختن راهکارهای عملی موثر در برنامه امنیتی سایر سازمانهاست که میتواند آنرا با مطالعه مقالات، کتب و مطالعات موردی منتشر شده بدست آورد.
مدرک CISSP
مدرک (Certified Information Systems Security Professional) مدرکی برای متخصصان امنیت است وکسب این مدرک مراحلی دارد . این مدرک مستقل از هر نوع سختافزار و نرمافزار خاص یک شرکت است و به عنوان یک عنصر کلیدی در ارزشیابی داوطلبان کار در موسسات بزرگ و سیستمهای Enterprise شناخته میشود. افرادی که صاحب این مدرک باشند میتوانند برای پست مدیریت شبکههای کوچک و بزرگ اطلاعاتی خود را معرفی کنند.
در سال ۱۹۸۹، چند سازمان فعال در زمینهٔ امنیت اطلاعات کنسرسیومی را تحت نام ۲(ISC) بنا نهادند که هدف ان ارایهٔ استانداردهای حفاظت از اطلاعات و آموزش همراه با ارایهٔ مدرک مربوط به افراد آموزش دیده بود.
در سال ۱۹۹۲ کنسرسیوم مذکور اقدام به طرح مدرکی به نام CISSP نمود که هدف آن ایجاد یک سطح مهارت حرفهای و عملی در زمینهٔ امنیت اطلاعات برای افراد علاقمند به آن بود.
اعتبار
این مدرک به دلیل این که بر خلاف سایر مدارک امنیتی، وابسته به محصولات هیچ شرکت خاصی نیست، قادر است به افراد متخصص امنیت، تبحر لازم را در طرح و پیاده سازی سیاستهای کلان امنیتی اعطا نماید. اتخاذ تصمیمات اصلی و حیاتی برای برقراری امنیت، مسئلهای نیست که مدیران سطح بالای یک سازمان بزرگ آن را به عهدهٔ کارشناسان تازه کار یا حتی آنهایی که مدرک امنیت در پلتفرم کاری خاصی را دارند، بگذارند بلکه مهم آن است که این قبیل مسئولیتها به اشخاصی که درک کامل و مستقلی از مسائل مربوط به مهندسی اجتماعی دارند و میتوانند در جهت برقراری امنیت اطلاعات در یک سازمان به ارایه خط مشی ویژه و سیاست امنیت خاص کمک کننده سپرده شود .
مراحل کسب مدرک
برای کسب مدرک CISSP، داوطلبان باید حداقل سه سال سابقه کاری مفید در یکی از زمینههای امنیتی اعلام شده توسط ۲(ISC) را داشته باشند . از ابتدای سال۲۰۰۳ به بعد شرط مذکور به چهار سال سابقه کاری یا سه سال سابقه کار به علاوهٔ یک مدرک دانشگاهی یا بینالمللی در این زمینه تغییر یافت .زمینههای کاری امنیتی که انجمن ۲(ISC) داوطلبان را به داشتن تجربه در آن ترغیب میکند شامل ده مورد است کهبه آن عنوان (Common Body Of Knowlege) CBKیا همان اطلاعات پایه در زمینهٔ امنبیت اطلاق میشود این موارد عبارتنداز:
سیستمهای کنترل دسترسی
توسعه سیستمها وبرنامههای کاربردی
برنامه ریزی برای مقابله با بلاهای طبیعی وخطرات کاری
رمزنگاری
مسا ئل حقوقی
امنیت عملیاتی
امنیت فیزیکی
مدلهاومعماری امنیتی
تمرینهای مدیریت امنیت
امنیت شبکهٔ دادهای و مخابراتی
زمانی که داوطلب موفق به دریافت مدرک CISSP میشود باید برای حفظ این مدرک همواره خود را در وضعیت مطلوبی از لحاظ سطح دانش علمی وعملی در مقولههای مورد نظر نگه دارد .هر دارندهی این مدرک لازم است که هرسال برای تمدید گواهینامهٔ خود، کارهایی را برای اثبات پشتکار وعلاقهٔ خود به مقولهٔ امنیت انجام داده وموفق به کسب سالانه ۱۲۰ امتیاز (از لحاظ ارزش کارهای انجام شده از دید انجمن ) شود. به این منظور انجمن، فعالیتهای مختلفی را برای کسب امتیاز ات لازم به دارندگان مدرک پیشنهاد میکند. به عنوان مثال کسب یک مدرک معتبر در زمینهٔ امنیت اطلاعات، فعالیت در زمینههای آموزش مفاهیم امنیتی به متخصصان دیگر، استخدام شدن درشرکتهای معتبر، چاپ مقالات در زمینهٔ امنیت، شرکت در سمینارهای مهم وکنفرانسهای مربوط به حوزهٔ امنیت، داشتن تحقیقات شخصی وامثال آن میتوانند دارندگان مدرک را در کسب امتیازات لازم یاری دهند . کلیهٔ فعالیتهای مذکور به صورت مستند و مکتوب تحویل نمایندگیهای انجمن در سراسر دنیا شده تا مورد ارزشیابی و امتیازدهی انجمن قرار گیرد . در صورتی که دارندهٔ مدرک موفق به کسب ۱۲۰ امتیاز نشود باید جهت حفظ مدرک خود دوباره آزمون CISSP را بگذراند. CISSP شامل ۲۵۰ سئوال چهار گزینهای است که کلیهٔ مفاهیم امنیتی را در بر میگیرد .CISSP یکی از محبوبترین مدارک بینالمللی در سال ۲۰۰۳ شناخته شده به طوری که با یک افزایش ۱۳۴ درصدی در بین داوطلبان نسبت به سال قبل روبه رو بودهاست .همین آمار حاکی از موفقیت ۹۸ درصدی دارندگان مدرک در حفظ مدرک خود است . به هر حال با اوضاع و احوال امروزهٔ دنیای فناوری اطلاعات وخطرات ناشی از حملات انواع ویروسها و هکرها به نظر میرسد هر روز نیاز به وجود متخصصان امنیتی، خصوصا دارندگان مدارک معتبر بینالمللی بیشتر محسوس است. هم اکنون دو مدرک امنیتی یعنی SECURITY+ متعلق به انجمن کامپتیا و مدرک CISSP متعلق به انجمن بینالمللی حرفهایهای امنیت از شهرت خاصی در این زمینه برخوردارند.
وضعیت درآمد
طبق آمار مجلهٔ certification میانگین درآمد سالانهٔ دارندگان مدرک CISSP در سال ۲۰۰۴ نزدیک به ۸۶ هزار دلار بوده است این میزان درآمد در بین درآمد مدرکهای مختلف که طبق همین آمارگیری بدست آمده نشان میدهد که مدرک CISSP در جایگاه اول قرار دارد. در این مقایسه مدرک security+ با ۶۰ هزار دلار و مدرک MCSE securityMCP با ۶۷ هزار دلار در سال در ردههای دیگر این فهرست قرار دارند که همه نشان از اهمیت ودر عین حال دشوار بودن مراحل کسب و نگهداری مدرک CISSP دارد.
شبکه رایانهای
یک شبکه رایانهای (به انگلیسی: Computer Network)، که اغلب به طور خلاصه به آن شبکه گفته میشود، گروهی از رایانهها و دستگاههایی میباشد که توسط کانالهای ارتباطی به هم متصل شدهاند. شبکه رایانهای باعث تسهیل ارتباطات میان کاربران شده و اجازه میدهد کاربران منابع خود را به اشتراک بگذارند.
معرفی
یک شبکه رایانهای اجازه به اشتراک گذاری منابع و اطلاعات را میان دستگاههای متصل شده به هم، میدهد. در دهه ۶۰ میلادی، آژانس پروژههای تحقیقاتی پیشرفته (ARPA)، بودجهای را به منظور طراحی شبکه آژانس پروژههای تحقیقاتی پیشرفته (ARPANET) برای وزارت دفاع ایالات متحده آمریکا اختصاص داد. این اولین شبکه رایانهای در جهان بود. توسعه شبکه از سال ۱۹۶۹ و براساس طرحهای توسعه یافته دهه ۶۰ آغاز شد.
هدف
شبکههای رایانهای را میتوان برای اهداف مختلف استفاده کرد:
تسهیل ارتباطات: با استفاده از شبکه، افراد میتوانند به آسانی از طریق رایانامه (E-mail)، پیامرسانی فوری، اتاق گفتگو (Chat room)، تلفن، تلفن تصویری و ویدئو کنفرانس، ارتباط برقرار کنند.
اشتراک گذاری سخت افزارها: در یک محیط شبکهای، هر کامپیوتر در شبکه میتواند به منابع سخت افزاری در شبکه دسترسی پیدا کرده و از آنها استفاده کند؛ مانند چاپ یک سند به وسیله چاپگری که در شبکه به اشتراک گذاشته شدهاست.
اشتراک گذاری پروندهها، دادهها و اطلاعات: در یک محیط شبکهای، هر کاربر مجاز میتواند به دادهها و اطلاعاتی که بر روی رایانههای دیگر موجود در شبکه، ذخیره شدهاست دسترسی پیدا کند. قابلیت دسترسی به دادهها و اطلاعات در دستگاههای ذخیره سازی اشتراکی، از ویژگیهای مهم بسیاری از شبکههای است.
اشتراک گذاری نرمافزارها: کاربرانی که به یک شبکه متصل اند، میتوانند برنامههای کاربردی موجود روی کامپیوترهای راه دور را اجرا کنند.
تعریف
شبکههای کامپیوتری مجموعهای از کامپیوترهای مستقل متصل به یکدیگرند که با یکدیگر ارتباط داشته و تبادل داده میکنند. مستقل بودن کامپیوترها بدین معناست که هر کدام دارای واحدهای کنترلی و پردازشی مجزا بوده و بود و نبود یکی بر دیگری تاثیرگذار نیست.
متصل بودن کامپیوترها یعنی از طریق یک رسانه فیزیکی مانند کابل، فیبر نوری، ماهوارهها و... به هم وصل میباشند. دو شرط فوق شروط لازم برای ایجاد یک شبکه کامپیوتری میباشند اما شرط کافی برای تشکیل یک شبکه کامپیوتری داشتن ارتباط و تبادل داده بین کامپیوترهاست.
این موضوع در بین متخصصین قلمرو شبکه مورد بحث است که آیا دو رایانه که با استفاده از نوعی از رسانه ارتباطی به یکدیگر متصل شدهاند تشکیل یک شبکه میدهند. در این باره بعضی مطالعات میگویند که یک شبکه نیازمند دست کم ۳ رایانه متصل به هم است. یکی از این منابع با عنوان «ارتباطات راه دور: واژهنامه اصطلاحات ارتباطات راه دور»، یک شبکه رایانهای را این طور تعریف میکند: «شبکهای از گرههای پردازشگر دیتا که جهت ارتباطات دیتا به یکدیگر متصل شدهاند». در همین سند عبارت «شبکه» این طور تعریف شدهاست: «اتصال سه با چند نهاد ارتباطی». رایانهای که به وسیلهای غیر رایانهای متصل شدهاست (به عنوان نمونه از طریق ارتباط «اترنت» به یک پرینتر متصل شدهاست) ممکن است که یک شبکه رایانهای به حساب آید، اگرچه این نوشتار به این نوع پیکربندی نمیپردازد.
این نوشتار از تعاریفی استفاده میکند که به دو یا چند رایانه متصل به هم نیازمند است تا تشکیل یک شبکه را بدهد. در مورد تعداد بیشتری رایانه که به هم متصل هستند عموماً توابع پایهای مشترکی دیده میشود. از این بابت برای آنکه شبکهای به وظیفهاش عمل کند، سه نیاز اولیه بایستی فراهم گردد، «اتصالات»، «ارتباطات» و «خدمات». اتصالات به بستر سختافزاری اشاره دارد، ارتباطات به روشی اشاره میکند که بواسطه آن وسایل با یکدیگر صحبت کنند و خدمات آنهایی هستند که برای بقیه اعضای شبکه به اشتراک گذاشته شدهاند.
دسته بندی شبکههای رایانهای
فهرست زیر، دستههای شبکههای رایانهای را نشان میدهد.
بر اساس نوع اتصال
شبکههای رایانهای را میتوان با توجه به تکنولوژی سخت افزاری و یا نرمافزاری که برای اتصال دستگاههای افراد در شبکه استفاده میشود، دسته بندی کرد؛ مانند فیبر نوری، اترنت، شبکه محلی بیسیم، HomePNA، ارتباط خط نیرو یا G.hn.
اترنت با استفاده از سیم کشی فیزیکی دستگاهها را به هم متصل میکند. دستگاههای مستقر معمول شامل هابها، سوئیچها، پلها و یا مسیریابها هستند.
تکنولوژی شبکه بیسیم برای اتصال دستگاهها، بدون استفاده از سیم کشی طراحی شدهاست. این دستگاهها از امواج رادیویی یا سیگنالهای مادون قرمز به عنوان رسانه انتقال استفاده میکنند.
فناوری ITU-T G.hn از سیم کشی موجود در منازل (کابل هممحور، خطوط تلفن و خطوط برق) برای ایجاد یک شبکه محلی پر سرعت (تا۱ گیگا بیت در ثانیه) استفاده میکند.
بر اساس تکنولوژی سیم کشی
زوج بههمتابیده: زوج بههمتابیده یکی از بهترین رسانههای مورد استفاده برای ارتباطات راه دور میباشد. سیمهای زوج بههمتابیده، سیم تلفن معمولی هستند که از دو سیم مسی عایق که دو به دو به هم پیچ خوردهاند درست شدهاند. از زوج بههمتابیده برای انتقال صدا و دادهها استفاده میشود. استفاده از دو سیم بههمتابیده به کاهش تداخل و القای الکترومغناطیسی کمک میکند. سرعت انتقال داده، دامنهای از ۲ میلیون بیت درهر ثانیه تا ۱۰۰ میلیون بیت در هر ثانیه، دارد.
کابل هممحور: کابل هممحور به طور گستردهای در سیستمهای تلویزیون کابلی، ساختمانهای اداری، و دیگر سایتهای کاری برای شبکههای محلی، استفاده میشود. کابلها یک رسانای داخلی دارند که توسط یک عایق منعطف محصور شدهاند، که روی این لایهٔ منعطف نیز توسط یک رسانای نازک برای انعطاف کابل، به هم بافته شدهاست. همهٔ این اجزا، در داخل عایق دیگری جاسازی شدهاند. لایه عایق به حداقل رساندن تداخل و اعوجاج کمک میکند. سرعت انتقال داده، دامنهای از ۲۰۰ میلیون تا بیش از ۵۰۰ میلیون بیت در هر ثانیه دارد.
فیبر نوری: کابل فیبر نوری شامل یک یا چند رشته از الیاف شیشهای پیچیده شده در لایههای محافظ میباشد. این کابل میتواند نور را تا مسافتهای طولانی انتقال دهد. کابلهای فیبر نوری تحت تاثیر تابشهای الکترومغناطیسی قرار نمیگیرند. سرعت انتقال ممکن است به چند تریلیون بیت در ثانیه برسد.
بر اساس تکنولوژی بی سیم
ریزموج (مایکروویو) زمینی: ریزموجهای زمینی از گیرندهها و فرستندههای زمینی استفاده میکنند. تجهیزات این تکنولوژی شبیه به دیشهای ماهوارهاست. مایکروویو زمینی از دامنههای کوتاه گیگاهرتز استفاده میکند، که این سبب میشود تمام ارتباطات به صورت دید خطی محدود باشد. فاصله بین ایستگاههای رله (تقویت سیگنال) حدود ۳۰ مایل است. آنتنهای ریزموج معمولاً در بالای ساختمانها، برجها، تپهها و قله کوه نصب میشوند.
ماهوارههای ارتباطی: ماهوارهها از ریزموجهای رادیویی که توسط جو زمین منحرف نمیشوند، به عنوان رسانه مخابراتی خود استفاده میکنند.
ماهوارهها در فضا مستقر هستند؛ به طور معمول ۲۲۰۰۰ مایل (برای ماهوارههای geosynchronous) بالاتر از خط استوا. این سیستمهای در حال چرخش به دور زمین، قادر به دریافت و رله صدا، دادهها و سیگنالهای تلویزیونی هستند.
تلفن همراه و سیستمهای پی سی اس: تلفن همراه و سیستمهای پی سی اس از چندین فناوری ارتباطات رادیویی استفاده میکنند. این سیستمها به مناطق مختلف جغرافیایی تقسیم شدهاند. هر منطقه دارای فرستندههای کم قدرت و یا دستگاههای رله رادیویی آنتن برای تقویت تماسها از یک منطقه به منطقه بعدی است.
شبکههای محلی بی سیم: شبکه محلی بی سیم از یک تکنولوژی رادیویی فرکانس بالا (مشابه سلول دیجیتالی) و یک تکنولوژی رادیویی فرکانس پایین استفاده میکند. شبکههای محلی بی سیم از تکنولوژِی طیف گسترده، برای برقراری ارتباط میان دستگاههای متعدد در یک منطقه محدود، استفاده میکنند. نمونهای از استاندارد تکنولوژی بی سیم موج رادیویی، IEEE است.
ارتباطات فروسرخ: ارتباط فروسرخ، سیگنالهای بین دستگاهها را در فواصل کوچک (کمتراز ۱۰ متر) به صورت همتا به همتا (رو در رو) انتقال میدهد؛ در خط انتقال نباید هیچ گونه شی ای قرار داشته باشد.
بر اساس اندازه
ممکن است شبکههای رایانهای بر اساس اندازه یا گستردگی ناحیهای که شبکه پوشش میدهد طبقهبندی شوند. برای نمونه «شبکه شخصی» (PAN)، «شبکه محلی» (LAN)، «شبکه دانشگاهی» (CAN)، «شبکه کلانشهری» (MAN) یا «شبکه گسترده» (WAN).
بر اساس لایه شبکه
ممکن است شبکههای رایانهای مطابق مدلهای مرجع پایهای که در صنعت به عنوان استاندارد شناخته میشوند مانند «مدل مرجع ۷ لایه OSI» و «مدل ۴ لایه TCP/IP»، بر اساس نوع «لایه شبکه»ای که در آن عمل میکنند طبقهبندی شوند.
بر اساس معماری کاربری
ممکن است شبکههای رایانهای بر اساس معماری کاربری که بین اعضای شبکه وجود دارد طبقهبندی شود، برای نمونه معماریهای Active Networking، «مشتری-خدمتگذار» (Client-Server) و «همتا به همتا» Peer-to-Peer (گروه کاری).
بر اساس همبندی (توپولوژی)
ممکن است شبکههای رایانهای بر اساس نوع همبندی شبکه طبقهبندی شوند مانند: «شبکه باس» (Bus)، «شبکه ستاره» ((Star، «شبکه حلقهای» (Ring)، «شبکه توری» (Mesh)، «شبکه ستاره-باس» (Star-Bus)، «شبکه درختی» (Tree) یا «شبکه سلسله مراتبی» (Hierarchical) و ترکیبی و غیره.
همبندی شبکه را میتوان بر اساس نظم هندسی ترتیب داد. همبندیهای شبکه طرحهای منطقی شبکه هستند. واژه منطقی در اینجا بسیار پرمعنی است. این واژه به این معنی است که همبندی شبکه به طرح فیزیکی شبکه بستگی ندارد. مهم نیست که رایانهها در یک شبکه به صورت خطی پشت سر هم قرار گرفته باشند، ولی زمانیکه از طریق یک «هاب» به یکدیگر متصل شده باشند تشکیل همبندی ستاره میکنند نه باس. و این عامل مهمی است که شبکهها در آن فرق میکنند، جنبه ظاهری و جنبه عملکردی.
بر اساس قرارداد
ممکن است شبکههای رایانهای بر اساس «قرارداد» ارتباطی طبقهبندی شوند. برای اطلاعات بیشتر لیست پشتههای قرارداد شبکه و لیست قراردادهای شبکه را ببینید.
انواع شبکههای رایانهای از نظر اندازه
شبکه شخصی (PAN)
«شبکه شخصی» (Personal Area Network) یک «شبکه رایانهای» است که برای ارتباطات میان وسایل رایانهای که اطراف یک فرد میباشند (مانند «تلفن»ها و «رایانههای جیبی» (PDA) که به آن «دستیار دیجیتالی شخصی» نیز میگویند) بکار میرود. این که این وسایل ممکن است متعلق به آن فرد باشند یا خیر جای بحث خود را دارد. برد یک شبکه شخصی عموماً چند متر بیشتر نیست. موارد مصرف شبکههای خصوصی میتواند جهت ارتباطات وسایل شخصی چند نفر به یکدیگر و یا برقراری اتصال این وسایل به شبکهای در سطح بالاتر و شبکه «اینترنت» باشد.
ارتباطات شبکههای شخصی ممکن است به صورت سیمی به «گذرگاه»های رایانه مانند USB و فایروایر برقرار شود. همچنین با بهرهگیری از فناوریهایی مانند IrDA، «بلوتوث» (Bluetooth) و UWB میتوان شبکههای شخصی را به صورت بیسیم ساخت.
شبکه محلی (LAN)
«شبکه محلی» (Local Area Network) یک «شبکه رایانهای» است که محدوده جغرافیایی کوچکی مانند یک خانه، یک دفتر کار یا گروهی از ساختمانها را پوشش میدهد. در مقایسه با «شبکههای گسترده» (WAN) از مشخصات تعریفشده شبکههای محلی میتوان به سرعت (نرخ انتقال) بسیار بالاتر آنها، محدوده جغرافیایی کوچکتر و عدم نیاز به «خطوط استیجاری» مخابراتی اشاره کرد.
دو فناوری «اترنت» (Ethernet) روی کابل «جفت به هم تابیده بدون محافظ» (UTP) و «وایفای» (Wi-Fi) رایجترین فناوریهایی هستند که امروزه استفاده میشوند، با این حال فناوریهای «آرکنت» (ARCNET) و «توکن رینگ» (Token Ring) و بسیاری روشهای دیگر در گذشته مورد استفاده بودهاند.
شبکه کلانشهری (MAN)
«شبکه کلانشهری» (Metropolitan Area Network) یک «شبکه رایانهای» بزرگ است که معمولاً در سطح یک شهر گسترده میشود. در این شبکهها معمولاً از «زیرساخت بیسیم» و یا اتصالات «فیبر نوری» جهت ارتباط محلهای مختلف استفاده میشود.
شبکه گسترده (WAN)
«شبکه گسترده» (Wide Area Network) یک «شبکه رایانهای» است که نسبتاً ناحیه جغرافیایی وسیعی را پوشش میدهد (برای نمونه از یک کشور به کشوری دیگر یا از یک قاره به قارهای دیگر). این شبکهها معمولاً از امکانات انتقال خدمات دهندگان عمومی مانند شرکتهای مخابرات استفاده میکند. به عبارت کمتر رسمی این شبکهها از «مسیریاب»ها و لینکهای ارتباطی عمومی استفاده میکنند.
شبکههای گسترده برای اتصال شبکههای محلی یا دیگر انواع شبکه به یکدیگر استفاده میشوند. بنابراین کاربران و رایانههای یک مکان میتوانند با کاربران و رایانههایی در مکانهای دیگر در ارتباط باشند. بسیاری از شبکههای گسترده برای یک سازمان ویژه پیادهسازی میشوند و خصوصی هستند. بعضی دیگر بهوسیله «سرویس دهندگان اینترنت» (ISP) پیادهسازی میشوند تا شبکههای محلی سازمانها را به اینترنت متصل کنند.
شبکه متصل (Internetwork)
دو یا چند «شبکه» یا «زیرشبکه» (Subnet) که با استفاده از تجهیزاتی که در لایه ۳ یعنی «لایه شبکه» «مدل مرجع OSI» عمل میکنند مانند یک «مسیریاب»، به یکدیگر متصل میشوند تشکیل یک شبکه از شبکهها یا «شبکه متصل» را میدهند. همچنین میتوان شبکهای که از اتصال داخلی میان شبکههای عمومی، خصوصی، تجاری، صنعتی یا دولتی به وجود میآید را «شبکه متصل» نامید.
در کاربردهای جدید شبکههای به هم متصل شده از قرارداد IP استفاده میکنند. بسته به اینکه چه کسانی یک شبکه از شبکهها را مدیریت میکنند و اینکه چه کسانی در این شبکه عضو هستند، میتوان سه نوع «شبکه متصل» دسته بندی نمود:
شبکه داخلی یا اینترانت (Intranet)
شبکه خارجی یا اکسترانت (Extranet)
شبکهاینترنت (Internet)
شبکههای داخلی یا خارجی ممکن است که اتصالاتی به شبکه اینترنت داشته و یا نداشته باشند. در صورتی که این شبکهها به اینترنت متصل باشند در مقابل دسترسیهای غیرمجاز از سوی اینترنت محافظت میشوند. خود شبکه اینترنت به عنوان بخشی از شبکه داخلی یا شبکه خارجی به حساب نمیآید، اگرچه که ممکن است شبکه اینترنت به عنوان بستری برای برقراری دسترسی بین قسمتهایی از یک شبکه خارجی خدماتی را ارائه دهد.
شبکه داخلی (Intranet)
یک «شبکه داخلی» مجموعهای از شبکههای متصل به هم میباشد که از قرارداد IP و ابزارهای مبتنی بر IP مانند «مرورگران وب» استفاده میکند و معمولاً زیر نظر یک نهاد مدیریتی کنترل میشود. این نهاد مدیریتی «شبکه داخلی» را نسبت به باقی قسمتهای دنیا محصور میکند و به کاربران خاصی اجازه ورود به این شبکه را میدهد. به طور معمولتر شبکه درونی یک شرکت یا دیگر شرکتها «شبکه داخلی» میباشد.
به طور مثال شبکه ملی در ایران نوعی از شبکههای داخلی (اینترانت) میباشد.
شبکه خارجی (Extranet)
یک «شبکه خارجی» یک «شبکه» یا یک «شبکه متصل» است که به لحاظ قلمرو محدود به یک سازمان یا نهاد است ولی همچنین شامل اتصالات محدود به شبکههای متعلق به یک یا چند سازمان یا نهاد دیگر است که معمولاً ولی نه همیشه قابل اعتماد هستند. برای نمونه مشتریان یک شرکت ممکن است که دسترسی به بخشهایی از «شبکه داخلی» آن شرکت داشته باشند که بدین ترتیب یک «شبکه خارجی» درست میشود، چراکه از نقطهنظر امنیتی این مشتریان برای شبکه قابل اعتماد به نظر نمیرسند. همچنین از نظر فنی میتوان یک «شبکه خارجی» را در گروه شبکههای دانشگاهی، کلانشهری، گسترده یا دیگر انواع شبکه (هر چیزی غیر از شبکه محلی) به حساب آورد، چراکه از نظر تعریف یک «شبکه خارجی» نمیتواند فقط از یک شبکه محلی تشکیل شده باشد، چون بایستی دست کم یک اتصال به خارج از شبکه داشته باشد.
شبکه اینترنت (Internet)
شبکه ویژهای از شبکهها که حاصل اتصالات داخلی شبکههای دولتی، دانشگاهی، عمومی و خصوصی در سرتاسر دنیا است. این شبکه بر اساس شبکه اولیهای کار میکند که «آرپانت» (ARPANET) نام داشت و بهوسیله موسسه «آرپا» (ARPA) که وابسته به «وزارت دفاع ایالات متحده آمریکا» است ایجاد شد. همچنین منزلگاهی برای «وب جهانگستر» (WWW) است. در لاتین واژه Internet برای نامیدن آن بکار میرود که برای اشتباه نشدن با معنی عام واژه «شبکه متصل» حرف اول را بزرگ مینویسند.
اعضای شبکه اینترنت یا شرکتهای سرویس دهنده آنها از «آدرسهای IP» استفاده میکنند. این آدرسها از موسسات ثبت نام آدرس تهیه میشوند تا تخصیص آدرسها قابل کنترل باشد. همچنین «سرویس دهندگان اینترنت» و شرکتهای بزرگ، اطلاعات مربوط به در دسترس بودن آدرسهایشان را بواسطه «قرارداد دروازه لبه» (BGP) با دیگر اعضای اینترنت مبادله میکنند.
اجزای اصلی سختافزاری
همه شبکهها از اجزای سختافزاری پایهای تشکیل شدهاند تا گرههای شبکه را به یکدیگر متصل کنند، مانند «کارتهای شبکه»، «تکرارگر»ها، «هاب»ها، «پل»ها، «راهگزین»ها و «مسیریاب»ها. علاوه بر این، بعضی روشها برای اتصال این اجزای سختافزاری لازم است که معمولاً از کابلهای الکتریکی استفاده میشود (از همه رایجتر «کابل رده ۵» (کابل Cat5) است)، و کمتر از آنها، ارتباطات میکروویو (مانند آیتریپلئی ۸۰۲٫۱۱) و («کابل فیبر نوری» Optical Fiber Cable) بکار میروند.
کارت شبکه (network adapter)
«کارت شبکه»، «آداپتور شبکه» یا «کارت واسط شبکه» (Network Interface Card) قطعهای از سختافزار رایانهاست و طراحی شده تا این امکان را به رایانهها بدهد که بتوانند بر روی یک شبکه رایانهای با یکدیگر ارتباط برقرار کنند. این قطعه دسترسی فیزیکی به یک رسانه شبکه را تامین میکند و با استفاده از «آدرسهای MAC»، سیستمی سطح پایین جهت آدرس دهی فراهم میکند. این شرایط به کاربران اجازه میدهد تا به وسیله کابل یا به صورت بیسیم به یکدیگر متصل شوند.
تکرارگر (repeater)
«تکرارگر» تجهیزی الکترونیکی است که سیگنالی را دریافت کرده و آن را با سطح دامنه بالاتر، انرژی بیشتر و یا به سمت دیگر یک مانع ارسال میکند. بدین ترتیب میتوان سیگنال را بدون کاستی به فواصل دورتری فرستاد. از آنجا که تکرارگرها با سیگنالهای فیزیکی واقعی سروکار دارند و در جهت تفسیر دادهای که انتقال میدهند تلاشی نمیکنند، این تجهیزات در «لایه فیزیکی» یعنی اولین لایه از «مدل مرجع OSI» عمل میکنند.
هاب (جعبه تقسیم)- hub
«هاب» قطعهای سختافزاری است که امکان اتصال قسمتهای یک شبکه را با هدایت ترافیک در سراسر شبکه فراهم میکند. هابها در «لایه فیزیکی» از «مدل مرجع OSI» عمل میکنند. عملکرد هاب بسیار ابتدایی است، به این ترتیب که داده رسیده از یک گره را برای تمامی گرههای شبکه کپی میکند. هابها عموماً برای متصل کردن بخشهای یک «شبکه محلی» بکار میروند. هر هاب چندین «درگاه» (پورت) دارد. زمانی که بستهای از یک درگاه میرسد، به دیگر درگاهها کپی میشود، بنابراین همه قسمتهای شبکه محلی میتوانند بستهها را ببینند.
پل (bridge)
یک «پل» دو «زیرشبکه» (سگمنت) را در «لایه پیوند داده» از «مدل مرجع OSI» به هم متصل میکند. پلها شبیه به «تکرارگر»ها و «هاب»های شبکهاند که برای اتصال قسمتهای شبکه در «لایه فیزیکی» عمل میکنند، با این حال پل با استفاده از مفهوم پلزدن کار میکند، یعنی به جای آنکه ترافیک هر شبکه بدون نظارت به دیگر درگاهها کپی شود، آنرا مدیریت میکند. بستههایی که از یک طرف پل وارد میشوند تنها در صورتی به طرف دیگر انتشار مییابند که آدرس مقصد آنها مربوط به سیستمهایی باشد که در طرف دیگر پل قرار دارند. پل مانع انتشار پیغامهای همگانی در قطعههای کابل وصلشده به آن نمیشود.
پلها به سه دسته تقسیم میشوند:
پلهای محلی: مستقیماً به «شبکههای محلی» متصل میشود.
پلهای دوردست: از آن میتوان برای ساختن «شبکههای گسترده» جهت ایجاد ارتباط بین «شبکههای محلی» استفاده کرد. پلهای دور دست در شرایطی که سرعت اتصال از شبکههای انتهایی کمتر است با «مسیریاب»ها جایگزین میشوند.
پلهای بیسیم: برای «اتصال شبکههای محلی» به «شبکههای محلی بیسیم» یا «شبکههای محلی بیسیم» به هم یا ایستگاههای دوردست به «شبکههای محلی» استفاده میشوند.
راهگزین (switch)
«راهگزین» که در پارسی بیشتر واژه «سوئیچ» برای آن بکار برده میشود، وسیلهای است که قسمتهای شبکه را به یکدیگر متصل میکند. راهگزینهای معمولی شبکه تقریباً ظاهری شبیه به «هاب» دارند، ولی یک راهگزین در مقایسه با هاب از هوشمندی بیشتری (و همچنین قیمت بیشتری) برخوردار است. راهگزینهای شبکه این توانمندی را دارند که محتویات بستههای دادهای که دریافت میکنند را بررسی کرده، دستگاه فرستنده و گیرنده بسته را شناسایی کنند، و سپس آن بسته را به شکلی مناسب ارسال نمایند. با ارسال هر پیام فقط به دستگاه متصلی که پیام به هدف آن ارسال شده، راهگزین «پهنای باند» شبکه را به شکل بهینهتری استفاده میکند و عموماً عملکرد بهتری نسبت به یک هاب دارد.
از نظر فنی میتوان گفت که راهگزین در «لایه پیوند داده» از «مدل مرجع OSI» عمل کنند. ولی بعضی انواع راهگزین قادرند تا در لایههای بالاتر نیز به بررسی محتویات بسته بپردازند و از اطلاعات بدست آمده برای تعیین مسیر مناسب ارسال بسته استفاده کنند. به این راه گزینها به اصطلاح «راهگزینهای چندلایه» (Multilayer Switch) میگویند.
مسیریاب (router)
«مسیریاب»ها تجهیزات شبکهای هستند که بستههای داده را با استفاده از «سرایند»ها و «جدول ارسال» تعیین مسیر کرده، و ارسال میکنند. مسیریابها در «لایه شبکه» از «مدل مرجع OSI» عمل میکنند. همچنین مسیریابها اتصال بین بسترهای فیزیکی متفاوت را امکانپذیر میکنند. این کار با چک کردن سرایند یک بسته داده انجام میشود.
مسیریابها از «قراردادهای مسیریابی» مانند ابتدا کوتاهترین مسیر را انتخاب کردن استفاده میکنند تا با یکدیگر گفتگو کرده و بهترین مسیر بین هر دو ایستگاه را پیکربندی کنند. هر مسیریاب دسته کم به دو شبکه، معمولاً شبکههای محلی، شبکههای گسترده و یا یک شبکه محلی و یک سرویس دهنده اینترنت متصل است. بعضی انواع مودمهای DSL و کابلی جهت مصارف خانگی درون خود از وجود یک مسیریاب نیز بهره میبرند.
9:45 pm
کاربرد برنامه نویسی
زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف دادهها، و عملیات یا تبدیلهایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم میکند. یک برنامه نویس از انتزاعات آماده در زبان استفاده میکند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از سادهترین عناصر موجود بیان میشوند(مفاهیم ابتدایی نامیده میشوند).

زبانهای برنامه نویسی با غالب زبانهای انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبانهای طبیعی برای ارتباط با دیگر انسانها، نویسندگان و گویندگان میتوانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانهها "دقیقاً آنچه که به آنها گفته شده را انجام میدهند." و نمیتوانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بودهاست] البته امروزه برنامههایی برای انجام این کار تولید شدهاند و تلاشهای بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص میکند. برنامههای یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامهها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامهای استفاده میشود، زبان اسکریپت میگویند. بسیاری از زبانها کنار گذاشته شدهاند، برای رفع نیازهای جدید جایگزین شدهاند، با برنامههای دیگر ترکیب شدهاند و در نهایت استعمال آنها متوقف شدهاست. با وجود اینکه تلاشهایی برای طراحی یک زبان رایانه" کامل" شدهاست که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبانهای رایانهای گسترده از گستردگی زمینههایی که زبانها استفاده میشوند، ناشی میشود:
محدوده برنامهها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستمهای بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
توانایی برنامه نویسها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفهایهایی که با پیچیدگی قابل توجهی کنار میآیند.
برنامهها باید سرعت، اندازه و سادگی را بسته به سیستمها از ریزپردازندها تا ابر رایانهها متناسب نگه دارند.
برنامهها ممکن است یک بار نوشته شوند و تا نسلها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند.
در نهایت، برنامه نویسها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.
یک سیر رایج در گسترش زبانهای برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبانهای برنامه نویسی اولیه به سختافزار رایانه گره خورده بودند. همانطور که زبانهای برنامه نویسی جدید گسترش پیدا کردهاند، ویژگیهایی به برنامهها افزوده شده که به برنامه نویس اجازه دهد که ایدههایی که از ترجمه ساده به دستورات سختافزار دورتر هستند نیز استفاده کند. چون برنامه نویسها کمتر به پیچیدگی رایانه محدود شدهاند، برنامههای آنها میتواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را میدهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازندههای زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبانهای اختصاصی برنامه نویسی پیشنهاد شدهاند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.
المانها
تمام زبانهای بزنامه نویسی تعدادی بلوکهای ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معناشناسی و دستوری تعریف میشوند که ساختار و معنای مربوطه را توضیح میدهند.
دستور(
syntax)
فرم سطحی یک زبان برنامه نویسی دستور آن نامیده میشود. غالب زبانهای برنامه نویسی کاملاً متنی اند؛ و از دنبالهٔ متون شامل کلمات، اعداد، نشانگذاری، بسیار شبیه زبان نوشتاری طبیعی استفاده میکنند. از طرف دیگر، برنامههایی نیز وجود دارند که بیشتر گرافیکی اند، و از روابط بصری بین سمبلها برای مشخص کردن برنامه استفاده میکنند. دستور یک زبان ترکیبات ممکن سمبلها برای ایجاد یک برنامهٔ درست را از نظر دستوری مشخص میکند. معنایی که به یک ترکیب سمبلها داده میشود با معناشناسی اداره میشود(قراردادی یا نوشته شده در پیاده سازی منبع). از آنجا که اغلب زبانها متنی هستند، این مقاله دستور متنی را مورد بحث قرار میدهد.
دستور زبان برنامه نویسی معمولاً بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف میشوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom ::= number | symbol number ::= [+-]?['۰'-'۹']+ symbol ::= ['A'-'Za'-'z'].* list ::= '(' expression* ')' این گرامر موارد ذیل را مشخص میکند:
یک عبارت یا atom است و یا یک لیست
یک atom یا یک عدد است و یا یک سمبل
یک عدد دنباله ناشکستهای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی میتواند پیش از آن بیاید.
یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) میآید.
یک لیست تعدادی پرانتز است که میتواند صفر یا چند عبارت در خود داشته باشد.
"۱۲۳۴۵"، "()"، "(a b c۲۳۲ (۱))" مثالهایی هستند از دنبالههای خوش فرم در این گرامر.
همه برنامههایی که از لحاظ دستوری درست هستند، از نظر معنا درست نیستند. بسیاری از برنامههای درست دستوری، بد فرم اند، با توجه به قوانین زبان؛ و ممکن است (بسته به خصوصیات زبان و درست بودن پیاده سازی) به خطای ترجمه و یا استثنا(exception) منتج شود. در برخی موارد، چنین برنامههایی ممکن است رفتار نامشخصی از خود نشان دهند. حتی اگر یک برنامه در یک زبان به خوبی بیان شده باشد، ممکن است دقیقاً مطلوب نویسنده آن نبوده باشد.
به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اطلاق کرد و یا ممکن است جمله نادرست باشد:
"ایدههای بی رنگ سبز با خشم میخوابند."از نظر دستوری خوش فرم است ولی معنای مورد قبولی ندارد.
"جان یک مجرد متاهل است." از نظر دستوری درست است، ولی معنایی را بیان میکند که نمیتواند درست باشد.
این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام میدهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p->real,p->im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im);
گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی میتواند با جایگاهش در "سلسله مراتب چامسکی" طبقه بندی شود. دستور اغلب زبانهای برنامه نویسی میتواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.
معناشناسی ایستا
معناشناسی ایستا محدودیتهایی بر روی ساختار مجاز متنها تعیین میکند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیتها به وسیله سیستم نوع گذاری انجام میشود.
سیستم نوع گذاری
یک سیستم نوع گذاری مشخص میکند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی میکند، چگونه میتواند آن نوعها را تغییر دهد و رفتار متقابل آنها چگونهاست. این کارعموما توضیح داده ساختارهایی که میتوانند در آن زبان ایجاد شوند را شامل میشود. طراحی و مطالعه سیستمهای نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.
زبانهای نوع گذاری شده و بدون نوع گذاری
یک زبان نوع گذاری شدهاست اگر مشخصات هر عملیات، نوع دادههای قابل اجرا توسط آن را با نشان دادن نوعهایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشتهاست. در غالب زبانهای برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبانهای برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامهها رد کنند. در برخی زبانها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامهها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبانهای نوع دار زبانهای تک نوعند. این زبانها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشتههای کاراکتری که هم برای دادههای عددی و هم برای دادههای سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبانهای اسمبلی، این امکان را میدهد که هر عملیاتی روی هر دادهای انجام شود، که معمولاً دنبالهای از بیتها با طولهای متفاوت در نظر گرفته میشوند. زبانهای سطح بالا که بی نوع هستند شامل زبانهای ساده رایانهای و برخی از انواع زبانهای نسل چهارم.
در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی میشوند(چک کردن یا رد کردن تمام عملیاتها)، غالب زبانهای امروزی درجهای از نوع گذاری را فراهم میکنند. بسیاری از زبانهای تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم میکنند.
نوع گذاری ایستا و متحرک
در نوع گذاری ایستا تمام عبارات نوعهای خود را قبل از اجرای برنامه تعیین میکنند(معمولاً در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمیتوانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.
زبانهای نوع گذاری شده ایستا میتوانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحاً نوعها را در جایگاههای منتنی مشخص مینویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریفها را بر اساس متن استنباط میکند. غالب زبانهای مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری میشوند
نوع گذاری قوی و ضعیف
نوع گذاری ضعیف این امکان را ایجاد میکند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.
نوع گذاری قوی مانع رخ دادن مشکل فوق میشود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا میشود. زبانهایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته میشوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبانها اشاره میکند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را میدهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل میکند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشتهای از حروف باشد. چنین تبدیلات ضمنی غالباً مفیدند، اما خطاهای برنامه نویسی را پنهان میکنند.
قوی و ایستا در حال حاضر عموماً دو مفهوم متعامد فرض میشوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت "قوی نوع گذاری شده" را به کار میبرند و منظورشان قوی، ایستایی نوع گذاری شدهاست، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شدهاست. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده میشود.
معناشناسی اجرا
وقتی که داده مشخص شد، ماشین باید هدایت شود تا عملیاتها را روی داده انجام دهد. معناشناسی اجرا ی یک زبان تعیین میکند که چگونه و چه زمانی ساختارهای گوناگون یک زبان باید رفتار برنامه را ایجاد کنند.
برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی میشوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا میکنند.
کتابخانه هسته
اغلب زبانهای برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات "کتابخانه استاندارد" نامیده میشوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازیهای زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولاً تعریف الگوریتمها، داده ساختارها و مکانیزمهای ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالباً با کتابخانه هسته به عنوان قسمتی از آن رفتار میکنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هستهای را مشخص میکنند که باید در تمام پیاده سازیها موجود باشند، و در زبانهای استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبانها به گونهای تعریف شدهاند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونهای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک "بلاک") نمونهای از کلاس BlockContext کتابخانه میسازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان میباشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمیکنند که بگویند کدام قسمت زبان به عنوان ساختارهای زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.
عمل
طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازیهای زبان هستند.
خصوصیات
یک زبان برنامه نویسی باید تعریفی فراهم کند که کاربران و پیاده کنندههای زبان میتوانند از آن استفاده کنند تا مشخص کنند که رفتار یک برنامه درست است. با داشتن کد منبع: خصوصیات یک زبان برنامه نویسی چندین قالب میتواند بگیرد، مانند مثالهای زیر:
تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولاً با یک معناشناسی قراردادی مشخص میشود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)
توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.
پیاده سازی منبع یا مدل. گاهی اوقات در زبانهای مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحاً در رفتار پیاده سازی مدل موجودند.
پیاده سازی
پیاده سازی یک زبان برنامه نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سختافزار و نرمافزار را فراهم میکند. بطور وسیع، دو راه رسیدن به پیاده سازی زبان برنامه نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطور کلی با هر بک از ابن دو روش میتوان یک زبان را پیاده سازی کرد.
خروجی یک کامپایلر ممکن است با سختافزار و یا برنامهای به نام مفسر اجرا شود. در برخی پیاده سازیها که از مفسر استفاده میشود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده سازیهای زبان برنامه نویسی بیسیک کامپایل میکنند و سپس کد را خط به خط اجرا میکنند.
برنامههایی که مستقیماً روی سختافزار اجرا میشوند چندین برابر سریعتر از برنامههایی که با کمک نرمافزار اجرا میشوند، انجام میشوند.
یک تکنیک برای بهبود عملکرد برنامههای تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقاً قبل از اجرا، بلوکهای کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سختافزار ترجمه میکند.
تاریخچه
پیشرفتهای اولیه
اولین زبان برنامه نویسی به قبل از رایانههای مدرن باز میگردد. قرن ۱۹ دستگاههای نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثالهایی از زبانهای برنامه نویسی با حوزه مشخص شناخته میشوند. با شروع قرن بیستم، پانچ کارتها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتمها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.
در دهه ۴۰، اولین رایانههای دیجیتال که توسط برق تغذیه میشدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سالهای ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.
کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامههای زبان ماشین استفاده میکردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده میشوند جایگزین شد. در سالهای بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخههای به روز شده این برنامهها همچنان مورد استفاده قرار میگیرند، و هر کدام قویا توسعه زبانهای بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبانهای برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبانهای برنامه نویسی به شدت متاثر از محدودیتهای رابط بودند.
پالایش
دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثالهای عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبههای آن بهینه سازی ایدههای اولیه نسل سوم زبان برنامه نویسی بود:
APL برنامه نویسی آرایهای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.
PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایدههای خوب فورترن و کوبول را بهم پیوند دهد.
در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی میکرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به
عنوان اولین زبان کاملاً شئ گرا معرفی شد.
C بین سالهای ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.
Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.
در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبانهای برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.
هر یک از این زبانها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبانها از تبار حداقل یکی از زبانهای فوق به شمار میآیند.
دهههای ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبانهای برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.
"ادسگر دیکسترا" در نامهای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبانهای سطح بالا حذف شود.
در دهههای ۶۰ و ۷۰ توسعهٔ تکنیکهایی صورت گرفت که اثر یک برنامه را کاهش میداد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.
یکپارچگی و رشد
دهه ۸۰ سالهای یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینههای گزافی صرف تحقیق در مورد زبان نسل پنجم میشد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثالهای جدید، تمام این تلاشها ایدههایی که در دهههای قبل حلق شده بودند را بهتر کرد.
یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستمهای بزرگ از طریق مدولها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستمهای مدولی برجستهای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبانهای دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستمهای مدولی غالباً با ساختارهای برنامه نویسی عام همراه شدهاند.
رشد سریع اینترنت در میانه دهه ۹۰ فرصتهای ایجاد زبانهای جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وبگاههای دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعهها اساساً نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثالهای موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا میکند، هم در تحقیقات و هم در صنعت. جهتهای فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونههای جدید مدولی(mixin، نمایندهها، جنبهها) و تجمع پایگاه داده.
۴GLها نمونهای از زبانهایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه دادههای اسکالر را برگردانند، مجموعههایی را تغییر داده و بر میگردانند که برای اکثر زبانها متعارفند. Perl برای مثال، با "مدرک اینجا" خود میتواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.
سنجش استفاده از زبان
مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفادهاست، و اینکه کاربرد چه معنی میدهد با توجه به زمینه تغییر میکند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبانها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالباً روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامههای کاربردی، C در برنامههای تعبیه شده و سیستمهای عامل؛ و بقیه برنامهها معمولاً برای نوشتن انواع دیگر برنامهها کاربرد دارند. روشهای مختلفی برای سنجش محبوبیت زبانها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شدهاست:
شمارش تعداد تبلیغات شغلی که از آن زبان نام میبرند.
تعداد کتابهای آموزشی و شرح دهندهٔ آن زبان که فروش رفتهاست.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبانهایی را که در جستجوها کمتر پیدا میشوند دست کم گرفته شوند.
شمارش ارجاعهای زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.
طبقه بندیها هیچ برنامه غالبی برای دسته بندی زبانهای برنامه نویسی وجود ندارد. یک زبان مشخص معمولاً یک زبان اجدادی ندارد. زبانها معمولاً با ترکیب المانهای چند زبان پیشینه بوجود میآیند که هربار ایدههای جدید درگردشند. ایدههایی که در یک زبان ایجاد میشوند در یک خانواده از زبانهای مرتبط پخش میشوند، و سپس از بین خلاهای بین خانوادهها منتقل شده و در خانوادههای دیگر ظاهر میشوند.
این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر میکند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق میکند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.
در نگاه کلی، زبانهای برنامه نویسی به مثالهای برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم میشوند. مثالها شامل برنامه نویسی رویهای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبانها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبانهای برنامه نویسی ممکن است همه منظوره باشند، زبانهای برنامه نویسی سیستمی، زبانهای اسکریپتی، زبانهای محدوده مشخص، زبانهای همزمان/ گسترده(و یا ترکیب اینها). برخی زبانهای همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شدهاند.
یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثالهای برنامه نویسی دسته بندی شود. برای مثال، غالب زبانهای برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده میکنند، در حالیکه تعداد کمی این کار را نمیکنند. سایر زبانها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.
زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف دادهها، و عملیات یا تبدیلهایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم میکند. یک برنامه نویس از انتزاعات آماده در زبان استفاده میکند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از سادهترین عناصر موجود بیان میشوند(مفاهیم ابتدایی نامیده میشوند).

زبانهای برنامه نویسی با غالب زبانهای انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبانهای طبیعی برای ارتباط با دیگر انسانها، نویسندگان و گویندگان میتوانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانهها "دقیقاً آنچه که به آنها گفته شده را انجام میدهند." و نمیتوانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بودهاست] البته امروزه برنامههایی برای انجام این کار تولید شدهاند و تلاشهای بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص میکند. برنامههای یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامهها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامهای استفاده میشود، زبان اسکریپت میگویند. بسیاری از زبانها کنار گذاشته شدهاند، برای رفع نیازهای جدید جایگزین شدهاند، با برنامههای دیگر ترکیب شدهاند و در نهایت استعمال آنها متوقف شدهاست. با وجود اینکه تلاشهایی برای طراحی یک زبان رایانه" کامل" شدهاست که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبانهای رایانهای گسترده از گستردگی زمینههایی که زبانها استفاده میشوند، ناشی میشود:
محدوده برنامهها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستمهای بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
توانایی برنامه نویسها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفهایهایی که با پیچیدگی قابل توجهی کنار میآیند.
برنامهها باید سرعت، اندازه و سادگی را بسته به سیستمها از ریزپردازندها تا ابر رایانهها متناسب نگه دارند.
برنامهها ممکن است یک بار نوشته شوند و تا نسلها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند.
در نهایت، برنامه نویسها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.
یک سیر رایج در گسترش زبانهای برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبانهای برنامه نویسی اولیه به سختافزار رایانه گره خورده بودند. همانطور که زبانهای برنامه نویسی جدید گسترش پیدا کردهاند، ویژگیهایی به برنامهها افزوده شده که به برنامه نویس اجازه دهد که ایدههایی که از ترجمه ساده به دستورات سختافزار دورتر هستند نیز استفاده کند. چون برنامه نویسها کمتر به پیچیدگی رایانه محدود شدهاند، برنامههای آنها میتواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را میدهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازندههای زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبانهای اختصاصی برنامه نویسی پیشنهاد شدهاند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.
المانها
تمام زبانهای بزنامه نویسی تعدادی بلوکهای ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معناشناسی و دستوری تعریف میشوند که ساختار و معنای مربوطه را توضیح میدهند.
دستور(
syntax)
فرم سطحی یک زبان برنامه نویسی دستور آن نامیده میشود. غالب زبانهای برنامه نویسی کاملاً متنی اند؛ و از دنبالهٔ متون شامل کلمات، اعداد، نشانگذاری، بسیار شبیه زبان نوشتاری طبیعی استفاده میکنند. از طرف دیگر، برنامههایی نیز وجود دارند که بیشتر گرافیکی اند، و از روابط بصری بین سمبلها برای مشخص کردن برنامه استفاده میکنند. دستور یک زبان ترکیبات ممکن سمبلها برای ایجاد یک برنامهٔ درست را از نظر دستوری مشخص میکند. معنایی که به یک ترکیب سمبلها داده میشود با معناشناسی اداره میشود(قراردادی یا نوشته شده در پیاده سازی منبع). از آنجا که اغلب زبانها متنی هستند، این مقاله دستور متنی را مورد بحث قرار میدهد.
دستور زبان برنامه نویسی معمولاً بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف میشوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom ::= number | symbol number ::= [+-]?['۰'-'۹']+ symbol ::= ['A'-'Za'-'z'].* list ::= '(' expression* ')' این گرامر موارد ذیل را مشخص میکند:
یک عبارت یا atom است و یا یک لیست
یک atom یا یک عدد است و یا یک سمبل
یک عدد دنباله ناشکستهای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی میتواند پیش از آن بیاید.
یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) میآید.
یک لیست تعدادی پرانتز است که میتواند صفر یا چند عبارت در خود داشته باشد.
"۱۲۳۴۵"، "()"، "(a b c۲۳۲ (۱))" مثالهایی هستند از دنبالههای خوش فرم در این گرامر.
همه برنامههایی که از لحاظ دستوری درست هستند، از نظر معنا درست نیستند. بسیاری از برنامههای درست دستوری، بد فرم اند، با توجه به قوانین زبان؛ و ممکن است (بسته به خصوصیات زبان و درست بودن پیاده سازی) به خطای ترجمه و یا استثنا(exception) منتج شود. در برخی موارد، چنین برنامههایی ممکن است رفتار نامشخصی از خود نشان دهند. حتی اگر یک برنامه در یک زبان به خوبی بیان شده باشد، ممکن است دقیقاً مطلوب نویسنده آن نبوده باشد.
به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اطلاق کرد و یا ممکن است جمله نادرست باشد:
"ایدههای بی رنگ سبز با خشم میخوابند."از نظر دستوری خوش فرم است ولی معنای مورد قبولی ندارد.
"جان یک مجرد متاهل است." از نظر دستوری درست است، ولی معنایی را بیان میکند که نمیتواند درست باشد.
این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام میدهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p->real,p->im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im);
گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی میتواند با جایگاهش در "سلسله مراتب چامسکی" طبقه بندی شود. دستور اغلب زبانهای برنامه نویسی میتواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.
معناشناسی ایستا
معناشناسی ایستا محدودیتهایی بر روی ساختار مجاز متنها تعیین میکند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیتها به وسیله سیستم نوع گذاری انجام میشود.
سیستم نوع گذاری
یک سیستم نوع گذاری مشخص میکند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی میکند، چگونه میتواند آن نوعها را تغییر دهد و رفتار متقابل آنها چگونهاست. این کارعموما توضیح داده ساختارهایی که میتوانند در آن زبان ایجاد شوند را شامل میشود. طراحی و مطالعه سیستمهای نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.
زبانهای نوع گذاری شده و بدون نوع گذاری
یک زبان نوع گذاری شدهاست اگر مشخصات هر عملیات، نوع دادههای قابل اجرا توسط آن را با نشان دادن نوعهایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشتهاست. در غالب زبانهای برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبانهای برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامهها رد کنند. در برخی زبانها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامهها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبانهای نوع دار زبانهای تک نوعند. این زبانها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشتههای کاراکتری که هم برای دادههای عددی و هم برای دادههای سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبانهای اسمبلی، این امکان را میدهد که هر عملیاتی روی هر دادهای انجام شود، که معمولاً دنبالهای از بیتها با طولهای متفاوت در نظر گرفته میشوند. زبانهای سطح بالا که بی نوع هستند شامل زبانهای ساده رایانهای و برخی از انواع زبانهای نسل چهارم.
در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی میشوند(چک کردن یا رد کردن تمام عملیاتها)، غالب زبانهای امروزی درجهای از نوع گذاری را فراهم میکنند. بسیاری از زبانهای تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم میکنند.
نوع گذاری ایستا و متحرک
در نوع گذاری ایستا تمام عبارات نوعهای خود را قبل از اجرای برنامه تعیین میکنند(معمولاً در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمیتوانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.
زبانهای نوع گذاری شده ایستا میتوانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحاً نوعها را در جایگاههای منتنی مشخص مینویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریفها را بر اساس متن استنباط میکند. غالب زبانهای مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری میشوند
نوع گذاری قوی و ضعیف
نوع گذاری ضعیف این امکان را ایجاد میکند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.
نوع گذاری قوی مانع رخ دادن مشکل فوق میشود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا میشود. زبانهایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته میشوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبانها اشاره میکند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را میدهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل میکند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشتهای از حروف باشد. چنین تبدیلات ضمنی غالباً مفیدند، اما خطاهای برنامه نویسی را پنهان میکنند.
قوی و ایستا در حال حاضر عموماً دو مفهوم متعامد فرض میشوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت "قوی نوع گذاری شده" را به کار میبرند و منظورشان قوی، ایستایی نوع گذاری شدهاست، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شدهاست. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده میشود.
معناشناسی اجرا
وقتی که داده مشخص شد، ماشین باید هدایت شود تا عملیاتها را روی داده انجام دهد. معناشناسی اجرا ی یک زبان تعیین میکند که چگونه و چه زمانی ساختارهای گوناگون یک زبان باید رفتار برنامه را ایجاد کنند.
برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی میشوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا میکنند.
کتابخانه هسته
اغلب زبانهای برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات "کتابخانه استاندارد" نامیده میشوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازیهای زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولاً تعریف الگوریتمها، داده ساختارها و مکانیزمهای ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالباً با کتابخانه هسته به عنوان قسمتی از آن رفتار میکنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هستهای را مشخص میکنند که باید در تمام پیاده سازیها موجود باشند، و در زبانهای استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبانها به گونهای تعریف شدهاند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونهای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک "بلاک") نمونهای از کلاس BlockContext کتابخانه میسازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان میباشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمیکنند که بگویند کدام قسمت زبان به عنوان ساختارهای زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.
عمل
طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازیهای زبان هستند.
خصوصیات
یک زبان برنامه نویسی باید تعریفی فراهم کند که کاربران و پیاده کنندههای زبان میتوانند از آن استفاده کنند تا مشخص کنند که رفتار یک برنامه درست است. با داشتن کد منبع: خصوصیات یک زبان برنامه نویسی چندین قالب میتواند بگیرد، مانند مثالهای زیر:
تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولاً با یک معناشناسی قراردادی مشخص میشود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)
توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.
پیاده سازی منبع یا مدل. گاهی اوقات در زبانهای مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحاً در رفتار پیاده سازی مدل موجودند.
پیاده سازی
پیاده سازی یک زبان برنامه نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سختافزار و نرمافزار را فراهم میکند. بطور وسیع، دو راه رسیدن به پیاده سازی زبان برنامه نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطور کلی با هر بک از ابن دو روش میتوان یک زبان را پیاده سازی کرد.
خروجی یک کامپایلر ممکن است با سختافزار و یا برنامهای به نام مفسر اجرا شود. در برخی پیاده سازیها که از مفسر استفاده میشود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده سازیهای زبان برنامه نویسی بیسیک کامپایل میکنند و سپس کد را خط به خط اجرا میکنند.
برنامههایی که مستقیماً روی سختافزار اجرا میشوند چندین برابر سریعتر از برنامههایی که با کمک نرمافزار اجرا میشوند، انجام میشوند.
یک تکنیک برای بهبود عملکرد برنامههای تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقاً قبل از اجرا، بلوکهای کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سختافزار ترجمه میکند.
تاریخچه
پیشرفتهای اولیه
اولین زبان برنامه نویسی به قبل از رایانههای مدرن باز میگردد. قرن ۱۹ دستگاههای نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثالهایی از زبانهای برنامه نویسی با حوزه مشخص شناخته میشوند. با شروع قرن بیستم، پانچ کارتها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتمها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.
در دهه ۴۰، اولین رایانههای دیجیتال که توسط برق تغذیه میشدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سالهای ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.
کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامههای زبان ماشین استفاده میکردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده میشوند جایگزین شد. در سالهای بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخههای به روز شده این برنامهها همچنان مورد استفاده قرار میگیرند، و هر کدام قویا توسعه زبانهای بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبانهای برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبانهای برنامه نویسی به شدت متاثر از محدودیتهای رابط بودند.
پالایش
دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثالهای عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبههای آن بهینه سازی ایدههای اولیه نسل سوم زبان برنامه نویسی بود:
APL برنامه نویسی آرایهای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.
PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایدههای خوب فورترن و کوبول را بهم پیوند دهد.
در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی میکرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به
عنوان اولین زبان کاملاً شئ گرا معرفی شد.
C بین سالهای ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.
Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.
در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبانهای برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.
هر یک از این زبانها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبانها از تبار حداقل یکی از زبانهای فوق به شمار میآیند.
دهههای ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبانهای برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.
"ادسگر دیکسترا" در نامهای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبانهای سطح بالا حذف شود.
در دهههای ۶۰ و ۷۰ توسعهٔ تکنیکهایی صورت گرفت که اثر یک برنامه را کاهش میداد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.
یکپارچگی و رشد
دهه ۸۰ سالهای یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینههای گزافی صرف تحقیق در مورد زبان نسل پنجم میشد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثالهای جدید، تمام این تلاشها ایدههایی که در دهههای قبل حلق شده بودند را بهتر کرد.
یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستمهای بزرگ از طریق مدولها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستمهای مدولی برجستهای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبانهای دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستمهای مدولی غالباً با ساختارهای برنامه نویسی عام همراه شدهاند.
رشد سریع اینترنت در میانه دهه ۹۰ فرصتهای ایجاد زبانهای جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وبگاههای دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعهها اساساً نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثالهای موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا میکند، هم در تحقیقات و هم در صنعت. جهتهای فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونههای جدید مدولی(mixin، نمایندهها، جنبهها) و تجمع پایگاه داده.
۴GLها نمونهای از زبانهایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه دادههای اسکالر را برگردانند، مجموعههایی را تغییر داده و بر میگردانند که برای اکثر زبانها متعارفند. Perl برای مثال، با "مدرک اینجا" خود میتواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.
سنجش استفاده از زبان
مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفادهاست، و اینکه کاربرد چه معنی میدهد با توجه به زمینه تغییر میکند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبانها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالباً روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامههای کاربردی، C در برنامههای تعبیه شده و سیستمهای عامل؛ و بقیه برنامهها معمولاً برای نوشتن انواع دیگر برنامهها کاربرد دارند. روشهای مختلفی برای سنجش محبوبیت زبانها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شدهاست:
شمارش تعداد تبلیغات شغلی که از آن زبان نام میبرند.
تعداد کتابهای آموزشی و شرح دهندهٔ آن زبان که فروش رفتهاست.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبانهایی را که در جستجوها کمتر پیدا میشوند دست کم گرفته شوند.
شمارش ارجاعهای زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.
طبقه بندیها هیچ برنامه غالبی برای دسته بندی زبانهای برنامه نویسی وجود ندارد. یک زبان مشخص معمولاً یک زبان اجدادی ندارد. زبانها معمولاً با ترکیب المانهای چند زبان پیشینه بوجود میآیند که هربار ایدههای جدید درگردشند. ایدههایی که در یک زبان ایجاد میشوند در یک خانواده از زبانهای مرتبط پخش میشوند، و سپس از بین خلاهای بین خانوادهها منتقل شده و در خانوادههای دیگر ظاهر میشوند.
این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر میکند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق میکند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.
در نگاه کلی، زبانهای برنامه نویسی به مثالهای برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم میشوند. مثالها شامل برنامه نویسی رویهای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبانها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبانهای برنامه نویسی ممکن است همه منظوره باشند، زبانهای برنامه نویسی سیستمی، زبانهای اسکریپتی، زبانهای محدوده مشخص، زبانهای همزمان/ گسترده(و یا ترکیب اینها). برخی زبانهای همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شدهاند.
یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثالهای برنامه نویسی دسته بندی شود. برای مثال، غالب زبانهای برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده میکنند، در حالیکه تعداد کمی این کار را نمیکنند. سایر زبانها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.
ساعت :