تکنولوژی
تکنولوژیها و روشهای عملی
مهندسان نرمافزار طرفدار تکنولوژیها و روشهای عملی بسیار متفاوت و مختلفی هستند، که با هم ناسازگار هستند. این بحث در سالهای دهه ۶۰ میلادی شروع شد و ممکن است برای همیشه ادامه پیدا کند. مهندسان نرمافزار از تکنولوژیها و روشهای عملی بسیار متنوعی استفاده میکنند.
کسانی که کار عملی میکنند از تکنولوژیهای متنوعی استفاده میکنند: کامپایلرها، منابع کد، پردازشگرهای متن. کسانی که کار عملی میکنند از روشهای عملی بسیار متنوعی استفاده میکنند تا تلاشهایشان را اجرا و هماهنگ کنند: برنامهنویسی در دستههای دونفری، بازبینی کد، و جلسات روزانه. هدف هر مهندس نرمافزار بایستی رسیدن به ایدههای جدید خارج از الگوهای طراحی شده قبلی باشد، که باید شفاف بوده و بهخوبی مستند شده باشد.
با وجود رشد فزاینده اقتصادی و قابلیت تولید فزایندهای که توسط نرمافزار ایجاد شده، هنوز هم بحث و جدلهای ماندگار درباره کیفیت نرمافزار ادامه دارند.
ماهیت مهندسی نرمافزار
دیوید پارناس گفتهاست که مهندسی نرمافزار یک شکل از مهندسی است. استیو مککانل گفتهاست که هنوز اینطور نیست، ولی مهندسی نرمافزار باید یک شکل از مهندسی شود. دونالد کنوت گفتهاست که برنامهنویسی یک هنر است.
دیوان فعالیتهای آماری آمریکا مهندسان نرمافزار را به عنوان زیرگروهی از «متخصصان رایانه»، با فرصتهای شغلیای مانند «دانشمند رایانه»، «برنامه نویس» و «مدیر شبکه» دسته بندی کردهاست. BLS تمام مهندسان دیگر این شاخه علمی، که شامل مهندسان سختافزار رایانه نیز هست، را بهعنوان «مهندسان» دسته بندی میکند.
نرمافزار سیستم
نرمافزار سیستم به نرمافزاری در رایانه گفته میشود که به کارکرد سیستم رایانه یا کاربردهای سطح پایین (یا Low Level) رایانه مربوط باشد. این نرمافزارها به ساختار فیزیکی سختافزار رایانه وابسته هستند و در نوشتن آنها از زبانهای سطح پائین مانند زبان اسمبلی استفاده میشود. سیستمعامل و درایورها از نرمافزارهای سیستم هستند. از جمله زبان هایی که برای نگارش نرمافزارهای سیستمی استفاده میشود، زبان برنامه نویسی C میباشد. کار کردن با سی برای برنامه نویسان راحت تر است و آنان این زبان را به اسمبلی ترجیح میدهند. اگر برای نگارش نرمافزار سیستمی مشکل محدودیت فضای سختافزاری داشته باشیم بهتر است با زبان اسمبلی کار کنیم که حجم آن پایین تر است. نرمافزارهای سیستمی به سختافزار وابسته اند.
در برابر نرمافزار سیستم، نرمافزار کاربردی قرار دارد که برای کاربردهای سطح بالا و غیرسیستمی رایانه است و معمولاً به زبانهای سطح بالا نوشته میشود که از جزئیات سختافزاری سیستم مستقل است.
نرمافزار کاربردی
نرمافزار کاربردی (به انگلیسی: Application software) عبارت است از نرمافزاری که با استفادهٔ مستقیم از منابع و قابلیتهای رایانه کاری را مستقیماً برای کاربر انجام میدهد. باید توجه داشت که این عبارت در مقابل عبارت نرمافزار سیستمی معنی پیدا میکند.
نرمافزار سیستمی در مقابل در پسزمینه عمل میکند و خدماتی را فراهم میکند که دیگر نرمافزارها و یا سیستمعامل میتوانند برای انجام کارهای خود از آن استفاده کنند. اما در عوض معمولاً مستقیماً با کاربر عادی در تماس نیست و خدماتی را به او ارایه نمیدهد.
در عمل بیشتر نرمافزارهایی که کاربران با آنها سر و کار دارند از این دسته محسوب میشوند. برای مثال میتوان به نرمافزارهای رومیزی یعنی واژهپردازها، صفحه گستردهها، نرمافزارهای طراحی گرافیکی، بازیهای رایانهای و امثال آنها اشاره کرد.
بسیاری نرمافزارهای کاربردی، برای توسعهدهندگان ابزار رابط برنامهنویسی کاربردی هم فراهم میکنند تا بتوان از قابلیتهای نرمافزار در نرمافزارهای جدید استفاده کرد. برای مثال نرمافزار ادوبی آکروبات هنگام نصب ایپیآی فراهم میکند که برنامهنویس میتواند با استفاده از آن تواناییهای آکروبات را در برنامهٔ خود به کار گیرد.
برای عنوان نمونههای دیگر میتوان به نرمافزارهای پردازش متن، برگههای گسترده (صفحات گسترده) و نرمافزارهای پخش نوا و نما اشاره کرد.
نرمافزار آزاد
نرمافزار آزاد (به انگلیسی: Free software) نرمافزاری است که بههمراه کد منبع توزیع شده و با قوانینی منتشر میشود که آزادی استفاده، مطالعه، ویرایش و انتشار مجددِ کاربران را تضمین میکند. نرمافزارهای آزاد معمولاً با همکاری برنامهنویسهای داوطلب بهعنوان یک پروژه بهوجود میآیند.
نرمافزارهای آزاد با نرمافزارهای مالکیتی (مانند مایکروسافت ویندوز) که آزادی کاربر در استفاده، مطالعه، ویرایش یا انتشار مجدد را در درجههای مختلف محدود میکنند، متفاوت است. این محدودیتها با در نظر گرفتن مجازاتهایی قانونی برای کاربرانی که قوانین آنها را نقض میکنند، بهوجود میآیند. نرمافزارهای مالکیتی عموماً به صورت بستههای اجراپذیر باینری و بدون دسترسی به کد منبع فروخته میشوند که جلوی ویرایش و وصلهکردن نرمافزار توسط کاربر را میگیرد و او را برای بهروزرسانی و پشتیبانی به شرکت نرمافزاری تولید کننده وابسته میکنند. نرمافزارهای آزاد از نرمافزاریهای رایگان که برای استفاده، از کاربر پولی دریافت نمیکنند، نیز متفاوتاند. این نوع نرمافزارها نیز معمولاً تمامی حقوق نرمافزار را برای تولیدکنندهٔ آن محفوظ داشته و جلوی مهندسی معکوس، ویرایش و یا توزیع مجدد توسط کاربر را میگیرند. بنابراین موضوع اصلی نرمافزار آزاد، موضوع آزادی است و نه قیمت آن: کاربران آزادند که هر چه میخواهند با نرمافزار انجام دهند. این آزادی شامل انتشار مجدد نرمافزار بهصورت رایگان و یا با سود نیز میشود. یعنی نرمافزار آزاد میتواند به صورت رایگان و یا در ازای دریافت مبلغی پول در اختیار کاربر قرار بگیرد.
ریچارد استالمن در سال ۱۹۸۵ در زمانی که در حال آغاز پروژهٔ گنو و بهوجود آوردن بنیاد نرمافزارهای آزاد بود، برای اولین بار از عبارت «نرمافزار آزاد» استفاده کرد. براساس تعریف بنیاد نرمافزارهای آزاد کاربران یک نرمافزارِ آزاد، آزاد هستند؛ چون به اجازه گرفتن نیازی ندارند؛ آنها در انجام کارهای دلخواهشان (مانند حق نشر و کپیبرداری) محدود نیستند؛ نیازی به موافقت با هیچ توافقنامهای ندارند؛ و در همان ابتدا نیز با نداشتن کد منبع محدود نبودهاند.
تعریف
طبق تعریف نرمافزار آزاد توسط بنیاد نرمافزارهای آزاد، هر نرمافزاری که آزادیهای زیر را برای کاربرانش فراهم کند به عنوان یک نرمافزار آزاد شناخته میشود:
کاربران باید اجازه داشته باشند که نرمافزار مورد نظر را برای هر قصد و منظوری اجرا کنند.
کاربران باید اجازه داشته باشند کدهای منبع نرمافزار را مطالعه کرده و آن را مطابق با نیازهای خود تغییر دهند. برای رسیدن به این هدف، کدهای منبع نرمافزار باید در اختیار کاربر قرار گیرد.
کاربران باید اجازه داشته باشند نرمافزار را مجدداً منشتر کرده و در اختیار دیگران قرار دهند. این کار میتواند به صورت رایگان و یا در ازای دریافت مبلغی پول صورت گیرد.
اگر کاربری نرمافزار را تغییر داد، باید اجازه داشته باشد آن را مجدداً منتشر کرده و در اختیار دیگران قرار دهد. برای تغییر دادن نرمافزار، لازم است تا کدهای منبع نرمافزار در اختیار کاربر قرار گیرد.
همچنین موسسه پیشگامان متنباز هم تعریف مشابهی از نرمافزار آزاد ارائه میدهد. طبق تعریف این موسسه، نرمافزار بازمتن تنها به معنی در دسترس ساختن کدمنبع نیست. علاوه بر آن مجوز باید ویژگیهای زیر را هم داشته باشد:
نرمافزار باید قابل توزیع مجدد باشد (چه به صورت رایگان، چه در ازای دریافت مبلغی پول)
نرمافزار باید شامل کد منبع باشد و این کد منبع را باید بتوان تغییر داد و مجدداً منتشر کرد.
مجوز نباید در برابر افراد یا گروه خاصی تبعیض قائل شود.
مجوز نباید کاربر را برای رسیدن به یک هدف خاص محدود کند.
مجوز نباید مختص به یک محصول خاص باشد.
مجوز نباید نرمافزارهای دیگری که به همراه نرمافزار مورد نظر عرضه شدهاند را محدود کرده و تحت تاثیر قرار دهد. برای مثال اگر چند نرمافزار بر روی یک دیسک منتشر شدند، مجوز نباید اصراری بر روی متنبازبودن آنها داشته باشد.
مجوز نباید تکنولوژی خاصی را محدود کند.
تاریخچه
در اوایل، نرمافزارها به صورت آزاد منتشر میشدند و برنامهنویسان و شرکتها آنها را به صورت آزادانه در اختیار یکدیگر قرار میداند. در اوایل، تجارت رایانه بیشتر مبتنی بر سختافزار بود و شرکتها درامد خود را بیشتر از راه تولید سختافزار کسب میکردند و هر شرکت، سختافزاری ناسازگار با دیگر شرکتها تولید میکرد. مشتریان، که بیشتر مهندسان و دانشمندان بودند، تشویق میشدند که نرمافزارهای ارائه شده توسط سختافزار را بهبود بخشیده و حتی آن را در اختیار دیگران هم قرار دهند. از آنجا که در آن زمانها سختافزارهای تولید شده توسط شرکتهای مختلف با یکدیگر ناسازگار بود و سختافزار استانداردی وجود نداشت، و همینطور از آنجا که در آن زمان مفسرها و کامپایلرها هنوز جا نیفتاده بودند (که این برنامهها برنامهها را قابل حملتر میکنند)، شانس کمی وجود داشت که نرمافزار مورد نظر بر روی سختافزار شرکت رقیب هم به خوبی اجرا شود.
رفتهرفته که صنعت رایانه پیشرفت کرد و سختافزارها بیشتر استاندارد شدند و همینطور کامپایلرها و مفسرها پیشرفت کردند، زمینه برای رشد نرمافزارهای انحصاری فراهم شد. با چنین پیشرفتهایی، برنامهها راحتتر از سختافزار یک شرکت به سختافزار شرکت رقیب پورت میشدند و راحت میشد یک نرمافزار را بر روی سختافزارهای مختلفی از شرکتهای مختلف اجرا کرد. بدین ترتیب یک نفر میتوانست نرمافزاری بنویسد که مستقل از سختافزار خاصی عمل کند و بر روی طیف وسیعی از آنها اجرا شود. علاوه بر آن، با استاندارد شدن سختافزارها، تفاوتهای ناچیزی که آنها در کارایی داشتند رفته رفته ناپدید شد. تولید کنندگان به این نتیجه رسیده بودند که باید به نرمافزار هم به چشم یک وسیله فروشی نگاه کنند. شرکتها شروع به فروش نرمافزارهای خود کردند و دست کاربران خود را برای تغییر در نرمافزارها و انتشار مجدد آنها بستند. به گونه ای که در سال ۱۹۶۸ شرکتی به نام ایدیآر (به انگلیسی: ADR) اولین نرمافزار دارای مجوز را عرضه کرد. در سال ۱۹۶۹، شرکت آیبیام به خاطر اینکه به همراه سختافزارهای خود، نرمافزارهای آزاد ارائه میکرد، توسط وزارت دادگستری ایالات متحده آمریکا به از بین بردن کسب و کار و ایجاد یک شرایط ضدرقابتی برای دیگر متهم شد. آیبیام دیگر به همراه سختافزارهای خود نرمافزار ارائه نکرد و بدین ترتیب نرمافزارها و سختافزارها از یکدیگر جدا شدند و فاصله گرفتند.
در سال ۱۹۸۳، ریچارد استالمن از آزمایشگاه هوش مصنوعی و علوم رایانه امآیتی، پروژه گنو را بنیان نهاد. او که از تغییر فرهنگ در صنعت رایانه و کاربرانش ناامید شده بود، قصد داشت سیستمعاملی به نام گنو را به صورت یک نرمافزار آزاد توسعه دهد. در ژانویه ۱۹۸۴ توسعه سیستمعامل گنو آغاز گشت و بنیاد نرمافزارهای آزاد در اکتبر ۱۹۸۵ بنیان نهاده شد. در سال ۱۹۸۹، اولین نسخه از اجازهنامه همگانی گنو منشتر شد. البته جیپیال اولین پروانه نرمافزار آزاد نبود و قبل از آن پروانههای نرمافزار آزاد دیگری مانند پروانه بیاسدی در سال ۱۹۸۸ عرضه شده بودند. تا کنون پروانههای نرمافزار آزاد زیادی توسط افراد و شرکتهای مختلف منتشر شده است که آز این میان میتوان به پروانه امآیتی، پروانه آپاچی، پروانه آیاسسی، پروانه همگانی موزیلا و ... اشاره کرد.
در سال ۱۹۹۷، اریک ریموند مقالهای با نام کلیسای جامع و بازار را منتشر کرد و در آن به بررسی اصول نرمافزارهای آزاد و مزایای آنها پرداخت. این مقاله به شدت مورد توجه قرار گرفت و یکی از دلایلی بود که شرکت ارتباطات نتاسکیپ، کد منبع مرورگر اینترنتی خود را به صورت نرمافزار آزاد منتشر کرد. این کار باعث شد تا شرکتهای دیگری هم به نرمافزارهای آزاد توجه نشان دهند. کدهای منبع نتاسکیپ، بعدها اساس توسعه مرورگر فایرفاکس و برنامه تاندربیرد قرار گرفت.
مسئله نامگذاری
در زبان انگلیسی، کلمه Free معانی متفاوتی همچون آزادی، رایگان بودن و ... دارد. عدهای بر این عقیده بودند که ممکن است این کلمه باعث کژفهمی شده و باعث شود مردم به نرمافزارهای آزاد، به چشم نرمافزارهای رایگان نگاه کنند. این در حالی است که یک نرمافزار آزاد، لزوماً رایگان نیست. آنها در سال ۱۹۹۸ کمپین دیگری به نام «نرمافزارهای متنباز» (به انگلیسی: Open Source) را تشکیل دادند تا با تاکید بیشتر بر روی مدل توسعه و مسائل تکنیکی، به جای مسائل فلسفی و اخلاقی، مردم و شرکتها را هر چه بیشتر به استفاده از نرمافزار آزاد تشویق کنند. تقریباً هر دو مفهوم، اشاره به یک چیز دارند و یک نرمافزار متنباز، نرمافزار آزاد هم هست (و برعکس)، اما طرفداران ایده نرمافزارهای متنباز، آن را روشی برای توسعه نرمافزارهای بهتر معرفی میکنند و تاکید کمتری بر جنبش اجتماعی و فلسفه پشت این گونه نرمافزارها دارند. طبق گفته موسسه پیشگامان متنباز (که توسط طرفداران ایده نرمافزار متنباز بوجود آمده)، عبارت «نرمافزار آزاد» واژه ای قدیمیتر است و به گونهای منعکس کننده نام بنیاد نرمافزارهای آزاد است، سازمانی که در سال ۱۹۸۵ برای محافظت و ترویج نرمافزارهای آزاد بوجود آمد؛ با اینکه بنیانگذاران ایده متنباز هم از توسعه و ترویج نرمافزارهای آزاد حمایت میکنند، اما در مورد چگونگی ترویج آنها با بنیاد نرمافزارهای آزاد موافق نیستند و اعتقاد دارند که آزادی نرمافزار در درجه اول یک امر عملی است تا ایدئولوژیکی.
پروانههای نرمافزار آزاد
نرمافزارهای آزاد به همراه اجازهنامهای عرضه میشوند که این اجازهنامه آزادیهای نام برده شده را برای کاربران تضمین میکند. از جمله پروانههای نرمافزار آزاد میتوان به پروانه نرمافزار جیپیال، بیاسدی، پروانه امآیتی، پروانه آیاسسی و ... نام برد. این اجازه نامهها تفاوتهایی با یکدیگر دارند و هر کدام توسط افراد و شرکتهای خاصی برای اهداف خاصی منتشر شدهاند. یک دستهبندی کلی برای پروانههای نرمافزار آزاد این است که آیا آنها به صورت کپیلفت هستند یا نه. پروانههایی که کپیلفت هستند، مانند پروانه جیپیال، تاکید دارند که نسخههای مشتق شده از نرمافزار هم باید به صورت نرمافزار آزاد منتشر شوند. مجوزهای غیر کپیلفت تاکیدی بر روی این مساله ندارند و نسخههای مشتق شده از این گونه نرمافزارها را میتوان آزادانه به هر شکل دلخواهی، چه به صورت نرمافزار آزاد و چه به صورت نرمافزار انحصاری منتشر کرد. چنین مجوزهایی را اصطلاحاً «سهلگیرانه» (به انگلیسی: permissive) مینامند. از جمله رایجترین پروانههای کپیلفت، پروانه جیپیال و از جمله رایجترین پروانههای غیر کپیلفت، پروانه بیاسدی و پروانه امآیتی است. امروزه هر دو دسته از این پروانهها به صورت گسترده توسط پروژههای مختلف مورد استفاده قرار میگیرند. برای مثال، هسته لینوکس از پروانه جیپیال و پروژه فریبیاسدی از پروانه بیاسدی استفاده میکنند.
مسئله دیگر در مقایسه پروانههای نرمافزار آزاد، مسئله پیوند دادن کتابخانهها در دیگر نرمافزارهایی است که از یک پروانه غیرمشابه با پروانه کتابخانه استفاده میکنند. برخی از پروانههای نرمافزار آزاد، اجازه نمیدهند که کتابخانههای اشتراکی، توسط نرمافزارهایی که از یک پروانه غیر مشابه استفاده میکنند، پیوند زده شوند و مورد استفاده قرار گیرند. برای مثال، اگر کتابخانهای تحت پروانه جیپیال منتشر شده باشد، تنها نرمافزارهایی که تحت پروانه جیپیال منتشر شدهاند میتوانند به این کتابخانه پیوند داده شوند و از آن استفاده کنند. این کار مانع میشود تا نرمافزارهای انحصاری و یا حتی دیگر نرمافزارهای آزاد از یک کتابخانه با مجوز جیپیال استفاده کنند. بنیاد نرمافزارهای آزاد برای رفع این محدودیت جیپیال، پروانه الجیپیال را منتشر کرده است.
مدل تجاری
نرمافزارهای آزاد را میتوان مستقیماً به فروش رساند و به این ترتیب از فروش آنها کسب درامد کرد. اما این مسئله نباید آزادی های بالا را محدود کند. کاربر پس از خرید یک نرمافزار آزاد، میتواند آن را برای هر منظوری استفاده کرده، تغییر داده، و مجدداً منتشر کند (چه به صورت رایگان و چه به صورت تجاری). علاوه بر فروش مستقیم نرمافزار، میتوان با ارائه خدمات و پشتیبانی از نرمافزارهای آزاد، کسب درامد کرد. مثلاً یک شرکت میتواند با اضافه کردن یک قابلیت جدید به یک نرمافزار آزاد یا در قبال برطرف کردن یک ایراد امنیتی، مبلغی پول از مشتریانش دریافت کند. یا همچنین یک شرکت میتواند نحوه استفاده از یک برنامه را به کارمندان و کاربران یک شرکت دیگر آموزش دهد و در قبال آن دستمزد دریافت کند. برخی از پروانههای سهلگیر نرمافزار آزاد، به کاربران اجازه میدهند تا نرمافزار را بدون در اختیار قرار دادن کدهای منبع توزیع کنند. بدین ترتیب دست کاربران تجاری بیشتر باز خواهد بود. برخی از شرکتها، نرمافزارهای خود را با دو مجوز مختلف، هم به صورت آزاد و هم به صورت غیرآزاد عرضه میکنند.
برخی از توسعهدهندگان مستقل نرمافزار آزاد، کمکهای مالی از طرف افراد داوطلب قبول میکنند. به عنوان مثال، سورسفورج امکاناتی دارد که یک کاربر داوطلب میتواند مبلغی پول را به یک پروژه نرمافزار آزاد اهدا کند.
مثالهایی از نرمافزارهای آزاد کاربردی
هستهٔ سیستمعامل گنو/لینوکس، داروین.
تعدادی از سیستمعاملهای خانواده بیاسدی مانند فریبیاسدی, اپنبیاسدی, نتبیاسدی, دراگونفلیبیاسدی.
کامپایلر جیسیسی، کتابخانهٔ زبان برنامهنویسی سی
کامپایلر کلنگ
پایگاهدادههای رابطهای مانند: mysql، پستگر اسکیوال، برکلی دیبی
زبانهای برنامهنویسی مانند تیسیال، روبی، پایتون، پرل و پیاچپی.
مرورگر وب فایرفاکس (Firefox)
اُپن آفیس (Open Office)
میزکار کیدیای (KDE)
میز کار الاکسدیئی (LXDE)
میزکار اکسافسیئی (XFCE)
میزکار گنوم (Gnome)
برنامههای حروف چینی مانند تک، لاتک و فارسی تک
نرمافزارهای مدیریت محتوا مانند جوملا (!Joomla)، پیاچپی-نیوک (PHP-Nuke)، پست نیوک (postnuke) و مامبو (mambo) ,وردپرس (wordpress), دروپال (drupal) , ....
نرمافزارهای ساخت انجمن (Forum) مانند پیاچپیبیبی (phpbb)، اساماف (smf)، یاب (YaBB) و فروم (phorum)
ویرایشگرهای متن ویم و ایمکس
مجموعه اداری لیبرهآفیس
بدافزار
بدافزار (به انگلیسی: Malware)، برنامههای رایانهای هستند؛ به علت آنکه معمولاً کاربر را آزار میدهند یا خسارتی بوجود میآورند، به این نام مشهورند. برخی از آنان فقط کاربر را میآزارند. مثلاً وی را مجبور به انجام کاری تکراری میکنند. اما برخی دیگر سیستم رایانهای و دادههای آن را هدف قرار میدهند که ممکن است خساراتی به بار آورند. در عین حال ممکن است هدف آن سختافزار سیستم کاربر باشد.
یک نرمافزار برپایهٔ نیت سازنده آن به عنوان یک بدافزار شناخته میشود. در قانون گاه بدافزار را به عنوان یک آلودگی رایانهای مینامند. دستاوردهای مقدماتی که توسط سیمنتک در سال ۲۰۰۸ منتشر شد، بیان میکند که میزان کدهای آزاردهنده و دیگر برنامههای ناخواسته از شمار نرمافزارهای قانونی، ممکن است افزون باشد. همچنین گفته شدهاست: «که تعداد بدافزارهای تولید شده در سال ۲۰۰۷ به اندازه مجموع ۲۰ سال قبل بودهاست.» مهمترین پل ارتباطی بدافزارها از تولیدکنندگان آنها به کاربران از طریق اینترنت است.
در ۲۹ مارس سال ۲۰۱۰ شرکت سیمنتک شهر شائوژینگ چین را به عنوان پایتخت بدافزار در دنیا معرفی کرد.
مایکروسافت در می ۲۰۱۱ گزارش داد که از هر ۱۴ دانلود در اینترنت یکی شامل بدافزار است. به ویژه شبکههای اجتماعی و فیس بوک در حال مشاهده افزایش تاکتیکهای جدید برای ضربه زدن به رایانهها هستند.
بدافزار با یک نرمافزار معیوب یعنی نرمافزاری قانونی ولی شامل اشکالات مضر، تفاوت دارد. گاه بدافزار به صورت یک نرمافزار سالم و صحیح طراحی میشود و حتی ممکن است از یک سایت رسمی بیاید. بنابراین برخی از برنامههای امنیتی مانند مکافی ممکن است بدافزار را یک برنامهٔ «به طور بالقوه ناخواسته (به انگلیسی: Potentially Unwanted Programs)» بنامد. اگرچه یک ویروس رایانهای نیز بدافزاری است که خود را باز تولید میکند، اما غلب به اشتباه به همهٔ بدافزارها ویروس اطلاق میشود.
از انواع بدافزارها میتوان به ویروسها، کرمها، اسبهای تروآ، جاسوسافزارها، آگهیافزارها، روتکیتها و هرزنامهها اشاره کرد.
مقاصد
بسیاری از برنامههای آلوده کنندهٔ اولیه، از جمله اولین کرم اینترنتی و تعدادی از ویروسهای سیستم عامل داس (به انگلیسی: DOS)، به قصد آزمایش یا سرگرمی نوشته شدند. آنها عموماً به مقاصد بیضرر یا فقط به قصد آزار بودند، تا اینکه بخواهند خسارات جدی به سیستمهای رایانه وارد کنند. در برخی موارد سازنده نمیتوانست تشخیص دهد که چقدر کارش میتواند مضر باشد.
برنامهنویسان جوان وقتی دربارهٔ ویروسها و ترفندهایش میآموختند، تنها به منظور تمرین یا به این قصد که ببینند چقدر شیوع پیدا میکند، آنها را مینوشتند. در سال ۱۹۹۹ ویروسهای شایعی مانند ویروس ملیسا (به انگلیسی: Melissa) و ویروس دیوید (به انگلیسی: David) تنها به قصد سرگرمی نوشته شده بودند. اولین ویروس تلفن همراه در سال ۲۰۰۴ با نام ویروس کابیر (به انگلیسی: Cabir) بر روی تلفنهای همراه منتشر شد.
با این حال مقاصد سوء به منظور خرابکاری را میتوان در برنامههایی یافت که برای ایجاد آسیب به سیستم رایانهای و یا از دست رفتن اطلاعات، طراحی شدهاند. بسیاری از ویروسهای سیستم عامل داس، با این هدف طراحی شدند تا فایلهای موجود در یک دیسک سخت را نابود کنند یا فایلهای سیستمی را با نوشتن اطلاعات نادرست بر روی آنها دچار اختلال کنند.
از زمان گسترش دسترسی به اینترنت پر سرعت، بدافزارهایی به منظور ایجاد سود طراحی شدهاند. به عنوان مثال از سال ۲۰۰۳، اغلب ویروسها و کرمهای رایانهای، طراحی شدند تا کنترل رایانههای کاربران را به منظور بهرهگیری در بازار سیاه به کار گیرند.
بدافزارهای مسری: ویروسها و کرمها
انواع بدافزارها، ویروسها و کرمها هستند که به خاطر نحوهٔ شیوعشان شناخته میشوند. عبارت ویروس کامپیوتری به برنامهای اطلاق میشود که نرمافزار قابل اجرایی را آلوده کرده باشد و هنگامی که اجرا میشود، سبب شود که ویروس به فایلهای قابل اجرای دیگر نیز منتقل شود. ویروسها ممکن است قابلیت حمل یک بار اضافی را نیز داشته باشند، که میتواند اعمال دیگر نیز انجام دهد. این اعمال اغلب خرابکارانه هستند. از سوی دیگر یک کرم برنامهای است که به طور فعالانه خود را روی یک شبکه منتقل میکند تا رایانههای دیگر را نیز آلوده سازد. کرمها نیز قابلیت حمل یک بار اضافی را دارند.
تعریفهای بالا نشان میدهد که تفاوت ویروس و کرم در این است که یک ویروس برای شیوع نیاز به دخالت کاربر دارد، در حالی که یک کرم خود را به طور خودکار و از طریق شبکه گسترش پیدا میکند. در نتیجه آلودگیهایی که از طریق ایمیل یا فایلهای مایکروسافت ورد (به انگلیسی: مایکروسافت ورد) منتقل میشوند، ویروس شناخته میشوند، زیرا باید دریافتکنندهٔ فایل یا ایمیل آن را باز کند تا سیستم آلوده شود. برخی نویسندگان در رسانههای محبوب نیز متوجه این تمایز نیستند و از این عبارتها به اشتباه در جای یکدیگر استفاده میکنند.
مخفی کارها: اسبهای تروآ، روتکیتها و بکدُورها
اسبهای تروآ: (به انگلیسی: Trojan horses)
یک برنامه خرابکار برای اینکه بتواند به اهدافش برسد باید قادر باشد که اجرا شود بدون آنکه توسط کاربر یا مدیر سیستم رایانه خاموش یا پاکسازی شود. مخفی کاری همچنین این امکان را میدهد که بدافزار در اولین مکان نصب شود. وقتی یک برنامه خرابکار خود را به شکل چیز بی ضرر یا مطلوب در میآورد، کاربران ممکن است تشویق شوند تا آن را بدون آنکه بدانند چه میکند، نصب کنند. این، ترفندِ اسب تروآ است.
به بیان دیگر، یک اسب تروآ برنامهای است که کاربر را ترغیب میکند تا اجرایش کند در حالی که قابلیت خرابکاریش را مخفی میکند. آثار منفی ممکن است بلافاصله آغاز شوند و حتی میتوانند منجر به آثار نامطلوب فراوانی گردند. از جمله حذف کردن فایلهای کاربر یا نصب نرمافزارهای خرابکار یا نا مطلوب بیشتر. اسبهای تروآ برای آغازسازی شیوع یک کرم استفاده میشوند.
یکی از مرسوم ترین راههایی که جاسوس افزارها توزیع میشوند، از طریق یک اسب تروآ که به عنوان یک قطعه از یک نرمافزار مطلوب که کاربر آن را از اینترنت دانلود میکند، است. وقتی که کاربر نرمافزار را نصب میکند جاسوس افزار نیز در کنارش نصب میشود. برای مثال اسب تراوا در غالب یک نرمافزار دانلودنصب میشود و به صورت مستقل از نرمافزار اصلی یا مرتبط با آن شروع به دانلود برنامه و مدیاها گاهی با مضامین مستهجن میکند. مثال اخیر تروجان فوق سری نرمافزارهایی با پسوند finder میباشد.
نویسندگان جاسوس افزار سعی میکنند به صورت قانونی عمل کنند، ممکن است رفتار جاسوس افزار را در عباراتی مبهم در توافق نامه با کاربر بیاورند و البته کاربران بعید است که این توافق نامه را بخوانند یا بفهمند. تروآها به صورت عمده به منظور کارهای تجاری استفاده میشوند.
رد گم کن:(به انگلیسی: Rootkits)
رد گم کن واژه مصوب فرهنگستان زبان و ادب فارسی برای (به انگلیسی: Rootkits) است. هنگامی که یک برنامهٔ خرابکار روی یک سیستم نصب میشود بسیار مهم است که مخفی باقی بماند تا از تشخیص و نابودی در امان باشد. همین وضعیت دربارهٔ یک مهاجم انسانی که بطور مستقیم وارد یک رایانه میشود برقرار است. ترفندهایی که به عنوان روتکیتها شناخته میشوند اجازه این مخفی کاری را میدهند. آنها این کار را با اصلاح سیستم عامل میزبان انجام میدهند به نحوی که بدافزار از دید کاربر مخفی بماند. روتکیتها میتوانند از این که یک پروسهٔ خرابکارانه در لیست پروسههای سیستم دیده شود ممانعت کنند، یا مانع خوانده شدن فایلهای آن شوند. در ابتدا یک روتکیت مجموعهای از ابزارها بود که توسط یک مهاجم انسانی بر روی یک سیستم یونیکس نصب میشد که به مهاجم اجازه میداد تا دسترسی مدیریتی داشته باشد. امروزه این عبارت بطور عمومی تر برای فرایندهای مخفی سازی در یک برنامهٔ خرابکار استفاده میشود.
بکدُرها:(به انگلیسی: Backdoors)
یک بکدُر روشی است برای خنثی سازی رویههای معمول تایید اعتبار. وقتی یک سیستم دارای چنین رویههایی باشد یک یا چند بکدُر ممکن است نصب شوند تا دسترسیهای آتی را آسان تر سازد. بکدُرها ممکن است حتی پیش از یک نرمافزار خرابکار نصب شوند تا به مهاجمان اجازهٔ ورود دهند.
دیگر بدافزارها
جاسوسافزارها
جاسوسافزارها (Spyware) بدافزارهایی هستند که بر روی رایانهٔ کاربر نصب میشوند و بدون اطلاع وی، اطلاعات مختلف در مورد او را جمعآوری میکنند. اکثر جاسوسافزارها از دید کاربرها مخفی میمانند و تشخیص و پیدا کردن آنها در اغلب موارد مشکل است. برخی از جاسوسافزارها مانند کیلاگرها ممکن است توسط مسئول یک سازمان و یا شرکت بر روی رایانهها نصب شوند تا رفتار کاربران قابل ارزیابی و بررسی باشد.
جاسوسافزارها هر گونه اطلاعاتی را میتوانند جمعآوری کنند. این اطلاعات میتواند اطلاعات شخصی یک کاربر مانند گشت و گذارهای وی بر روی اینترنت و یا مشخصات حسابهای مختلف وی مانند رمز عبور پست الکترونیکی و... باشد. علاوه بر این، جاسوسافزارهای میتوانند در کنترل رایانه توسط کاربر اختلال ایجاد کنند. به عنوان مثال، جاسوسافزارهای میتوانند کاربر را به بازدید از یک صفحهٔ خاص اینترنتی مجبور کنند و یا اینکه با تغییر تنظیمات رایانهٔ وی، باعث کاهش سرعت اینترنت و دسترسی غیرمجاز به رایانهٔ وی شوند. وباید توجه داشت که نرمافزارِDjyjji.3درست راهاندازی شود.
آگهیافزار
آگهیافزار یا برنامههای تبلیغاتی (Adware): اینگونه برنامهها همانند جاسوسافزارها دارای اثر تخریبی نمیباشند و وظیفه آنها بازکردن صفحات خاص اینترنتی جهت اهداف تجاری و تبلیغی است.
جکها
جکها (Joke) برنامههایی هستند که ادعا میکنند در حال انجام عملیاتی تخریبی بر روی سیستم شما میباشند ولی در واقع اینگونه نبوده و کار آنها چیزی جز یک شوخی ساده نمیباشد. متأسفانه برخی کاربران به سادگی تحت تأثیر جکها قرار گرفته و با تلاش برای از بین بردن چیزی که مخرب نیست باعث ایجاد تخریب بیشتری میشوند.
کلک
کلک (Hoax): این برنامهها با سوء استفاده از کم بودن اطلاعات تخصصی کاربران، آنها را فریب داده و با دستورات و توصیههای اشتباه باعث میشوند که کاربر شخصاً کاری تخریبی بر روی سیستم خود انجام دهد. به عنوان مثال وانمود میکنند که فایلی خاص در مسیر سیستمعامل یک برنامه خطرناک است و باید توسط کاربر حذف شود. غافل از اینکه این فایل سیستمی بوده و برای عملکرد درست سیستمعامل، وجود آن لازم است.
شمارهگیرها
شمارهگیر (Dialer): اینگونه برنامهها وظیفهشان ارتباط دادن کاربر از طریق خط تلفن به سرورهایی در دیگر کشورها برای دسترسی مستقیم به اطلاعات آنها میباشد. این سرورها معمولاً مربوط به سایتهای غیراخلاقی بوده و برقراری ارتباط با آنها از طریق خط تلفن باعث هزینه بسیار زیاد مالی میگردد.
بارگیرها
بارگیر (Downloader): کار اینگونه برنامهها Download کردن بد افزارها و اجرای آنها است
کلیککنندهها
کلیککننده (Adclicker): اینگونه برنامهها لینک صفحات تبلیغاتی را دنبال نموده و به این طریق حالت کلیک شدن بر روی آن صفحه تبلیغاتی خاص را شبیه سازی میکنند و باعث بالا رفتن hit آن میشوند.
درهای پشتی
درهای پشتی (Backdoors) ابزاری برای نفوذگرها هستند که به وسیله آنها میتوانند سیستمهای دیگر را در کنترل خود درآورند. درهای پشتی درون شبکه، پورتهای TCP یا UDP را باز میکنند و شروع به گوش کردن نموده تا دستورات نفوذگرها را اجرا کنند. درهای پشتی از جهت نداشتن قابلیت تکثیر شبیه ترویاها هستند.
گذرواژهدزدها
گذرواژهدزد (Password-Stealer): اینگونه برنامهها که نوعی ترویا هستند کارشان دزدی پسورد از روی سیستمها و ارسال آنها برای نفوذگرها است.
بهرهکشها
بهرهکشها (Exploits) کدهای مخربی هستند که با استفاده از آسیب پذیریهای یک سیستم امکان دسترسی از راه دور به آن سیستم را فراهم میکنند.
کیلاگر
کلیدنگار یا کیلاگر (Keylogger) برنامههایی هستند که با قرار گرفتن در حافظه از کلیدهای زده شده توسط کاربر گزارش گرفته و در قالب یک فایل برای نفوذگر میفرستند. البته باید بدانیم که کیلاگرها به صورت سختافزاری نیز وجود دارند.
برنامههای ضد بدافزار
با افزایش حملات بدافزارها توجهها از محافظت در برابر ویروسها و جاسوس افزارها به سمت محافظت از بدافزارها جلب شدهاست. در نتیجه برنامههای مخصوصی برای مبارزه با آنها توسعه یافتهاست. برنامههای ضد بدافزار از دو طریق با بدافزار نبرد میکند:
۱ - آنها محافظت بی درنگ را در برابر نصب بدافزار روی یک رایانه میتوانند تامین کنند، در این نوع از محافظت نرمافزار ضد بدافزارتمام اطلاعات ورودی از شبکه را اسکن میکند تا ازورود بدافزارها و تهدیدهایی که با آنها میآیند جلوگیری به عمل آورد. محافظت بی درنگ از بدافزار مشابه محافظت بی درنگ از ویروس عمل میکند. یعنی نرمافزار فایلها را در زمان دانلود آن اسکن نموده و از فعالیت هر چیزی که بد افزار شناخته شود ممانعت به عمل میآورد.
۲-برنامههای ضد بدافزار میتوانند تنها به منظور تشخیص و پاکسازی بدافزارهایی که قبلاً روی یک رایانه نصب شدهاند، مورد استفاده قرار گیرند. این نوع از محافظت در برابر بدافزار عمدتاً ساده تر و محبوب تر است. این نوع از ضد بدافزارها محتوای رجیستری ویندوز، فایلهای اجرایی سیستم و برنامههای نصب شده روی یک رایانه را اسکن میکنند و لیستی از تهدیدهای پیدا شده را تهیه میکنند، که به کاربر اجازه میدهد که چه فایلهایی را حذف یا نگاه دارد.
جاسوسافزار
اینگونه برنامهها مستقیماً دارای اثر تخریبی نیستند و وظیفهٔ آنها جمعآوری اطلاعات از روی رایانه کاربر و نیز تحت نظر قرار دادن اعمال وی هنگام کار با رایانه و اینترنت است. در نهایت این اطلاعات برای مقاصد خاص فرستاده میشود تا از آنها جهت اهداف تجاری و تبلیغی ونظامی و نظارتی و... استفاده گردد.
تعریف
جاسوس افزار مانند ویروس و کرم نوعی بدافزار است. بدافزار به برنامههایی گفته میشود که توانایی آسیب رساندن به یک سیستم کامپیوتری یا شبکهای از کامپیوترها را دارند. جاسوس افزار برنامهای است که بدون اجازه کاربر روی سیستم کامپیوتری وی نصب شده، کنترل آن را از فرد میگیرد و اطلاعات شخصی وی را برای یک شخص ثالث میفرستد.
تاریخچه
واژه جاسوس افزار برای اولین بار در ۱۶ اکتبر سال ۱۹۹۵ در متنی درمورد مدل تجارتی ماکروسافت استفاده شد. در سال ۲۰۰۰ آقای گریگور فرند در توصیف دیوار آتش شخصی خود به نام زون آلارم از واژه جاسوس افزار استفاده کرد. اما استفاده رسمی از این کلمه بعد از سال ۲۰۰۱ بود زمانی که آقای استیو گیبسون رئیس مرکز تحقیقات گیبسون متوجه نصب یک نرمافزار تبلیغاتی روی سیستم کامپیوتری خود شد که اطلاعات شخصی او را برای فرد دیگری ارسال میکرد. به همین دلیل وی یک برنامه ضدجاسوسی طراحی کرد و آن را اوپت اوت نامید.
انواع
در یک تقسیم بندی کلی نرمافزارهای جاسوسی را میتوان به دو دسته تقسیم کرد: ۳-۱- نرمافزارهای جاسوسی خانگی نرمافزاری که معمولاً توسط صاحبان کامپیوترها به منظورآگاهی یافتن از تاثیرات اینترنت بر شبکههای کامپیوتری خودشان خریداری و نصب میگردد. مدیران از این نرمافزار برای آگاهی از فعالیتهای کارمندان استفاده میکنند. بعضی افراد هم برای اطلاع از فعالیتهای سایر اعضای خانواده این روش را به کار میبرند. مانند مشاهده محتویات اتاقهای گفتگو توسط والدینی که فرزندانشان در آنها شرکت میکنند. همچنین این نوع جاسوس افزار میتواند توسط یک شخص ثالث بدون آگاهی صاحب کامپیوترروی سیستم وی نصب شود و اطلاعات شخصی وی را جمع آوری کند. ۳-۲- نرمافزارهای جاسوسی تجاری نرمافزاری است که شرکتها برای تعقیب فعالیتهای کاربران در اینترنت استفاده میکنند. این شرکتها که وظیفه نصب جاسوس افزار روی سیستمهای کامپیوتری را دارند اغلب اطلاعات حاصل را به بازاریابان میفروشند و آنها کاربر را با تبلیغات خاص که با علائق وی مطابقت دارد و برایش جذاب است مورد هدف قرارمی دهند.
راههای نفوذ
پنجرههای پاپ آپ :
پنجرههای کوچکی که به هنگام بازدید از سایت در برابر کاربر ظاهر میشوند و حاوی پیامهای مختلفی برای فریب اشخاص میباشند. در این پنجرهها اغلب دکمههای مختلفی مانند قبول، لغو، بستن و... وجود دارد ولی هیچ کدام از آنها کار اصلی خود را انجام نمیدهند و با فشردن هر کدام از این دکمهها جاسوس افزار روی سیستم نصب میشود.
نرمافزارهای ضد جاسوس افزار:
بعضی نرمافزارهای ضدجاسوسی به جای از بین بردن جاسوس افزار آن را روی سیستم نصب میکنند. از برنامههای مطمئن و معروف برای بالا بردن امنیت سیستم خود استفاده کنید.
برنامههای رایگان اینترنتی:
امروزه بسیاری از کاربران اینترنت بنا بر نیاز خود برنامههایی را که به صورت رایگان روی اینترنت قرار گرفته دانلود و نصب میکنند. اغلب صاحبان این برنامهها در ازای دریافت مبلغی یا بااهداف تجاری دیگر کد جاسوس افزار را در برنامه خود قرار میدهند و به هنگام نصب آن نرمافزار جاسوس افزار نیز روی سیستم کامپیوتری قرار گرفته و شروع به کار میکند
سی دیها و فلشها:
حافظههای جانبی قابل حمل مانند سی دی و فلش به این علت که بین سیستمهای زیادی جا به جا میشوند حاوی برنامههای مخرب هستند. ۴-۵- سوء استفاده از ضعف امنیتی اینترنت اکسپلورر بعضی از طراحان برنامههای مخرب که با ضعفهای امنیتی اینترنت اکسپلورر آشنا باشند میتوانند در کد صفحه وب خود دستورهایی قرار دهند که به هنگام بازکردن آن صفحه با اینترنت اکسپلورر جاسوس افزار روی کامپیوتر نصب شود
ویروسها:
برخی ویروسها حاوی کدهایی برای نصب جاسوس افزارهستند. == تمامی نشانه های یک جاسوس افزار
تشخیص آلوده بودن یک کامپیوتر به جاسوس افزار کار سختی نیست. سیستم آلوده نشانههای سادهای دارد از جمله: ۵-۱- تغییر ناگهانی صفحه خانگی مرورگر بعضی از جاسوس افزارها که برای اهداف تبلیغاتی طراحی میشوند بدون اجازه کاربر صفحه خانگی مرورگر اینترنتی را تغییر میدهند. بسیاری از افرادی که سیستم آنها آلوده شده به طور مکرر صفحه خانگی مرورگر را مطابق میل خود تنظیم نموده و با تغییر دوباره آن مواجه میشوند. ۵-۲- ایجاد نوار ابزارهای جدید از نشانههای دیگر وجود جاسوس افزار ظاهر شدن نوار ابزارهای جدید بدون خواست کاربر در پنجره مرورگر است.
ظاهر شدن مداوم پنجرههای پاپ آپ :
اگر فرد به صورت مکرر و مداوم با پنجرههای پاپ آپ مواجه شود امکان وجود جاسوس افزار در سیستم کامپیوتری وی زیاد است.
تغییر آدرس توسط مرورگر:
بعضی جاسوس افزارها طوری تنظیمات مرورگر را تغییر میدهند که برخلاف میل کاربر و بدون توجه به آدرس وارد شده در نوار آدرس و یا نوار جستجو صفحاتی را به وی نشان دهد که در جهت اهداف تبلیغاتی طراحان آن جاسوس افزار است.
ایجاد آیکونهای جدید روی صفحه نمایش:
وجود آیکونهای جدید و ناشناخته روی صفحه نمایش بدون خواست کاربر از نشانههای وجود جاسوس افزار است. عدم کارایی بعضی کلیدهای صفحه کلید: جاسوس افزارها کارایی کلیدهای صفحه کلید را تغییر میدهند به طوری که برای مثال کلید تب در پنجره مرورگر به جای جا به جایی روی پیوندها کار دیگری انجام دهد.
عملکرد کند کامپیوتر:
از آنجایی که جاسوس افزار یک برنامهاست برای اجرا شدن به حافظه و پردازنده نیاز دارد و سرعت کامپیوتر را کاهش میدهد.
خاموش شدن دیوار آتش و ضدویروس:
جاسوس افزار برای این که به راحتی اطلاعات کاربر را برای شخص ثالث ارسال کند و همچنین تنظیمات سیستم کامیوتری را تغییر دهد اغلب بدون اطلاع کاربر دیوار آتش و ضدویروس را غیر فعال میکند تا به اهداف خود دست یابد.
مشکلات
سرقت اطلاعات شخصی:
جاسوس افزارها میتوانند با دست یابی به کوکیها عادتهای اینترنتی، اطلاعات کارتهای اعتباری و بسیاری اطلاعات دیگر شما را جمع آوری کند همچنین با ثبت کردن کلیدهای فشرده شده توسط شما روی صفحه کلیدرمزهای عبور شما را به دست آورده و در اختیار افراد دیگر قرار دهند.
تاثیر منفی روی عملکرد کاربر:
ظاهر شدن مداوم پنجرههای پاپ آپ، ایجاد نوار ابزارها و آیکونهای جدید و ناشناخته، کاهش سرعت کامپیوتر، کاهش امنیت افراد در استفاده از اینترنت و سایر مشکلاتی که جاسوس افزار ایجاد میکند بر عملکرد کاربران تاثیر میگذارد.
کاهش کارایی سیستم:
همانطور که گفته شد چون جاسوس افزار نوعی برنامهاست حافظه و پردازنده کامپیوتر را مصرف میکند و کارایی سیستم را کاهش میدهد.
استفاده از پهنای باند:
جاسوس افزار برای ارسال اطلاعات نیاز به برقراری ارتباط از طریق اینترنت دارد و باید از پهنای باند استفاده کند.
سختافزار رایانه
سختافزار رایانه مجموعهای از اجزای فیزیکی است که میتوان آنها را لمس کرد (مشاهده کرد) و یک رایانه را تشکیل میدهند مانند صفحه نمایش، صفحه کلید، حافظههای رایانه، دیسک سخت، ماوس، چاپگرها، سیپییو، کارت گرافیک، کارت صدا، حافظه، مادربورد و چیپها. در مقابل آن نرمافزار قابل لمس نیست. نرمافزار مجموعهای از ایدهها، مفاهیم و نمادها است. ترکیب سختافزار و نرمافزار یک سیستم محاسباتی قابل استفاده را تشکیل میدهند.
تعریف صنعتی
سختافزار بخش مادی، قابل لمس و ابزاری هر مجموعه یا سیستم است. سختافزار معمولاً به قطعات و یراقآلات فلزی و پلاستیکی تشکیل دهنده مجموعه گفته میشود. لازم به توضیح است که برق نیز جزو سختافزار حساب میشود.
تعریف رایانه
در دانش رایانه به مجموع مدارهای الکترونیکی، اجزای فیزیکی و مکانیکی قابل لمس و مشاهده در یک رایانه سختافزار میگوییم. همچنین به بخش غیرقابل لمس مانند سیستمعامل و برنامههای رایانهای، نرمافزار اطلاق میگردد.
فهرست سختافزارها
بُردِ مادر یا برد اصلی (مادربورد)
نمایشگر (مانیتور)
جعبه رایانه (کیس)
صفحهکلید (کیبورد)
موشواره (ماوس)
چاپگر (پرینتِر)
پویشگر (اسکنر)
واحد پردازش مرکزی (سیپییو یا پردازنده)
فلاپیدیسک
دیسک سخت
مودم
دیسکگردان نوری (درایو نوری) (CD و DVD)
بلندگو
یو اس بی
کارت صدا
کارت گرافیک
قلم نوری
هدفون (دوگوشی)
کارت تلویزیون و رادیو
دوربین (وبکم)
میکروفون
هدست
برنامه
برنامه رایانهای رشته دستورالعمل هایی است که توسط کامپیوتر قابل اجرا میباشد. این اصطلاح میتواند به کد اصلی یا نگارش اجرایی آن (زبان ماشین) نیز اطلاق گردد. برنامههای کامپیوتر میتوانند پایانپذیر یا پایان ناپذیر باشند. در برنامههای کامپیوتری هدف اجرای روالی خاص جهت رسیدن به مقصودی خاص می باشد.
انواع برنامههای رایانهای
برنامههای رایانهای از تنوع زیادی برخوردارند. از جمله میتوان به این موارد اشاره کرد:
سیستمعامل
برنامههای کاربردی
ویروسهای رایانهای
ویروس رایانهای
تعریف ویروس
ویروس، یک نوع از بدافزار است که در اغلب مواقع بدون اطلاع كاربر اجرا شده و تلاش میکند خودش را در یک کد اجرایی دیگر کپی کند. وقتی موفق به انجام این کار شد، کد جدید، آلوده نامیده میشود. کد آلوده وقتی اجرا شود، به نوبهی خود کد دیگری را میتواند آلوده کند. این عمل تولید مثل یا کپیسازی از خود بر روی یک کد اجرایی موجود، ویژگی کلیدی در تعریف یک ویروس است. معمولاً کاربران کامپیوتر به ویژه آنهایی که اطلاعات تخصصی کمتری درباره کامپیوتر دارند، ویروسها را برنامههایی هوشمند و خطرناک میدانند که خود به خود اجرا و تکثیر شده و اثرات تخریبی زیادی دارند که باعث از دست رفتن اطلاعات و گاه خراب شدن کامپیوتر میگردند در حالیکه طبق آمار تنها پنج درصد ویروسها دارای اثرات تخریبی بوده و بقیه صرفاً تکثیر میشوند. بنابراین یک ویروس رایانهای را میتوان برنامهای تعریف نمود که میتواند خودش را با استفاده از یک میزبان تکثیر نماید. بنابر این تعریف اگر برنامهای وجود داشته باشد که دارای اثرات تخریبی باشد ولی امکان تکثیر نداشته باشد، نمیتوان آنرا ویروس نامید. بنابراین ویروسهای رایانهای از جنس برنامههای معمولی هستند که توسط ویروسنویسان نوشته شده و سپس به طور ناگهانی توسط یک فایل اجرایی و یا جا گرفتن در ناحیه سیستمی دیسک، فایلها و یا کامپیوترهای دیگر را آلوده میکنند. در این حال پس از اجرای فایل آلوده به ویروس و یا دسترسی به یک دیسک آلوده توسط کاربر دوم، ویروس به صورت مخفی نسخهای از خودش را تولید کرده و به برنامههای دیگر میچسباند و به این ترتیب داستان زندگی ویروس آغاز میشود و هر یک از برنامهها و یا دیسکهای حاوی ویروس، پس از انتقال به کامپیوترهای دیگر باعث تکثیر نسخههایی از ویروس و آلوده شدن دیگر فایلها و دیسکها میشوند. لذا پس از اندک زمانی در کامپیوترهای موجود در یک کشور و یا حتی در سراسر دنیا منتشر میشوند. از آنجا که ویروسها به طور مخفیانه عمل میکنند، تا زمانی که کشف نشده و امکان پاکسازی آنها فراهم نگردیده باشد، برنامههای بسیاری را آلوده میکنند و از این رو یافتن سازنده و یا منشاء اصلی ویروس مشکل است.
تاریخچه
اولین تحقیق واقعی علمی و آکادمیک بر روی ویروسها توسط فرد کوهن در سال 1983، با نام ویروس که توسط لِن آدلمن ابداع شده بود، انجام شد. بعضاً از کوهن به عنوان «پدر ویروسهای کامپیوتری» نام برده میشود، اما واقعاً ویروسهایی بودند که قبل از شروع تحقیقات او تولید شده بودند. ویروس Elk Cloner نوشته شده توسط ریچ اسکرنتا در سال 1982 در گردش بود و ویروسهای تولید شده توسط جو دلینگر نیز بین سالهای 1981 تا 1983 ساخته شده بودند؛ که همهی آنها برای پلتفرمهای Apple II بودند. برخی منابع یک نقص فنی در Arpanet را در سال 1980 به عنوان اولین ویروس ذکر میکنند، اما آن فقط یک کد قانونی و مجاز بود که اشتباه کار میکرد و تنها مسألهای که ایجاد میکرد این بود که دادهها را در بستههای شبکه پخش میکرد. ویروسهای گریگوری بنفورد، تنها به به داستانهای علمیاش ختم نشد. او در سال 1969 ویروسهای غیر مخرب خود را در جایی که امروزه «آزمایشگاه ملی لیوِرمور لارنس» خوانده میشود و در Arpanet اولیه تولید و منتشر کرد.
میزبان ویروس
ویروس هم مانند هر برنامه کامپیوتری نیاز به محلی برای ذخیره خود دارد. ولی این محل باید به گونهای باشد که ویروسها را به وصول اهداف خود نزدیکتر کند. همان گونه که قبلاً ذکر شد اکثر ویروسها به طور انگلوار به فایلهای اجرایی میچسبند و آنها را آلوده میکنند. اصولاً میتوان فایلها را به دو گونه کلی «اجرایی» و «غیر اجرایی» تقسیم کرد که عموم ویروسها در فایلهای اجرایی جای گرفته و آنها را آلوده میکنند و واقعاً کمتر ویروسی یافت میشود که در یک فایل غیراجرایی قرار بگیرد و بتواند از طریق آن تکثیر شود.
لازم به ذکر است که بعضی از فایلها را شاید نتوان ذاتاً اجرایی نامید اما چون اینگونه فایلها میتوانند حاوی قسمتهایی اجرایی باشند، لذا آنها را از نوع اجرایی در نظر میگیریم. از این نوع فایلها میتوان به فایلهای اچتیامال و مستندات برنامههای اداره اشاره کرد که به ترتیب ممکن است شامل اسکریپت و ماکرو باشند. اسکریپتها و ماکروها قسمتهایی اجرایی هستند که در دل این فایلها قرار گرفته و کار خاصی را انجام میدهند.
در ذیل فهرست پسوندهای رایج فایلهای اجرایی ارائه شده است و اکثر نرمافزارهای ضد ویروس در حالت عادی (بدون تنظیمات خاص) این فایلها را ویروسیابی میکنند (البته در برخی برنامههای ضد ویروس ممکن است برخی پسوندها حذف یا اضافه شوند) :
.com ، .exe ، .dll ، .ovl ، .bin ، .sys ، .dot ، .doc ، .vbe ، .vbs ، .hta ، .htm ، .scr ، .ocx ، .hlp ، .eml
بنابراین یکی از اصلیترین میزبانهای ویروس، فایلهای اجرایی هستند. از طرف دیگر برخی ویروسها نیز از سکتور راهانداز (Boot Sector) و جدول بخشبندی دیسک (Master Boot Record یا Partition Table) به عنوان میزبان استفاده میکنند. سکتور راهانداز واحد راهاندازی سیستمعامل است که در سکتور شماره صفر دیسکت فلاپی و یا درایوهای منطقی یک دیسک سخت قرار دارد و جدول بخشبندی شامل اطلاعات تقسیمبندی دیسک سخت میباشد که آن نیز در سکتور شماره صفر دیسک سخت قرار دارد. اینگونه ویروسها با قرار گرفتن در یکی از این دو محل، هنگام راهاندازی کامپیوتر، اجرا شده و در حافظه سیستم مقیم میشوند و تا زمان خاموش کردن کامپیوتر و یا راهاندازی دوباره، همانجا مانده و فلاپیها و یا دیسکهای سخت دیگر را آلوده میکنند.
عملکرد ویروس
همانطور که گفته شد تنها پنج درصد از ویروسها دارای اثرات تخریبی هستند و بقیه صرفاً تکثیر میشوند. با توجه به این مطلب این پرسش مطرح است که چرا ویروسها به عنوان یک معضل شناخته میشوند و باید با آنها مبارزه کرد؟ پاسخ به این پرسش در موارد زیر خلاصه گردیده است:
۱ - بسیاری از ویروسها دارای اثراتی هستند که هرچند تخریبی نمیباشد ولی میتواند برای کاربر ایجاد مزاحمت کند. مثلاً ممکن است پیغامی نمایش دهد، باعث ریزش حروف صفحه نمایش به پایین شود یا اینکه یک آهنگ پخش نماید. علاوه بر این برخی از ویروسها به علت اشکالات نرمافزاری که ناشی از عدم دقت ویروسنویس میباشد، ممکن است دارای اثراتی غیرقابل پیشبینی باشند که گاهی این اثرات میتوانند تخریبی نیز باشند. از نقطه نظر کاربر اهمیتی ندارد که خسارت ایجاد شده بوسیله یک ویروس، یک کار عمدی پیشبینی شده توسط نویسنده ویروس بوده باشد یا یک اشتباه برنامهنویسی.
۲ - برخی از ویروسها در حافظه کامپیوتر مقیم شده و از این طریق عملیات تکثیر خود را انجام میدهند. این عمل ممکن است به گونهای باشد که جایی برای اجرای برنامههای دیگر نماند و یا باعث ایجاد تأخیر یا وقفه در حین عملیات سیستم اعم از اجرای برنامهها و یا راهاندازی کامپیوتر گردد.
۳ - فرض کنید که شما یک ویروس بر روی کامپیوتر خود داشته باشید. بسیار احتمال دارد که این ویروس به صورت غیرعمدی به یک دوست، همکار یا مشتری منتقل شود که این امر ممکن است باعث از بین رفتن اعتماد آنها به شما و شرکت شما شود.
۴ - ویروسها و برنامههای مخرب زیادی وجود دارند که اقدام به سرقت اطلاعات و کلمات عبور کاربر مینمایند. بعضی از اینگونه برنامهها با مقیم شدن در حافظه از عباراتی که توسط شما تایپ میشود گزارش گرفته و پس از اتصال رایانه شما به اینترنت این اطلاعات را برای مقصد خاصی ارسال میکنند. گیرنده این اطلاعات میتواند به راحتی از آنها سوء استفادههای مختلفی نماید.
علاوه بر همه اینها هیچ ویروسی کاملاً بیضرر نیست و در خوشبینانهترین حالت، آنها وقت شما، وقت پردازنده و فضای دیسک شما را تلف میکنند.
در مورد اثرات تخریبی ویروسهایی که آنها را به صورت عمدی انجام میدهند میتوان به موارد زیر اشاره نمود:
تخریب یا حذف برنامهها و اطلاعات بخشهای مختلف دیسکها.
فرمت کردن دیسکها.
کد کردن اطلاعات و برنامهها.
تخریب اطلاعات حافظه فلش ها.
مزاحمتهای فوق ممکن است به محض فعال شدن ویروس (یعنی قرار گرفتن ویروس در حافظه از طریق اجرای یک برنامه آلوده) و یا در یک تاریخ و زمان خاص و یا حتی با اجرای یک برنامه کاربردی خاص انجام شود.
انواع ویروسها
ارائه یک تقسیمبندی دقیق از ویروسها کار مشکلی است و میتوان ویروسها را به روشهای مختلفی تقسیمبندی کرد. این روشها میتواند بر اساس میزبان ویروس، سیستمعاملی که ویروس میتواند در آن فعالیت کند، روش آلودهسازی فایل و ... باشد. در زیر به برخی از این روشها اشاره میکنیم :
تقسیم بندی ویروسها بر اساس مقصد آلودهسازی:
۱ - ویروسهای فایلی (File Viruses) : ویروسهای فایلی، معمولاً فایلهای اجرایی را آلوده میکنند. فایلهای آلوده به این نوع از ویروسها اغلب (اما نه همیشه) دارای پسوند .com یا .exe هستند.
۲ - ویروسهای ماکرو (Macro Viruses) : ویروسهای ماکرو، مستندات برنامههایی را که از امکان ماکرونویسی پشتیبانی مینمایند (مانند MS Word ، MS Excel و...) آلوده میکنند. فایلهای اینگونه برنامهها اجرایی نیستند ولی درون آنها قسمتهایی اجرایی به نام «ماکرو» وجود دارد که میتواند میزبان مناسبی برای ویروسهای ماکرو باشد.
۳ - ویروسهای بوت و پارتیشن سکتوری (Boot Sector and Partition Table Viruses) : اینگونه ویروسها سکتور راهانداز (Boot Sector) دیسک سخت و دیسکت فلاپی یا جدول بخشبندی دیسکهای سخت را آلوده میکنند. با راهاندازی سیستم از روی دیسکی که به اینگونه ویروسها آلوده شده است، ویروس در حافظه مقیم شده و متعاقباً دیسکهایی را که مورد دسترسی قرار گیرند، آلوده میکند.
۴ - ویروسهای اسکریپتی (Script Viruses) : این ویروسها که اسکریپتهای نوشته شده به زبانهای ویژوال بیسیک یا جاوا میباشند، تنها در کامپیوترهایی اجرا میشوند که بر روی آنها Internet Explorer یا هر مرورگر وب دیگری با توانایی اجرای اسکریپتها، نصب شده باشد و فایلهای با پسوند .html ، .htm ، .vbs ، .js ، .htt یا .asp را آلوده میکنند.
ویروسها جدا از تقسیمبندی فوق، ممکن است در یک یا چند دسته از دستههای زیر نیز قرار بگیرند:
ویروسهای مقیم در حافظه (Memory Resident Viruses) :
اینگونه ویروسها با مقیم شدن در حافظه، هنگام دسترسی به فایلهای دیگر، آنها را آلوده میکنند.
ویروسهای مخفیکار (Stealth Viruses) :
اینگونه ویروسها به روشهای مختلف ردپای خویش را مخفی میکنند. به این معنی که فایلهای آلوده به اینگونه ویروسها به گونهای نشان داده میشود که یک فایل غیرآلوده جلوه کند. به عنوان مثال عموم ویروسها پس از آلوده کردن یک فایل، اندازه آن را افزایش میدهند و یا گاهی تاریخ و زمان ضبط فایل را عوض میکنند. اما ویروسهای مخفیکار میتوانند با روشهای خاص و بدون تغییر وضعیت ظاهری، عملیات خویش را انجام دهند.
ویروسهای کدشده (Encrypting Viruses) :
این ویروسها پس از هر بار آلودهسازی، با استفاده از شیوههای خود رمزی شکل ظاهری خود را تغییر میدهند.
ویروسهای چندشکلی (Polymorphic Viruses) :
اینگونه ویروسها با استفاده از الگوریتمهای خاص، علاوه بر تغییر شکل ظاهری خود، ساختار خود را نیز تغییر میدهند به طوریکه ممکن است جای دستورالعملها و حتی خود دستورالعملها نیز تغییر کنند.
ویروسهای فعالشونده بر اساس رویداد خاص(Triggered Event Viruses) :
ویروسهایی هستند که بخشی از عملیات تخریب خود را در ساعت و یا در تاریخ خاص انجام میدهند. البته باید توجه داشت که تکثیر و آلودهسازی فایلها در تمام اوقات فعال بودن ویروس انجام میشود.
نشانههای وجود ویروس
معمولاً سیستمی که به ویروس آلوده میگردد نشانههایی را از خود بروز میدهد که با دقت در آنها میتوان به ویروسی بودن احتمالی سیستم پی برد. بعضی از این نشانهها در زیر آمده است. اما باید دقت داشت که این نشانهها ممکن است در اثر عوامل غیرویروسی نیز ظاهر گردد. اما اگر کامپیوتر بطور عادی کار میکرده و ناگهان و بدون هیچگونه دستکاری، این علایم را از خود بروز میدهد، احتمال وجود ویروس بیشتر است:
۱ - سیستم در هنگام راهاندازی قفل میکند و احتمالاً پیغامهای غیرمعمول روی صفحه ظاهر میگردد.
۲ - هنگام اجرای برنامهها پیغام کمبود حافظه ظاهر شده و برنامه اجرا نمیگردد.
۳ - در کارچاپگر اختلال ایجاد میشود یا بدون هیچگونه فرمان چاپی شروع به کار میکند.
۴ - امکان دسترسی به برخی از درایوها وجود ندارد.
۵ - هنگام اجرای فایلها، پیغام File is Damaged یا File is Corrupted نمایش داده میشود.
۶ - هنگام اجرای یک فایل، کاراکترها و یا پیغامهای غیرعادی روی صفحه نمایش ظاهر میگردد.
۷ - هنگام کار در محیطهای گرافیکی، تصاویر به هم میریزد.
۸ - اصوات غیرمعمول یا موزیک از بلندگوهای کامپیوتر پخش میشود.
۹ - سیستم هنگام اجرای یک برنامه قفل کرده و حتی گاهی فشردن کلیدهای Ctrl+Alt+Del نیز نمیتواند سیستم را دوباره راهاندازی کند.
۱۰ - اطلاعات بخشی از دیسک سخت و یا تمام آن بطور ناگهانی از بین میرود یا دیسک سخت ناخواسته فرمت میشود.
۱۱ - اندازه فایلهای اجرایی افزایش مییابد.
۱۲ - خواص فایلهای اجرایی تغییر میکند.
۱۳ - سرعت سیستم بطور نامحسوسی کاهش مییابد.
۱۴ - اطلاعات Setup کامپیوتر از بین میرود.
۱۵ - برنامهها مراجعاتی به دیسکت انجام میدهند که قبلاً انجام نمیدادند.
۱۶ - کاهش فضای خالی دیسک بدون اینکه فایلی اضافه شده و یا به محتوای فایلها افزوده شده باشد.
۱۷ - نرمافزارهای مقیم در حافظه با خطا اجرا شده یا اصلاً اجرا نمیشوند.
۱۸ - بعضی برنامهها سعی در برقراری ارتباط با اینترنت را دارند.
۱۹ - هنگام کار با اینترنت مقدار ارسال و دریافت اطلاعات ناخواسته افزایش یافته و سرعت به شدت افت میکند.
۲۰ - نامههای الکترونیکی ناخواسته از روی سیستم ارسال شده و یا دریافت میگردد.
مهندسان نرمافزار طرفدار تکنولوژیها و روشهای عملی بسیار متفاوت و مختلفی هستند، که با هم ناسازگار هستند. این بحث در سالهای دهه ۶۰ میلادی شروع شد و ممکن است برای همیشه ادامه پیدا کند. مهندسان نرمافزار از تکنولوژیها و روشهای عملی بسیار متنوعی استفاده میکنند.
کسانی که کار عملی میکنند از تکنولوژیهای متنوعی استفاده میکنند: کامپایلرها، منابع کد، پردازشگرهای متن. کسانی که کار عملی میکنند از روشهای عملی بسیار متنوعی استفاده میکنند تا تلاشهایشان را اجرا و هماهنگ کنند: برنامهنویسی در دستههای دونفری، بازبینی کد، و جلسات روزانه. هدف هر مهندس نرمافزار بایستی رسیدن به ایدههای جدید خارج از الگوهای طراحی شده قبلی باشد، که باید شفاف بوده و بهخوبی مستند شده باشد.
با وجود رشد فزاینده اقتصادی و قابلیت تولید فزایندهای که توسط نرمافزار ایجاد شده، هنوز هم بحث و جدلهای ماندگار درباره کیفیت نرمافزار ادامه دارند.
ماهیت مهندسی نرمافزار
دیوید پارناس گفتهاست که مهندسی نرمافزار یک شکل از مهندسی است. استیو مککانل گفتهاست که هنوز اینطور نیست، ولی مهندسی نرمافزار باید یک شکل از مهندسی شود. دونالد کنوت گفتهاست که برنامهنویسی یک هنر است.
دیوان فعالیتهای آماری آمریکا مهندسان نرمافزار را به عنوان زیرگروهی از «متخصصان رایانه»، با فرصتهای شغلیای مانند «دانشمند رایانه»، «برنامه نویس» و «مدیر شبکه» دسته بندی کردهاست. BLS تمام مهندسان دیگر این شاخه علمی، که شامل مهندسان سختافزار رایانه نیز هست، را بهعنوان «مهندسان» دسته بندی میکند.
نرمافزار سیستم
نرمافزار سیستم به نرمافزاری در رایانه گفته میشود که به کارکرد سیستم رایانه یا کاربردهای سطح پایین (یا Low Level) رایانه مربوط باشد. این نرمافزارها به ساختار فیزیکی سختافزار رایانه وابسته هستند و در نوشتن آنها از زبانهای سطح پائین مانند زبان اسمبلی استفاده میشود. سیستمعامل و درایورها از نرمافزارهای سیستم هستند. از جمله زبان هایی که برای نگارش نرمافزارهای سیستمی استفاده میشود، زبان برنامه نویسی C میباشد. کار کردن با سی برای برنامه نویسان راحت تر است و آنان این زبان را به اسمبلی ترجیح میدهند. اگر برای نگارش نرمافزار سیستمی مشکل محدودیت فضای سختافزاری داشته باشیم بهتر است با زبان اسمبلی کار کنیم که حجم آن پایین تر است. نرمافزارهای سیستمی به سختافزار وابسته اند.
در برابر نرمافزار سیستم، نرمافزار کاربردی قرار دارد که برای کاربردهای سطح بالا و غیرسیستمی رایانه است و معمولاً به زبانهای سطح بالا نوشته میشود که از جزئیات سختافزاری سیستم مستقل است.
نرمافزار کاربردی
نرمافزار کاربردی (به انگلیسی: Application software) عبارت است از نرمافزاری که با استفادهٔ مستقیم از منابع و قابلیتهای رایانه کاری را مستقیماً برای کاربر انجام میدهد. باید توجه داشت که این عبارت در مقابل عبارت نرمافزار سیستمی معنی پیدا میکند.
نرمافزار سیستمی در مقابل در پسزمینه عمل میکند و خدماتی را فراهم میکند که دیگر نرمافزارها و یا سیستمعامل میتوانند برای انجام کارهای خود از آن استفاده کنند. اما در عوض معمولاً مستقیماً با کاربر عادی در تماس نیست و خدماتی را به او ارایه نمیدهد.
در عمل بیشتر نرمافزارهایی که کاربران با آنها سر و کار دارند از این دسته محسوب میشوند. برای مثال میتوان به نرمافزارهای رومیزی یعنی واژهپردازها، صفحه گستردهها، نرمافزارهای طراحی گرافیکی، بازیهای رایانهای و امثال آنها اشاره کرد.
بسیاری نرمافزارهای کاربردی، برای توسعهدهندگان ابزار رابط برنامهنویسی کاربردی هم فراهم میکنند تا بتوان از قابلیتهای نرمافزار در نرمافزارهای جدید استفاده کرد. برای مثال نرمافزار ادوبی آکروبات هنگام نصب ایپیآی فراهم میکند که برنامهنویس میتواند با استفاده از آن تواناییهای آکروبات را در برنامهٔ خود به کار گیرد.
برای عنوان نمونههای دیگر میتوان به نرمافزارهای پردازش متن، برگههای گسترده (صفحات گسترده) و نرمافزارهای پخش نوا و نما اشاره کرد.
نرمافزار آزاد
نرمافزار آزاد (به انگلیسی: Free software) نرمافزاری است که بههمراه کد منبع توزیع شده و با قوانینی منتشر میشود که آزادی استفاده، مطالعه، ویرایش و انتشار مجددِ کاربران را تضمین میکند. نرمافزارهای آزاد معمولاً با همکاری برنامهنویسهای داوطلب بهعنوان یک پروژه بهوجود میآیند.
نرمافزارهای آزاد با نرمافزارهای مالکیتی (مانند مایکروسافت ویندوز) که آزادی کاربر در استفاده، مطالعه، ویرایش یا انتشار مجدد را در درجههای مختلف محدود میکنند، متفاوت است. این محدودیتها با در نظر گرفتن مجازاتهایی قانونی برای کاربرانی که قوانین آنها را نقض میکنند، بهوجود میآیند. نرمافزارهای مالکیتی عموماً به صورت بستههای اجراپذیر باینری و بدون دسترسی به کد منبع فروخته میشوند که جلوی ویرایش و وصلهکردن نرمافزار توسط کاربر را میگیرد و او را برای بهروزرسانی و پشتیبانی به شرکت نرمافزاری تولید کننده وابسته میکنند. نرمافزارهای آزاد از نرمافزاریهای رایگان که برای استفاده، از کاربر پولی دریافت نمیکنند، نیز متفاوتاند. این نوع نرمافزارها نیز معمولاً تمامی حقوق نرمافزار را برای تولیدکنندهٔ آن محفوظ داشته و جلوی مهندسی معکوس، ویرایش و یا توزیع مجدد توسط کاربر را میگیرند. بنابراین موضوع اصلی نرمافزار آزاد، موضوع آزادی است و نه قیمت آن: کاربران آزادند که هر چه میخواهند با نرمافزار انجام دهند. این آزادی شامل انتشار مجدد نرمافزار بهصورت رایگان و یا با سود نیز میشود. یعنی نرمافزار آزاد میتواند به صورت رایگان و یا در ازای دریافت مبلغی پول در اختیار کاربر قرار بگیرد.
ریچارد استالمن در سال ۱۹۸۵ در زمانی که در حال آغاز پروژهٔ گنو و بهوجود آوردن بنیاد نرمافزارهای آزاد بود، برای اولین بار از عبارت «نرمافزار آزاد» استفاده کرد. براساس تعریف بنیاد نرمافزارهای آزاد کاربران یک نرمافزارِ آزاد، آزاد هستند؛ چون به اجازه گرفتن نیازی ندارند؛ آنها در انجام کارهای دلخواهشان (مانند حق نشر و کپیبرداری) محدود نیستند؛ نیازی به موافقت با هیچ توافقنامهای ندارند؛ و در همان ابتدا نیز با نداشتن کد منبع محدود نبودهاند.
تعریف
طبق تعریف نرمافزار آزاد توسط بنیاد نرمافزارهای آزاد، هر نرمافزاری که آزادیهای زیر را برای کاربرانش فراهم کند به عنوان یک نرمافزار آزاد شناخته میشود:
کاربران باید اجازه داشته باشند که نرمافزار مورد نظر را برای هر قصد و منظوری اجرا کنند.
کاربران باید اجازه داشته باشند کدهای منبع نرمافزار را مطالعه کرده و آن را مطابق با نیازهای خود تغییر دهند. برای رسیدن به این هدف، کدهای منبع نرمافزار باید در اختیار کاربر قرار گیرد.
کاربران باید اجازه داشته باشند نرمافزار را مجدداً منشتر کرده و در اختیار دیگران قرار دهند. این کار میتواند به صورت رایگان و یا در ازای دریافت مبلغی پول صورت گیرد.
اگر کاربری نرمافزار را تغییر داد، باید اجازه داشته باشد آن را مجدداً منتشر کرده و در اختیار دیگران قرار دهد. برای تغییر دادن نرمافزار، لازم است تا کدهای منبع نرمافزار در اختیار کاربر قرار گیرد.
همچنین موسسه پیشگامان متنباز هم تعریف مشابهی از نرمافزار آزاد ارائه میدهد. طبق تعریف این موسسه، نرمافزار بازمتن تنها به معنی در دسترس ساختن کدمنبع نیست. علاوه بر آن مجوز باید ویژگیهای زیر را هم داشته باشد:
نرمافزار باید قابل توزیع مجدد باشد (چه به صورت رایگان، چه در ازای دریافت مبلغی پول)
نرمافزار باید شامل کد منبع باشد و این کد منبع را باید بتوان تغییر داد و مجدداً منتشر کرد.
مجوز نباید در برابر افراد یا گروه خاصی تبعیض قائل شود.
مجوز نباید کاربر را برای رسیدن به یک هدف خاص محدود کند.
مجوز نباید مختص به یک محصول خاص باشد.
مجوز نباید نرمافزارهای دیگری که به همراه نرمافزار مورد نظر عرضه شدهاند را محدود کرده و تحت تاثیر قرار دهد. برای مثال اگر چند نرمافزار بر روی یک دیسک منتشر شدند، مجوز نباید اصراری بر روی متنبازبودن آنها داشته باشد.
مجوز نباید تکنولوژی خاصی را محدود کند.
تاریخچه
در اوایل، نرمافزارها به صورت آزاد منتشر میشدند و برنامهنویسان و شرکتها آنها را به صورت آزادانه در اختیار یکدیگر قرار میداند. در اوایل، تجارت رایانه بیشتر مبتنی بر سختافزار بود و شرکتها درامد خود را بیشتر از راه تولید سختافزار کسب میکردند و هر شرکت، سختافزاری ناسازگار با دیگر شرکتها تولید میکرد. مشتریان، که بیشتر مهندسان و دانشمندان بودند، تشویق میشدند که نرمافزارهای ارائه شده توسط سختافزار را بهبود بخشیده و حتی آن را در اختیار دیگران هم قرار دهند. از آنجا که در آن زمانها سختافزارهای تولید شده توسط شرکتهای مختلف با یکدیگر ناسازگار بود و سختافزار استانداردی وجود نداشت، و همینطور از آنجا که در آن زمان مفسرها و کامپایلرها هنوز جا نیفتاده بودند (که این برنامهها برنامهها را قابل حملتر میکنند)، شانس کمی وجود داشت که نرمافزار مورد نظر بر روی سختافزار شرکت رقیب هم به خوبی اجرا شود.
رفتهرفته که صنعت رایانه پیشرفت کرد و سختافزارها بیشتر استاندارد شدند و همینطور کامپایلرها و مفسرها پیشرفت کردند، زمینه برای رشد نرمافزارهای انحصاری فراهم شد. با چنین پیشرفتهایی، برنامهها راحتتر از سختافزار یک شرکت به سختافزار شرکت رقیب پورت میشدند و راحت میشد یک نرمافزار را بر روی سختافزارهای مختلفی از شرکتهای مختلف اجرا کرد. بدین ترتیب یک نفر میتوانست نرمافزاری بنویسد که مستقل از سختافزار خاصی عمل کند و بر روی طیف وسیعی از آنها اجرا شود. علاوه بر آن، با استاندارد شدن سختافزارها، تفاوتهای ناچیزی که آنها در کارایی داشتند رفته رفته ناپدید شد. تولید کنندگان به این نتیجه رسیده بودند که باید به نرمافزار هم به چشم یک وسیله فروشی نگاه کنند. شرکتها شروع به فروش نرمافزارهای خود کردند و دست کاربران خود را برای تغییر در نرمافزارها و انتشار مجدد آنها بستند. به گونه ای که در سال ۱۹۶۸ شرکتی به نام ایدیآر (به انگلیسی: ADR) اولین نرمافزار دارای مجوز را عرضه کرد. در سال ۱۹۶۹، شرکت آیبیام به خاطر اینکه به همراه سختافزارهای خود، نرمافزارهای آزاد ارائه میکرد، توسط وزارت دادگستری ایالات متحده آمریکا به از بین بردن کسب و کار و ایجاد یک شرایط ضدرقابتی برای دیگر متهم شد. آیبیام دیگر به همراه سختافزارهای خود نرمافزار ارائه نکرد و بدین ترتیب نرمافزارها و سختافزارها از یکدیگر جدا شدند و فاصله گرفتند.
در سال ۱۹۸۳، ریچارد استالمن از آزمایشگاه هوش مصنوعی و علوم رایانه امآیتی، پروژه گنو را بنیان نهاد. او که از تغییر فرهنگ در صنعت رایانه و کاربرانش ناامید شده بود، قصد داشت سیستمعاملی به نام گنو را به صورت یک نرمافزار آزاد توسعه دهد. در ژانویه ۱۹۸۴ توسعه سیستمعامل گنو آغاز گشت و بنیاد نرمافزارهای آزاد در اکتبر ۱۹۸۵ بنیان نهاده شد. در سال ۱۹۸۹، اولین نسخه از اجازهنامه همگانی گنو منشتر شد. البته جیپیال اولین پروانه نرمافزار آزاد نبود و قبل از آن پروانههای نرمافزار آزاد دیگری مانند پروانه بیاسدی در سال ۱۹۸۸ عرضه شده بودند. تا کنون پروانههای نرمافزار آزاد زیادی توسط افراد و شرکتهای مختلف منتشر شده است که آز این میان میتوان به پروانه امآیتی، پروانه آپاچی، پروانه آیاسسی، پروانه همگانی موزیلا و ... اشاره کرد.
در سال ۱۹۹۷، اریک ریموند مقالهای با نام کلیسای جامع و بازار را منتشر کرد و در آن به بررسی اصول نرمافزارهای آزاد و مزایای آنها پرداخت. این مقاله به شدت مورد توجه قرار گرفت و یکی از دلایلی بود که شرکت ارتباطات نتاسکیپ، کد منبع مرورگر اینترنتی خود را به صورت نرمافزار آزاد منتشر کرد. این کار باعث شد تا شرکتهای دیگری هم به نرمافزارهای آزاد توجه نشان دهند. کدهای منبع نتاسکیپ، بعدها اساس توسعه مرورگر فایرفاکس و برنامه تاندربیرد قرار گرفت.
مسئله نامگذاری
در زبان انگلیسی، کلمه Free معانی متفاوتی همچون آزادی، رایگان بودن و ... دارد. عدهای بر این عقیده بودند که ممکن است این کلمه باعث کژفهمی شده و باعث شود مردم به نرمافزارهای آزاد، به چشم نرمافزارهای رایگان نگاه کنند. این در حالی است که یک نرمافزار آزاد، لزوماً رایگان نیست. آنها در سال ۱۹۹۸ کمپین دیگری به نام «نرمافزارهای متنباز» (به انگلیسی: Open Source) را تشکیل دادند تا با تاکید بیشتر بر روی مدل توسعه و مسائل تکنیکی، به جای مسائل فلسفی و اخلاقی، مردم و شرکتها را هر چه بیشتر به استفاده از نرمافزار آزاد تشویق کنند. تقریباً هر دو مفهوم، اشاره به یک چیز دارند و یک نرمافزار متنباز، نرمافزار آزاد هم هست (و برعکس)، اما طرفداران ایده نرمافزارهای متنباز، آن را روشی برای توسعه نرمافزارهای بهتر معرفی میکنند و تاکید کمتری بر جنبش اجتماعی و فلسفه پشت این گونه نرمافزارها دارند. طبق گفته موسسه پیشگامان متنباز (که توسط طرفداران ایده نرمافزار متنباز بوجود آمده)، عبارت «نرمافزار آزاد» واژه ای قدیمیتر است و به گونهای منعکس کننده نام بنیاد نرمافزارهای آزاد است، سازمانی که در سال ۱۹۸۵ برای محافظت و ترویج نرمافزارهای آزاد بوجود آمد؛ با اینکه بنیانگذاران ایده متنباز هم از توسعه و ترویج نرمافزارهای آزاد حمایت میکنند، اما در مورد چگونگی ترویج آنها با بنیاد نرمافزارهای آزاد موافق نیستند و اعتقاد دارند که آزادی نرمافزار در درجه اول یک امر عملی است تا ایدئولوژیکی.
پروانههای نرمافزار آزاد
نرمافزارهای آزاد به همراه اجازهنامهای عرضه میشوند که این اجازهنامه آزادیهای نام برده شده را برای کاربران تضمین میکند. از جمله پروانههای نرمافزار آزاد میتوان به پروانه نرمافزار جیپیال، بیاسدی، پروانه امآیتی، پروانه آیاسسی و ... نام برد. این اجازه نامهها تفاوتهایی با یکدیگر دارند و هر کدام توسط افراد و شرکتهای خاصی برای اهداف خاصی منتشر شدهاند. یک دستهبندی کلی برای پروانههای نرمافزار آزاد این است که آیا آنها به صورت کپیلفت هستند یا نه. پروانههایی که کپیلفت هستند، مانند پروانه جیپیال، تاکید دارند که نسخههای مشتق شده از نرمافزار هم باید به صورت نرمافزار آزاد منتشر شوند. مجوزهای غیر کپیلفت تاکیدی بر روی این مساله ندارند و نسخههای مشتق شده از این گونه نرمافزارها را میتوان آزادانه به هر شکل دلخواهی، چه به صورت نرمافزار آزاد و چه به صورت نرمافزار انحصاری منتشر کرد. چنین مجوزهایی را اصطلاحاً «سهلگیرانه» (به انگلیسی: permissive) مینامند. از جمله رایجترین پروانههای کپیلفت، پروانه جیپیال و از جمله رایجترین پروانههای غیر کپیلفت، پروانه بیاسدی و پروانه امآیتی است. امروزه هر دو دسته از این پروانهها به صورت گسترده توسط پروژههای مختلف مورد استفاده قرار میگیرند. برای مثال، هسته لینوکس از پروانه جیپیال و پروژه فریبیاسدی از پروانه بیاسدی استفاده میکنند.
مسئله دیگر در مقایسه پروانههای نرمافزار آزاد، مسئله پیوند دادن کتابخانهها در دیگر نرمافزارهایی است که از یک پروانه غیرمشابه با پروانه کتابخانه استفاده میکنند. برخی از پروانههای نرمافزار آزاد، اجازه نمیدهند که کتابخانههای اشتراکی، توسط نرمافزارهایی که از یک پروانه غیر مشابه استفاده میکنند، پیوند زده شوند و مورد استفاده قرار گیرند. برای مثال، اگر کتابخانهای تحت پروانه جیپیال منتشر شده باشد، تنها نرمافزارهایی که تحت پروانه جیپیال منتشر شدهاند میتوانند به این کتابخانه پیوند داده شوند و از آن استفاده کنند. این کار مانع میشود تا نرمافزارهای انحصاری و یا حتی دیگر نرمافزارهای آزاد از یک کتابخانه با مجوز جیپیال استفاده کنند. بنیاد نرمافزارهای آزاد برای رفع این محدودیت جیپیال، پروانه الجیپیال را منتشر کرده است.
مدل تجاری
نرمافزارهای آزاد را میتوان مستقیماً به فروش رساند و به این ترتیب از فروش آنها کسب درامد کرد. اما این مسئله نباید آزادی های بالا را محدود کند. کاربر پس از خرید یک نرمافزار آزاد، میتواند آن را برای هر منظوری استفاده کرده، تغییر داده، و مجدداً منتشر کند (چه به صورت رایگان و چه به صورت تجاری). علاوه بر فروش مستقیم نرمافزار، میتوان با ارائه خدمات و پشتیبانی از نرمافزارهای آزاد، کسب درامد کرد. مثلاً یک شرکت میتواند با اضافه کردن یک قابلیت جدید به یک نرمافزار آزاد یا در قبال برطرف کردن یک ایراد امنیتی، مبلغی پول از مشتریانش دریافت کند. یا همچنین یک شرکت میتواند نحوه استفاده از یک برنامه را به کارمندان و کاربران یک شرکت دیگر آموزش دهد و در قبال آن دستمزد دریافت کند. برخی از پروانههای سهلگیر نرمافزار آزاد، به کاربران اجازه میدهند تا نرمافزار را بدون در اختیار قرار دادن کدهای منبع توزیع کنند. بدین ترتیب دست کاربران تجاری بیشتر باز خواهد بود. برخی از شرکتها، نرمافزارهای خود را با دو مجوز مختلف، هم به صورت آزاد و هم به صورت غیرآزاد عرضه میکنند.
برخی از توسعهدهندگان مستقل نرمافزار آزاد، کمکهای مالی از طرف افراد داوطلب قبول میکنند. به عنوان مثال، سورسفورج امکاناتی دارد که یک کاربر داوطلب میتواند مبلغی پول را به یک پروژه نرمافزار آزاد اهدا کند.
مثالهایی از نرمافزارهای آزاد کاربردی
هستهٔ سیستمعامل گنو/لینوکس، داروین.
تعدادی از سیستمعاملهای خانواده بیاسدی مانند فریبیاسدی, اپنبیاسدی, نتبیاسدی, دراگونفلیبیاسدی.
کامپایلر جیسیسی، کتابخانهٔ زبان برنامهنویسی سی
کامپایلر کلنگ
پایگاهدادههای رابطهای مانند: mysql، پستگر اسکیوال، برکلی دیبی
زبانهای برنامهنویسی مانند تیسیال، روبی، پایتون، پرل و پیاچپی.
مرورگر وب فایرفاکس (Firefox)
اُپن آفیس (Open Office)
میزکار کیدیای (KDE)
میز کار الاکسدیئی (LXDE)
میزکار اکسافسیئی (XFCE)
میزکار گنوم (Gnome)
برنامههای حروف چینی مانند تک، لاتک و فارسی تک
نرمافزارهای مدیریت محتوا مانند جوملا (!Joomla)، پیاچپی-نیوک (PHP-Nuke)، پست نیوک (postnuke) و مامبو (mambo) ,وردپرس (wordpress), دروپال (drupal) , ....
نرمافزارهای ساخت انجمن (Forum) مانند پیاچپیبیبی (phpbb)، اساماف (smf)، یاب (YaBB) و فروم (phorum)
ویرایشگرهای متن ویم و ایمکس
مجموعه اداری لیبرهآفیس
بدافزار
بدافزار (به انگلیسی: Malware)، برنامههای رایانهای هستند؛ به علت آنکه معمولاً کاربر را آزار میدهند یا خسارتی بوجود میآورند، به این نام مشهورند. برخی از آنان فقط کاربر را میآزارند. مثلاً وی را مجبور به انجام کاری تکراری میکنند. اما برخی دیگر سیستم رایانهای و دادههای آن را هدف قرار میدهند که ممکن است خساراتی به بار آورند. در عین حال ممکن است هدف آن سختافزار سیستم کاربر باشد.
یک نرمافزار برپایهٔ نیت سازنده آن به عنوان یک بدافزار شناخته میشود. در قانون گاه بدافزار را به عنوان یک آلودگی رایانهای مینامند. دستاوردهای مقدماتی که توسط سیمنتک در سال ۲۰۰۸ منتشر شد، بیان میکند که میزان کدهای آزاردهنده و دیگر برنامههای ناخواسته از شمار نرمافزارهای قانونی، ممکن است افزون باشد. همچنین گفته شدهاست: «که تعداد بدافزارهای تولید شده در سال ۲۰۰۷ به اندازه مجموع ۲۰ سال قبل بودهاست.» مهمترین پل ارتباطی بدافزارها از تولیدکنندگان آنها به کاربران از طریق اینترنت است.
در ۲۹ مارس سال ۲۰۱۰ شرکت سیمنتک شهر شائوژینگ چین را به عنوان پایتخت بدافزار در دنیا معرفی کرد.
مایکروسافت در می ۲۰۱۱ گزارش داد که از هر ۱۴ دانلود در اینترنت یکی شامل بدافزار است. به ویژه شبکههای اجتماعی و فیس بوک در حال مشاهده افزایش تاکتیکهای جدید برای ضربه زدن به رایانهها هستند.
بدافزار با یک نرمافزار معیوب یعنی نرمافزاری قانونی ولی شامل اشکالات مضر، تفاوت دارد. گاه بدافزار به صورت یک نرمافزار سالم و صحیح طراحی میشود و حتی ممکن است از یک سایت رسمی بیاید. بنابراین برخی از برنامههای امنیتی مانند مکافی ممکن است بدافزار را یک برنامهٔ «به طور بالقوه ناخواسته (به انگلیسی: Potentially Unwanted Programs)» بنامد. اگرچه یک ویروس رایانهای نیز بدافزاری است که خود را باز تولید میکند، اما غلب به اشتباه به همهٔ بدافزارها ویروس اطلاق میشود.
از انواع بدافزارها میتوان به ویروسها، کرمها، اسبهای تروآ، جاسوسافزارها، آگهیافزارها، روتکیتها و هرزنامهها اشاره کرد.
مقاصد
بسیاری از برنامههای آلوده کنندهٔ اولیه، از جمله اولین کرم اینترنتی و تعدادی از ویروسهای سیستم عامل داس (به انگلیسی: DOS)، به قصد آزمایش یا سرگرمی نوشته شدند. آنها عموماً به مقاصد بیضرر یا فقط به قصد آزار بودند، تا اینکه بخواهند خسارات جدی به سیستمهای رایانه وارد کنند. در برخی موارد سازنده نمیتوانست تشخیص دهد که چقدر کارش میتواند مضر باشد.
برنامهنویسان جوان وقتی دربارهٔ ویروسها و ترفندهایش میآموختند، تنها به منظور تمرین یا به این قصد که ببینند چقدر شیوع پیدا میکند، آنها را مینوشتند. در سال ۱۹۹۹ ویروسهای شایعی مانند ویروس ملیسا (به انگلیسی: Melissa) و ویروس دیوید (به انگلیسی: David) تنها به قصد سرگرمی نوشته شده بودند. اولین ویروس تلفن همراه در سال ۲۰۰۴ با نام ویروس کابیر (به انگلیسی: Cabir) بر روی تلفنهای همراه منتشر شد.
با این حال مقاصد سوء به منظور خرابکاری را میتوان در برنامههایی یافت که برای ایجاد آسیب به سیستم رایانهای و یا از دست رفتن اطلاعات، طراحی شدهاند. بسیاری از ویروسهای سیستم عامل داس، با این هدف طراحی شدند تا فایلهای موجود در یک دیسک سخت را نابود کنند یا فایلهای سیستمی را با نوشتن اطلاعات نادرست بر روی آنها دچار اختلال کنند.
از زمان گسترش دسترسی به اینترنت پر سرعت، بدافزارهایی به منظور ایجاد سود طراحی شدهاند. به عنوان مثال از سال ۲۰۰۳، اغلب ویروسها و کرمهای رایانهای، طراحی شدند تا کنترل رایانههای کاربران را به منظور بهرهگیری در بازار سیاه به کار گیرند.
بدافزارهای مسری: ویروسها و کرمها
انواع بدافزارها، ویروسها و کرمها هستند که به خاطر نحوهٔ شیوعشان شناخته میشوند. عبارت ویروس کامپیوتری به برنامهای اطلاق میشود که نرمافزار قابل اجرایی را آلوده کرده باشد و هنگامی که اجرا میشود، سبب شود که ویروس به فایلهای قابل اجرای دیگر نیز منتقل شود. ویروسها ممکن است قابلیت حمل یک بار اضافی را نیز داشته باشند، که میتواند اعمال دیگر نیز انجام دهد. این اعمال اغلب خرابکارانه هستند. از سوی دیگر یک کرم برنامهای است که به طور فعالانه خود را روی یک شبکه منتقل میکند تا رایانههای دیگر را نیز آلوده سازد. کرمها نیز قابلیت حمل یک بار اضافی را دارند.
تعریفهای بالا نشان میدهد که تفاوت ویروس و کرم در این است که یک ویروس برای شیوع نیاز به دخالت کاربر دارد، در حالی که یک کرم خود را به طور خودکار و از طریق شبکه گسترش پیدا میکند. در نتیجه آلودگیهایی که از طریق ایمیل یا فایلهای مایکروسافت ورد (به انگلیسی: مایکروسافت ورد) منتقل میشوند، ویروس شناخته میشوند، زیرا باید دریافتکنندهٔ فایل یا ایمیل آن را باز کند تا سیستم آلوده شود. برخی نویسندگان در رسانههای محبوب نیز متوجه این تمایز نیستند و از این عبارتها به اشتباه در جای یکدیگر استفاده میکنند.
مخفی کارها: اسبهای تروآ، روتکیتها و بکدُورها
اسبهای تروآ: (به انگلیسی: Trojan horses)
یک برنامه خرابکار برای اینکه بتواند به اهدافش برسد باید قادر باشد که اجرا شود بدون آنکه توسط کاربر یا مدیر سیستم رایانه خاموش یا پاکسازی شود. مخفی کاری همچنین این امکان را میدهد که بدافزار در اولین مکان نصب شود. وقتی یک برنامه خرابکار خود را به شکل چیز بی ضرر یا مطلوب در میآورد، کاربران ممکن است تشویق شوند تا آن را بدون آنکه بدانند چه میکند، نصب کنند. این، ترفندِ اسب تروآ است.
به بیان دیگر، یک اسب تروآ برنامهای است که کاربر را ترغیب میکند تا اجرایش کند در حالی که قابلیت خرابکاریش را مخفی میکند. آثار منفی ممکن است بلافاصله آغاز شوند و حتی میتوانند منجر به آثار نامطلوب فراوانی گردند. از جمله حذف کردن فایلهای کاربر یا نصب نرمافزارهای خرابکار یا نا مطلوب بیشتر. اسبهای تروآ برای آغازسازی شیوع یک کرم استفاده میشوند.
یکی از مرسوم ترین راههایی که جاسوس افزارها توزیع میشوند، از طریق یک اسب تروآ که به عنوان یک قطعه از یک نرمافزار مطلوب که کاربر آن را از اینترنت دانلود میکند، است. وقتی که کاربر نرمافزار را نصب میکند جاسوس افزار نیز در کنارش نصب میشود. برای مثال اسب تراوا در غالب یک نرمافزار دانلودنصب میشود و به صورت مستقل از نرمافزار اصلی یا مرتبط با آن شروع به دانلود برنامه و مدیاها گاهی با مضامین مستهجن میکند. مثال اخیر تروجان فوق سری نرمافزارهایی با پسوند finder میباشد.
نویسندگان جاسوس افزار سعی میکنند به صورت قانونی عمل کنند، ممکن است رفتار جاسوس افزار را در عباراتی مبهم در توافق نامه با کاربر بیاورند و البته کاربران بعید است که این توافق نامه را بخوانند یا بفهمند. تروآها به صورت عمده به منظور کارهای تجاری استفاده میشوند.
رد گم کن:(به انگلیسی: Rootkits)
رد گم کن واژه مصوب فرهنگستان زبان و ادب فارسی برای (به انگلیسی: Rootkits) است. هنگامی که یک برنامهٔ خرابکار روی یک سیستم نصب میشود بسیار مهم است که مخفی باقی بماند تا از تشخیص و نابودی در امان باشد. همین وضعیت دربارهٔ یک مهاجم انسانی که بطور مستقیم وارد یک رایانه میشود برقرار است. ترفندهایی که به عنوان روتکیتها شناخته میشوند اجازه این مخفی کاری را میدهند. آنها این کار را با اصلاح سیستم عامل میزبان انجام میدهند به نحوی که بدافزار از دید کاربر مخفی بماند. روتکیتها میتوانند از این که یک پروسهٔ خرابکارانه در لیست پروسههای سیستم دیده شود ممانعت کنند، یا مانع خوانده شدن فایلهای آن شوند. در ابتدا یک روتکیت مجموعهای از ابزارها بود که توسط یک مهاجم انسانی بر روی یک سیستم یونیکس نصب میشد که به مهاجم اجازه میداد تا دسترسی مدیریتی داشته باشد. امروزه این عبارت بطور عمومی تر برای فرایندهای مخفی سازی در یک برنامهٔ خرابکار استفاده میشود.
بکدُرها:(به انگلیسی: Backdoors)
یک بکدُر روشی است برای خنثی سازی رویههای معمول تایید اعتبار. وقتی یک سیستم دارای چنین رویههایی باشد یک یا چند بکدُر ممکن است نصب شوند تا دسترسیهای آتی را آسان تر سازد. بکدُرها ممکن است حتی پیش از یک نرمافزار خرابکار نصب شوند تا به مهاجمان اجازهٔ ورود دهند.
دیگر بدافزارها
جاسوسافزارها
جاسوسافزارها (Spyware) بدافزارهایی هستند که بر روی رایانهٔ کاربر نصب میشوند و بدون اطلاع وی، اطلاعات مختلف در مورد او را جمعآوری میکنند. اکثر جاسوسافزارها از دید کاربرها مخفی میمانند و تشخیص و پیدا کردن آنها در اغلب موارد مشکل است. برخی از جاسوسافزارها مانند کیلاگرها ممکن است توسط مسئول یک سازمان و یا شرکت بر روی رایانهها نصب شوند تا رفتار کاربران قابل ارزیابی و بررسی باشد.
جاسوسافزارها هر گونه اطلاعاتی را میتوانند جمعآوری کنند. این اطلاعات میتواند اطلاعات شخصی یک کاربر مانند گشت و گذارهای وی بر روی اینترنت و یا مشخصات حسابهای مختلف وی مانند رمز عبور پست الکترونیکی و... باشد. علاوه بر این، جاسوسافزارهای میتوانند در کنترل رایانه توسط کاربر اختلال ایجاد کنند. به عنوان مثال، جاسوسافزارهای میتوانند کاربر را به بازدید از یک صفحهٔ خاص اینترنتی مجبور کنند و یا اینکه با تغییر تنظیمات رایانهٔ وی، باعث کاهش سرعت اینترنت و دسترسی غیرمجاز به رایانهٔ وی شوند. وباید توجه داشت که نرمافزارِDjyjji.3درست راهاندازی شود.
آگهیافزار
آگهیافزار یا برنامههای تبلیغاتی (Adware): اینگونه برنامهها همانند جاسوسافزارها دارای اثر تخریبی نمیباشند و وظیفه آنها بازکردن صفحات خاص اینترنتی جهت اهداف تجاری و تبلیغی است.
جکها
جکها (Joke) برنامههایی هستند که ادعا میکنند در حال انجام عملیاتی تخریبی بر روی سیستم شما میباشند ولی در واقع اینگونه نبوده و کار آنها چیزی جز یک شوخی ساده نمیباشد. متأسفانه برخی کاربران به سادگی تحت تأثیر جکها قرار گرفته و با تلاش برای از بین بردن چیزی که مخرب نیست باعث ایجاد تخریب بیشتری میشوند.
کلک
کلک (Hoax): این برنامهها با سوء استفاده از کم بودن اطلاعات تخصصی کاربران، آنها را فریب داده و با دستورات و توصیههای اشتباه باعث میشوند که کاربر شخصاً کاری تخریبی بر روی سیستم خود انجام دهد. به عنوان مثال وانمود میکنند که فایلی خاص در مسیر سیستمعامل یک برنامه خطرناک است و باید توسط کاربر حذف شود. غافل از اینکه این فایل سیستمی بوده و برای عملکرد درست سیستمعامل، وجود آن لازم است.
شمارهگیرها
شمارهگیر (Dialer): اینگونه برنامهها وظیفهشان ارتباط دادن کاربر از طریق خط تلفن به سرورهایی در دیگر کشورها برای دسترسی مستقیم به اطلاعات آنها میباشد. این سرورها معمولاً مربوط به سایتهای غیراخلاقی بوده و برقراری ارتباط با آنها از طریق خط تلفن باعث هزینه بسیار زیاد مالی میگردد.
بارگیرها
بارگیر (Downloader): کار اینگونه برنامهها Download کردن بد افزارها و اجرای آنها است
کلیککنندهها
کلیککننده (Adclicker): اینگونه برنامهها لینک صفحات تبلیغاتی را دنبال نموده و به این طریق حالت کلیک شدن بر روی آن صفحه تبلیغاتی خاص را شبیه سازی میکنند و باعث بالا رفتن hit آن میشوند.
درهای پشتی
درهای پشتی (Backdoors) ابزاری برای نفوذگرها هستند که به وسیله آنها میتوانند سیستمهای دیگر را در کنترل خود درآورند. درهای پشتی درون شبکه، پورتهای TCP یا UDP را باز میکنند و شروع به گوش کردن نموده تا دستورات نفوذگرها را اجرا کنند. درهای پشتی از جهت نداشتن قابلیت تکثیر شبیه ترویاها هستند.
گذرواژهدزدها
گذرواژهدزد (Password-Stealer): اینگونه برنامهها که نوعی ترویا هستند کارشان دزدی پسورد از روی سیستمها و ارسال آنها برای نفوذگرها است.
بهرهکشها
بهرهکشها (Exploits) کدهای مخربی هستند که با استفاده از آسیب پذیریهای یک سیستم امکان دسترسی از راه دور به آن سیستم را فراهم میکنند.
کیلاگر
کلیدنگار یا کیلاگر (Keylogger) برنامههایی هستند که با قرار گرفتن در حافظه از کلیدهای زده شده توسط کاربر گزارش گرفته و در قالب یک فایل برای نفوذگر میفرستند. البته باید بدانیم که کیلاگرها به صورت سختافزاری نیز وجود دارند.
برنامههای ضد بدافزار
با افزایش حملات بدافزارها توجهها از محافظت در برابر ویروسها و جاسوس افزارها به سمت محافظت از بدافزارها جلب شدهاست. در نتیجه برنامههای مخصوصی برای مبارزه با آنها توسعه یافتهاست. برنامههای ضد بدافزار از دو طریق با بدافزار نبرد میکند:
۱ - آنها محافظت بی درنگ را در برابر نصب بدافزار روی یک رایانه میتوانند تامین کنند، در این نوع از محافظت نرمافزار ضد بدافزارتمام اطلاعات ورودی از شبکه را اسکن میکند تا ازورود بدافزارها و تهدیدهایی که با آنها میآیند جلوگیری به عمل آورد. محافظت بی درنگ از بدافزار مشابه محافظت بی درنگ از ویروس عمل میکند. یعنی نرمافزار فایلها را در زمان دانلود آن اسکن نموده و از فعالیت هر چیزی که بد افزار شناخته شود ممانعت به عمل میآورد.
۲-برنامههای ضد بدافزار میتوانند تنها به منظور تشخیص و پاکسازی بدافزارهایی که قبلاً روی یک رایانه نصب شدهاند، مورد استفاده قرار گیرند. این نوع از محافظت در برابر بدافزار عمدتاً ساده تر و محبوب تر است. این نوع از ضد بدافزارها محتوای رجیستری ویندوز، فایلهای اجرایی سیستم و برنامههای نصب شده روی یک رایانه را اسکن میکنند و لیستی از تهدیدهای پیدا شده را تهیه میکنند، که به کاربر اجازه میدهد که چه فایلهایی را حذف یا نگاه دارد.
جاسوسافزار
اینگونه برنامهها مستقیماً دارای اثر تخریبی نیستند و وظیفهٔ آنها جمعآوری اطلاعات از روی رایانه کاربر و نیز تحت نظر قرار دادن اعمال وی هنگام کار با رایانه و اینترنت است. در نهایت این اطلاعات برای مقاصد خاص فرستاده میشود تا از آنها جهت اهداف تجاری و تبلیغی ونظامی و نظارتی و... استفاده گردد.
تعریف
جاسوس افزار مانند ویروس و کرم نوعی بدافزار است. بدافزار به برنامههایی گفته میشود که توانایی آسیب رساندن به یک سیستم کامپیوتری یا شبکهای از کامپیوترها را دارند. جاسوس افزار برنامهای است که بدون اجازه کاربر روی سیستم کامپیوتری وی نصب شده، کنترل آن را از فرد میگیرد و اطلاعات شخصی وی را برای یک شخص ثالث میفرستد.
تاریخچه
واژه جاسوس افزار برای اولین بار در ۱۶ اکتبر سال ۱۹۹۵ در متنی درمورد مدل تجارتی ماکروسافت استفاده شد. در سال ۲۰۰۰ آقای گریگور فرند در توصیف دیوار آتش شخصی خود به نام زون آلارم از واژه جاسوس افزار استفاده کرد. اما استفاده رسمی از این کلمه بعد از سال ۲۰۰۱ بود زمانی که آقای استیو گیبسون رئیس مرکز تحقیقات گیبسون متوجه نصب یک نرمافزار تبلیغاتی روی سیستم کامپیوتری خود شد که اطلاعات شخصی او را برای فرد دیگری ارسال میکرد. به همین دلیل وی یک برنامه ضدجاسوسی طراحی کرد و آن را اوپت اوت نامید.
انواع
در یک تقسیم بندی کلی نرمافزارهای جاسوسی را میتوان به دو دسته تقسیم کرد: ۳-۱- نرمافزارهای جاسوسی خانگی نرمافزاری که معمولاً توسط صاحبان کامپیوترها به منظورآگاهی یافتن از تاثیرات اینترنت بر شبکههای کامپیوتری خودشان خریداری و نصب میگردد. مدیران از این نرمافزار برای آگاهی از فعالیتهای کارمندان استفاده میکنند. بعضی افراد هم برای اطلاع از فعالیتهای سایر اعضای خانواده این روش را به کار میبرند. مانند مشاهده محتویات اتاقهای گفتگو توسط والدینی که فرزندانشان در آنها شرکت میکنند. همچنین این نوع جاسوس افزار میتواند توسط یک شخص ثالث بدون آگاهی صاحب کامپیوترروی سیستم وی نصب شود و اطلاعات شخصی وی را جمع آوری کند. ۳-۲- نرمافزارهای جاسوسی تجاری نرمافزاری است که شرکتها برای تعقیب فعالیتهای کاربران در اینترنت استفاده میکنند. این شرکتها که وظیفه نصب جاسوس افزار روی سیستمهای کامپیوتری را دارند اغلب اطلاعات حاصل را به بازاریابان میفروشند و آنها کاربر را با تبلیغات خاص که با علائق وی مطابقت دارد و برایش جذاب است مورد هدف قرارمی دهند.
راههای نفوذ
پنجرههای پاپ آپ :
پنجرههای کوچکی که به هنگام بازدید از سایت در برابر کاربر ظاهر میشوند و حاوی پیامهای مختلفی برای فریب اشخاص میباشند. در این پنجرهها اغلب دکمههای مختلفی مانند قبول، لغو، بستن و... وجود دارد ولی هیچ کدام از آنها کار اصلی خود را انجام نمیدهند و با فشردن هر کدام از این دکمهها جاسوس افزار روی سیستم نصب میشود.
نرمافزارهای ضد جاسوس افزار:
بعضی نرمافزارهای ضدجاسوسی به جای از بین بردن جاسوس افزار آن را روی سیستم نصب میکنند. از برنامههای مطمئن و معروف برای بالا بردن امنیت سیستم خود استفاده کنید.
برنامههای رایگان اینترنتی:
امروزه بسیاری از کاربران اینترنت بنا بر نیاز خود برنامههایی را که به صورت رایگان روی اینترنت قرار گرفته دانلود و نصب میکنند. اغلب صاحبان این برنامهها در ازای دریافت مبلغی یا بااهداف تجاری دیگر کد جاسوس افزار را در برنامه خود قرار میدهند و به هنگام نصب آن نرمافزار جاسوس افزار نیز روی سیستم کامپیوتری قرار گرفته و شروع به کار میکند
سی دیها و فلشها:
حافظههای جانبی قابل حمل مانند سی دی و فلش به این علت که بین سیستمهای زیادی جا به جا میشوند حاوی برنامههای مخرب هستند. ۴-۵- سوء استفاده از ضعف امنیتی اینترنت اکسپلورر بعضی از طراحان برنامههای مخرب که با ضعفهای امنیتی اینترنت اکسپلورر آشنا باشند میتوانند در کد صفحه وب خود دستورهایی قرار دهند که به هنگام بازکردن آن صفحه با اینترنت اکسپلورر جاسوس افزار روی کامپیوتر نصب شود
ویروسها:
برخی ویروسها حاوی کدهایی برای نصب جاسوس افزارهستند. == تمامی نشانه های یک جاسوس افزار
تشخیص آلوده بودن یک کامپیوتر به جاسوس افزار کار سختی نیست. سیستم آلوده نشانههای سادهای دارد از جمله: ۵-۱- تغییر ناگهانی صفحه خانگی مرورگر بعضی از جاسوس افزارها که برای اهداف تبلیغاتی طراحی میشوند بدون اجازه کاربر صفحه خانگی مرورگر اینترنتی را تغییر میدهند. بسیاری از افرادی که سیستم آنها آلوده شده به طور مکرر صفحه خانگی مرورگر را مطابق میل خود تنظیم نموده و با تغییر دوباره آن مواجه میشوند. ۵-۲- ایجاد نوار ابزارهای جدید از نشانههای دیگر وجود جاسوس افزار ظاهر شدن نوار ابزارهای جدید بدون خواست کاربر در پنجره مرورگر است.
ظاهر شدن مداوم پنجرههای پاپ آپ :
اگر فرد به صورت مکرر و مداوم با پنجرههای پاپ آپ مواجه شود امکان وجود جاسوس افزار در سیستم کامپیوتری وی زیاد است.
تغییر آدرس توسط مرورگر:
بعضی جاسوس افزارها طوری تنظیمات مرورگر را تغییر میدهند که برخلاف میل کاربر و بدون توجه به آدرس وارد شده در نوار آدرس و یا نوار جستجو صفحاتی را به وی نشان دهد که در جهت اهداف تبلیغاتی طراحان آن جاسوس افزار است.
ایجاد آیکونهای جدید روی صفحه نمایش:
وجود آیکونهای جدید و ناشناخته روی صفحه نمایش بدون خواست کاربر از نشانههای وجود جاسوس افزار است. عدم کارایی بعضی کلیدهای صفحه کلید: جاسوس افزارها کارایی کلیدهای صفحه کلید را تغییر میدهند به طوری که برای مثال کلید تب در پنجره مرورگر به جای جا به جایی روی پیوندها کار دیگری انجام دهد.
عملکرد کند کامپیوتر:
از آنجایی که جاسوس افزار یک برنامهاست برای اجرا شدن به حافظه و پردازنده نیاز دارد و سرعت کامپیوتر را کاهش میدهد.
خاموش شدن دیوار آتش و ضدویروس:
جاسوس افزار برای این که به راحتی اطلاعات کاربر را برای شخص ثالث ارسال کند و همچنین تنظیمات سیستم کامیوتری را تغییر دهد اغلب بدون اطلاع کاربر دیوار آتش و ضدویروس را غیر فعال میکند تا به اهداف خود دست یابد.
مشکلات
سرقت اطلاعات شخصی:
جاسوس افزارها میتوانند با دست یابی به کوکیها عادتهای اینترنتی، اطلاعات کارتهای اعتباری و بسیاری اطلاعات دیگر شما را جمع آوری کند همچنین با ثبت کردن کلیدهای فشرده شده توسط شما روی صفحه کلیدرمزهای عبور شما را به دست آورده و در اختیار افراد دیگر قرار دهند.
تاثیر منفی روی عملکرد کاربر:
ظاهر شدن مداوم پنجرههای پاپ آپ، ایجاد نوار ابزارها و آیکونهای جدید و ناشناخته، کاهش سرعت کامپیوتر، کاهش امنیت افراد در استفاده از اینترنت و سایر مشکلاتی که جاسوس افزار ایجاد میکند بر عملکرد کاربران تاثیر میگذارد.
کاهش کارایی سیستم:
همانطور که گفته شد چون جاسوس افزار نوعی برنامهاست حافظه و پردازنده کامپیوتر را مصرف میکند و کارایی سیستم را کاهش میدهد.
استفاده از پهنای باند:
جاسوس افزار برای ارسال اطلاعات نیاز به برقراری ارتباط از طریق اینترنت دارد و باید از پهنای باند استفاده کند.
سختافزار رایانه
سختافزار رایانه مجموعهای از اجزای فیزیکی است که میتوان آنها را لمس کرد (مشاهده کرد) و یک رایانه را تشکیل میدهند مانند صفحه نمایش، صفحه کلید، حافظههای رایانه، دیسک سخت، ماوس، چاپگرها، سیپییو، کارت گرافیک، کارت صدا، حافظه، مادربورد و چیپها. در مقابل آن نرمافزار قابل لمس نیست. نرمافزار مجموعهای از ایدهها، مفاهیم و نمادها است. ترکیب سختافزار و نرمافزار یک سیستم محاسباتی قابل استفاده را تشکیل میدهند.
تعریف صنعتی
سختافزار بخش مادی، قابل لمس و ابزاری هر مجموعه یا سیستم است. سختافزار معمولاً به قطعات و یراقآلات فلزی و پلاستیکی تشکیل دهنده مجموعه گفته میشود. لازم به توضیح است که برق نیز جزو سختافزار حساب میشود.
تعریف رایانه
در دانش رایانه به مجموع مدارهای الکترونیکی، اجزای فیزیکی و مکانیکی قابل لمس و مشاهده در یک رایانه سختافزار میگوییم. همچنین به بخش غیرقابل لمس مانند سیستمعامل و برنامههای رایانهای، نرمافزار اطلاق میگردد.
فهرست سختافزارها
بُردِ مادر یا برد اصلی (مادربورد)
نمایشگر (مانیتور)
جعبه رایانه (کیس)
صفحهکلید (کیبورد)
موشواره (ماوس)
چاپگر (پرینتِر)
پویشگر (اسکنر)
واحد پردازش مرکزی (سیپییو یا پردازنده)
فلاپیدیسک
دیسک سخت
مودم
دیسکگردان نوری (درایو نوری) (CD و DVD)
بلندگو
یو اس بی
کارت صدا
کارت گرافیک
قلم نوری
هدفون (دوگوشی)
کارت تلویزیون و رادیو
دوربین (وبکم)
میکروفون
هدست
برنامه
برنامه رایانهای رشته دستورالعمل هایی است که توسط کامپیوتر قابل اجرا میباشد. این اصطلاح میتواند به کد اصلی یا نگارش اجرایی آن (زبان ماشین) نیز اطلاق گردد. برنامههای کامپیوتر میتوانند پایانپذیر یا پایان ناپذیر باشند. در برنامههای کامپیوتری هدف اجرای روالی خاص جهت رسیدن به مقصودی خاص می باشد.
انواع برنامههای رایانهای
برنامههای رایانهای از تنوع زیادی برخوردارند. از جمله میتوان به این موارد اشاره کرد:
سیستمعامل
برنامههای کاربردی
ویروسهای رایانهای
ویروس رایانهای
تعریف ویروس
ویروس، یک نوع از بدافزار است که در اغلب مواقع بدون اطلاع كاربر اجرا شده و تلاش میکند خودش را در یک کد اجرایی دیگر کپی کند. وقتی موفق به انجام این کار شد، کد جدید، آلوده نامیده میشود. کد آلوده وقتی اجرا شود، به نوبهی خود کد دیگری را میتواند آلوده کند. این عمل تولید مثل یا کپیسازی از خود بر روی یک کد اجرایی موجود، ویژگی کلیدی در تعریف یک ویروس است. معمولاً کاربران کامپیوتر به ویژه آنهایی که اطلاعات تخصصی کمتری درباره کامپیوتر دارند، ویروسها را برنامههایی هوشمند و خطرناک میدانند که خود به خود اجرا و تکثیر شده و اثرات تخریبی زیادی دارند که باعث از دست رفتن اطلاعات و گاه خراب شدن کامپیوتر میگردند در حالیکه طبق آمار تنها پنج درصد ویروسها دارای اثرات تخریبی بوده و بقیه صرفاً تکثیر میشوند. بنابراین یک ویروس رایانهای را میتوان برنامهای تعریف نمود که میتواند خودش را با استفاده از یک میزبان تکثیر نماید. بنابر این تعریف اگر برنامهای وجود داشته باشد که دارای اثرات تخریبی باشد ولی امکان تکثیر نداشته باشد، نمیتوان آنرا ویروس نامید. بنابراین ویروسهای رایانهای از جنس برنامههای معمولی هستند که توسط ویروسنویسان نوشته شده و سپس به طور ناگهانی توسط یک فایل اجرایی و یا جا گرفتن در ناحیه سیستمی دیسک، فایلها و یا کامپیوترهای دیگر را آلوده میکنند. در این حال پس از اجرای فایل آلوده به ویروس و یا دسترسی به یک دیسک آلوده توسط کاربر دوم، ویروس به صورت مخفی نسخهای از خودش را تولید کرده و به برنامههای دیگر میچسباند و به این ترتیب داستان زندگی ویروس آغاز میشود و هر یک از برنامهها و یا دیسکهای حاوی ویروس، پس از انتقال به کامپیوترهای دیگر باعث تکثیر نسخههایی از ویروس و آلوده شدن دیگر فایلها و دیسکها میشوند. لذا پس از اندک زمانی در کامپیوترهای موجود در یک کشور و یا حتی در سراسر دنیا منتشر میشوند. از آنجا که ویروسها به طور مخفیانه عمل میکنند، تا زمانی که کشف نشده و امکان پاکسازی آنها فراهم نگردیده باشد، برنامههای بسیاری را آلوده میکنند و از این رو یافتن سازنده و یا منشاء اصلی ویروس مشکل است.
تاریخچه
اولین تحقیق واقعی علمی و آکادمیک بر روی ویروسها توسط فرد کوهن در سال 1983، با نام ویروس که توسط لِن آدلمن ابداع شده بود، انجام شد. بعضاً از کوهن به عنوان «پدر ویروسهای کامپیوتری» نام برده میشود، اما واقعاً ویروسهایی بودند که قبل از شروع تحقیقات او تولید شده بودند. ویروس Elk Cloner نوشته شده توسط ریچ اسکرنتا در سال 1982 در گردش بود و ویروسهای تولید شده توسط جو دلینگر نیز بین سالهای 1981 تا 1983 ساخته شده بودند؛ که همهی آنها برای پلتفرمهای Apple II بودند. برخی منابع یک نقص فنی در Arpanet را در سال 1980 به عنوان اولین ویروس ذکر میکنند، اما آن فقط یک کد قانونی و مجاز بود که اشتباه کار میکرد و تنها مسألهای که ایجاد میکرد این بود که دادهها را در بستههای شبکه پخش میکرد. ویروسهای گریگوری بنفورد، تنها به به داستانهای علمیاش ختم نشد. او در سال 1969 ویروسهای غیر مخرب خود را در جایی که امروزه «آزمایشگاه ملی لیوِرمور لارنس» خوانده میشود و در Arpanet اولیه تولید و منتشر کرد.
میزبان ویروس
ویروس هم مانند هر برنامه کامپیوتری نیاز به محلی برای ذخیره خود دارد. ولی این محل باید به گونهای باشد که ویروسها را به وصول اهداف خود نزدیکتر کند. همان گونه که قبلاً ذکر شد اکثر ویروسها به طور انگلوار به فایلهای اجرایی میچسبند و آنها را آلوده میکنند. اصولاً میتوان فایلها را به دو گونه کلی «اجرایی» و «غیر اجرایی» تقسیم کرد که عموم ویروسها در فایلهای اجرایی جای گرفته و آنها را آلوده میکنند و واقعاً کمتر ویروسی یافت میشود که در یک فایل غیراجرایی قرار بگیرد و بتواند از طریق آن تکثیر شود.
لازم به ذکر است که بعضی از فایلها را شاید نتوان ذاتاً اجرایی نامید اما چون اینگونه فایلها میتوانند حاوی قسمتهایی اجرایی باشند، لذا آنها را از نوع اجرایی در نظر میگیریم. از این نوع فایلها میتوان به فایلهای اچتیامال و مستندات برنامههای اداره اشاره کرد که به ترتیب ممکن است شامل اسکریپت و ماکرو باشند. اسکریپتها و ماکروها قسمتهایی اجرایی هستند که در دل این فایلها قرار گرفته و کار خاصی را انجام میدهند.
در ذیل فهرست پسوندهای رایج فایلهای اجرایی ارائه شده است و اکثر نرمافزارهای ضد ویروس در حالت عادی (بدون تنظیمات خاص) این فایلها را ویروسیابی میکنند (البته در برخی برنامههای ضد ویروس ممکن است برخی پسوندها حذف یا اضافه شوند) :
.com ، .exe ، .dll ، .ovl ، .bin ، .sys ، .dot ، .doc ، .vbe ، .vbs ، .hta ، .htm ، .scr ، .ocx ، .hlp ، .eml
بنابراین یکی از اصلیترین میزبانهای ویروس، فایلهای اجرایی هستند. از طرف دیگر برخی ویروسها نیز از سکتور راهانداز (Boot Sector) و جدول بخشبندی دیسک (Master Boot Record یا Partition Table) به عنوان میزبان استفاده میکنند. سکتور راهانداز واحد راهاندازی سیستمعامل است که در سکتور شماره صفر دیسکت فلاپی و یا درایوهای منطقی یک دیسک سخت قرار دارد و جدول بخشبندی شامل اطلاعات تقسیمبندی دیسک سخت میباشد که آن نیز در سکتور شماره صفر دیسک سخت قرار دارد. اینگونه ویروسها با قرار گرفتن در یکی از این دو محل، هنگام راهاندازی کامپیوتر، اجرا شده و در حافظه سیستم مقیم میشوند و تا زمان خاموش کردن کامپیوتر و یا راهاندازی دوباره، همانجا مانده و فلاپیها و یا دیسکهای سخت دیگر را آلوده میکنند.
عملکرد ویروس
همانطور که گفته شد تنها پنج درصد از ویروسها دارای اثرات تخریبی هستند و بقیه صرفاً تکثیر میشوند. با توجه به این مطلب این پرسش مطرح است که چرا ویروسها به عنوان یک معضل شناخته میشوند و باید با آنها مبارزه کرد؟ پاسخ به این پرسش در موارد زیر خلاصه گردیده است:
۱ - بسیاری از ویروسها دارای اثراتی هستند که هرچند تخریبی نمیباشد ولی میتواند برای کاربر ایجاد مزاحمت کند. مثلاً ممکن است پیغامی نمایش دهد، باعث ریزش حروف صفحه نمایش به پایین شود یا اینکه یک آهنگ پخش نماید. علاوه بر این برخی از ویروسها به علت اشکالات نرمافزاری که ناشی از عدم دقت ویروسنویس میباشد، ممکن است دارای اثراتی غیرقابل پیشبینی باشند که گاهی این اثرات میتوانند تخریبی نیز باشند. از نقطه نظر کاربر اهمیتی ندارد که خسارت ایجاد شده بوسیله یک ویروس، یک کار عمدی پیشبینی شده توسط نویسنده ویروس بوده باشد یا یک اشتباه برنامهنویسی.
۲ - برخی از ویروسها در حافظه کامپیوتر مقیم شده و از این طریق عملیات تکثیر خود را انجام میدهند. این عمل ممکن است به گونهای باشد که جایی برای اجرای برنامههای دیگر نماند و یا باعث ایجاد تأخیر یا وقفه در حین عملیات سیستم اعم از اجرای برنامهها و یا راهاندازی کامپیوتر گردد.
۳ - فرض کنید که شما یک ویروس بر روی کامپیوتر خود داشته باشید. بسیار احتمال دارد که این ویروس به صورت غیرعمدی به یک دوست، همکار یا مشتری منتقل شود که این امر ممکن است باعث از بین رفتن اعتماد آنها به شما و شرکت شما شود.
۴ - ویروسها و برنامههای مخرب زیادی وجود دارند که اقدام به سرقت اطلاعات و کلمات عبور کاربر مینمایند. بعضی از اینگونه برنامهها با مقیم شدن در حافظه از عباراتی که توسط شما تایپ میشود گزارش گرفته و پس از اتصال رایانه شما به اینترنت این اطلاعات را برای مقصد خاصی ارسال میکنند. گیرنده این اطلاعات میتواند به راحتی از آنها سوء استفادههای مختلفی نماید.
علاوه بر همه اینها هیچ ویروسی کاملاً بیضرر نیست و در خوشبینانهترین حالت، آنها وقت شما، وقت پردازنده و فضای دیسک شما را تلف میکنند.
در مورد اثرات تخریبی ویروسهایی که آنها را به صورت عمدی انجام میدهند میتوان به موارد زیر اشاره نمود:
تخریب یا حذف برنامهها و اطلاعات بخشهای مختلف دیسکها.
فرمت کردن دیسکها.
کد کردن اطلاعات و برنامهها.
تخریب اطلاعات حافظه فلش ها.
مزاحمتهای فوق ممکن است به محض فعال شدن ویروس (یعنی قرار گرفتن ویروس در حافظه از طریق اجرای یک برنامه آلوده) و یا در یک تاریخ و زمان خاص و یا حتی با اجرای یک برنامه کاربردی خاص انجام شود.
انواع ویروسها
ارائه یک تقسیمبندی دقیق از ویروسها کار مشکلی است و میتوان ویروسها را به روشهای مختلفی تقسیمبندی کرد. این روشها میتواند بر اساس میزبان ویروس، سیستمعاملی که ویروس میتواند در آن فعالیت کند، روش آلودهسازی فایل و ... باشد. در زیر به برخی از این روشها اشاره میکنیم :
تقسیم بندی ویروسها بر اساس مقصد آلودهسازی:
۱ - ویروسهای فایلی (File Viruses) : ویروسهای فایلی، معمولاً فایلهای اجرایی را آلوده میکنند. فایلهای آلوده به این نوع از ویروسها اغلب (اما نه همیشه) دارای پسوند .com یا .exe هستند.
۲ - ویروسهای ماکرو (Macro Viruses) : ویروسهای ماکرو، مستندات برنامههایی را که از امکان ماکرونویسی پشتیبانی مینمایند (مانند MS Word ، MS Excel و...) آلوده میکنند. فایلهای اینگونه برنامهها اجرایی نیستند ولی درون آنها قسمتهایی اجرایی به نام «ماکرو» وجود دارد که میتواند میزبان مناسبی برای ویروسهای ماکرو باشد.
۳ - ویروسهای بوت و پارتیشن سکتوری (Boot Sector and Partition Table Viruses) : اینگونه ویروسها سکتور راهانداز (Boot Sector) دیسک سخت و دیسکت فلاپی یا جدول بخشبندی دیسکهای سخت را آلوده میکنند. با راهاندازی سیستم از روی دیسکی که به اینگونه ویروسها آلوده شده است، ویروس در حافظه مقیم شده و متعاقباً دیسکهایی را که مورد دسترسی قرار گیرند، آلوده میکند.
۴ - ویروسهای اسکریپتی (Script Viruses) : این ویروسها که اسکریپتهای نوشته شده به زبانهای ویژوال بیسیک یا جاوا میباشند، تنها در کامپیوترهایی اجرا میشوند که بر روی آنها Internet Explorer یا هر مرورگر وب دیگری با توانایی اجرای اسکریپتها، نصب شده باشد و فایلهای با پسوند .html ، .htm ، .vbs ، .js ، .htt یا .asp را آلوده میکنند.
ویروسها جدا از تقسیمبندی فوق، ممکن است در یک یا چند دسته از دستههای زیر نیز قرار بگیرند:
ویروسهای مقیم در حافظه (Memory Resident Viruses) :
اینگونه ویروسها با مقیم شدن در حافظه، هنگام دسترسی به فایلهای دیگر، آنها را آلوده میکنند.
ویروسهای مخفیکار (Stealth Viruses) :
اینگونه ویروسها به روشهای مختلف ردپای خویش را مخفی میکنند. به این معنی که فایلهای آلوده به اینگونه ویروسها به گونهای نشان داده میشود که یک فایل غیرآلوده جلوه کند. به عنوان مثال عموم ویروسها پس از آلوده کردن یک فایل، اندازه آن را افزایش میدهند و یا گاهی تاریخ و زمان ضبط فایل را عوض میکنند. اما ویروسهای مخفیکار میتوانند با روشهای خاص و بدون تغییر وضعیت ظاهری، عملیات خویش را انجام دهند.
ویروسهای کدشده (Encrypting Viruses) :
این ویروسها پس از هر بار آلودهسازی، با استفاده از شیوههای خود رمزی شکل ظاهری خود را تغییر میدهند.
ویروسهای چندشکلی (Polymorphic Viruses) :
اینگونه ویروسها با استفاده از الگوریتمهای خاص، علاوه بر تغییر شکل ظاهری خود، ساختار خود را نیز تغییر میدهند به طوریکه ممکن است جای دستورالعملها و حتی خود دستورالعملها نیز تغییر کنند.
ویروسهای فعالشونده بر اساس رویداد خاص(Triggered Event Viruses) :
ویروسهایی هستند که بخشی از عملیات تخریب خود را در ساعت و یا در تاریخ خاص انجام میدهند. البته باید توجه داشت که تکثیر و آلودهسازی فایلها در تمام اوقات فعال بودن ویروس انجام میشود.
نشانههای وجود ویروس
معمولاً سیستمی که به ویروس آلوده میگردد نشانههایی را از خود بروز میدهد که با دقت در آنها میتوان به ویروسی بودن احتمالی سیستم پی برد. بعضی از این نشانهها در زیر آمده است. اما باید دقت داشت که این نشانهها ممکن است در اثر عوامل غیرویروسی نیز ظاهر گردد. اما اگر کامپیوتر بطور عادی کار میکرده و ناگهان و بدون هیچگونه دستکاری، این علایم را از خود بروز میدهد، احتمال وجود ویروس بیشتر است:
۱ - سیستم در هنگام راهاندازی قفل میکند و احتمالاً پیغامهای غیرمعمول روی صفحه ظاهر میگردد.
۲ - هنگام اجرای برنامهها پیغام کمبود حافظه ظاهر شده و برنامه اجرا نمیگردد.
۳ - در کارچاپگر اختلال ایجاد میشود یا بدون هیچگونه فرمان چاپی شروع به کار میکند.
۴ - امکان دسترسی به برخی از درایوها وجود ندارد.
۵ - هنگام اجرای فایلها، پیغام File is Damaged یا File is Corrupted نمایش داده میشود.
۶ - هنگام اجرای یک فایل، کاراکترها و یا پیغامهای غیرعادی روی صفحه نمایش ظاهر میگردد.
۷ - هنگام کار در محیطهای گرافیکی، تصاویر به هم میریزد.
۸ - اصوات غیرمعمول یا موزیک از بلندگوهای کامپیوتر پخش میشود.
۹ - سیستم هنگام اجرای یک برنامه قفل کرده و حتی گاهی فشردن کلیدهای Ctrl+Alt+Del نیز نمیتواند سیستم را دوباره راهاندازی کند.
۱۰ - اطلاعات بخشی از دیسک سخت و یا تمام آن بطور ناگهانی از بین میرود یا دیسک سخت ناخواسته فرمت میشود.
۱۱ - اندازه فایلهای اجرایی افزایش مییابد.
۱۲ - خواص فایلهای اجرایی تغییر میکند.
۱۳ - سرعت سیستم بطور نامحسوسی کاهش مییابد.
۱۴ - اطلاعات Setup کامپیوتر از بین میرود.
۱۵ - برنامهها مراجعاتی به دیسکت انجام میدهند که قبلاً انجام نمیدادند.
۱۶ - کاهش فضای خالی دیسک بدون اینکه فایلی اضافه شده و یا به محتوای فایلها افزوده شده باشد.
۱۷ - نرمافزارهای مقیم در حافظه با خطا اجرا شده یا اصلاً اجرا نمیشوند.
۱۸ - بعضی برنامهها سعی در برقراری ارتباط با اینترنت را دارند.
۱۹ - هنگام کار با اینترنت مقدار ارسال و دریافت اطلاعات ناخواسته افزایش یافته و سرعت به شدت افت میکند.
۲۰ - نامههای الکترونیکی ناخواسته از روی سیستم ارسال شده و یا دریافت میگردد.
وبمستر
وبمستر به طراحان وب، توسعه دهندگان وب، وبلاگ نویسان، مدیران وبسایت و تمامی افرادی که در مدیریت یک وبگاه نقش دارند گفته میشود.
وب جهانگستر
جهان وب٬
وب جهانگستر٬ تار گیتیگستر٬ یا به طور ساده وب (به انگلیسی: World Wide Web) یک سامانهٔ اطلاعاتی از پروندههای ابرمتنی متصلبههم است که از طریق شبکهٔ جهانی اینترنت قابل دسترسی هستند. بهکمک یک مرورگر وب میتوان صفحات وب (که شامل متن، تصویر، ویدیو و سایر محتویات چندرسانهای هستند) را مشاهده و بهکمک ابرپیوندها در میان آنها حرکتکرد. تیم برنرز لی، یک پژوهشگر علوم رایانه و کارمند موسسهٔ سرن
در نزدیکی ژنو، در ماه مارچ سال ۱۹۸۹ میلادی پیشنهاد اولیهٔ وب امروزی را مطرح کرد.پیشنهاد ارائهشده در ۱۹۸۹ قرار بود که یک سیستم ارتباطی برای موسسه سرن شود، اما برنرز لی بهزودی متوجهشد که این ایده قابلیت جهانیشدن را دارد.برنرز لی به همراه رابرت کایلیائو در سال ۱۹۹۰ میلادی این پیشنهاد را بهعنوان «پیوند و دسترسی به اطلاعات مختلف بهصورت تارنمایی از گرههایی که کاربران به دلخواه در میان آنها حرکت میکنند» ارائه دادند.برنرز لی در ماه و در ۷ اوت سال ۱۹۹۱ میلادی آنرا بهعنوان یک پروژه بر روی گروه خبری alt.hypertext منتشر کرد.
واژهٔ وب
واژهٔ وب (به معنی تار) در بسیاری از ترکیبات «اینترنتی» میآید. کم کم «وب» بهعنوان واژهٔ بینالمللی جا افتاده و به منظورهای مختلفی به کار میرود. این واژه معمولاً به صورت اشتباه به جای اینترنت به کار میرود اما وب در حقیقت یکی از خدماتی است که روی اینترنت ارایه میشود (مانند پست الکترونیکی).
همچنین، وب مخفف کلمه وبسایت (website) است. سایت یعنی مکان و منظور از وبسایت صفحات مرتبط است. در پارسی واژهٔ تارنما جایگزین وبسایت شده است.
تاریخچه
ایده اولیه در مورد تارِ گیتیگستر به سال ۱۹۸۰ (میلادی) برمیگردد. زمانی که در شهر سرن سوئیس، تیم برنرز لی شبکه ENQUIRE را ساخت (که به "Enquire Within Upon Everqthing CSS" اشاره داشت و همنام کتابی بود که وی از جوانی خود به یاد داشت. اگرچه آنچه وی ساخت با وب امروزی تفاوتهای زیادی دارد اما ایده اصلی در آن گنجانده شده است (و حتی برخی از این ایدهها در پروژه بعدی برنرزلی پس از WWW یعنی وب معنایی به کار گرفته شد).
در مارس 1989، برنرزلی یک پیشنهاد را نوشت که به ENQUIRE اشاره داشت و یک سیستم اطلاعاتی پیشرفته را توصیف میکرد. وی با کمک رابرت کایلا، پیشنهاد طراحی تور جهان گستر را در 12 نوامبر 1990 ارائه کرد. اولین مرور وب جهان توسط برنرزلی با عنوانNEXTcube مورد استفاده قرار گرفت و وی اولین مرورگر وب و تور جهان گستر را در سال 1990 طراحی کرد.
در کریسمس 1990، برنرز لی همه ابزارهای لازم برای کار با وب را فراهم کرد
در 6 آگوست 1991 وی خلاصهای از پروژه تور جهان گستر را در گروه خبری alt.hypertext پست کرد. در همین روز وب به عنوان یک خدمات عمومی روی اینترنت ارائه شد. مفهوم مهم ابر متن در پروژههای قدیمیتر مربوط به دهه 1960 مانند Project Xanadu مربوط به تد نلسون و NLS (سیستم آنلاین) مربوط به داگلاس انگلبارت مطرح شد.
موفقیت برنرزلی در ایجاد ارتباط بین ابر متن و اینترنت بود. در کتاب "بافتن تور" وی اذعان میکند که بارها از امکان برقراری ارتباط میان دو تکنولوژی صحبت کرده بود اما چون کسی به حرفهایش توجه نکرد وی خودش دست به کار شد و پروژه را به سرانجام رساند. وی در سیستم خود شاخصهای منحصر به فرد جهانی برای شناسایی منابع موجود روی وب و دیگر مکانها در نظر گرفت و آنها را شناسه منبع یکپارچه نامید.
تور جهان گستر با بقیه سیستمهای ابر متنی موجود تفاوتهایی داشت:
WWW به لینکهای یک طرفه نیاز داشت و نه دوطرفه بنابراین فرد میتوانست بدون آن که از جانب مالک منبع واکنشی صورت گیرد به منبع دسترسی پیدا کند. همچنین ابر متن مشکل پیادهسازی سرورهای وب و مرورگرها (در مقایسه با سیستمها قبلی) را برطرف کرد اما در مقابل مشکل زمان در لینکهای قطع شده را ایجاد کرد.
تور جهان گستر بر خلاف سیستمهای قبلی مانند ابر کارت غیر انحصاری بود و این امکان را فراهم میکرد که سرورها و مرورگرهای مستقلی را ایجاد کرده و بدون هیچ محدودیتی آنها را به شبکه وصل کرد.
در 30 آوریل سال ۱۹۹۳ (میلادی)، CERN اعلام کرد که تور جهان گستر به صورت رایگان برای همه افراد قابل دسترسی است. این موضوع دو ماه پس از اعلام رایگان نبودن پروتکل گوفر مطرح میشد و در نتیجه تمایل به وب به شدت افزایش یافت. قبل از آن مرورگر وب معروفی به نامViolaWWW وجود داشت که بر اساس ابر کارت کار میکرد. نسخه گرافیکی تور جهان گستر با نام مرورگر وب موزائیک در سال 1993 توسط مرکز ملی برنامههای سوپرکامپیوتر که توسط مارک اندرسن راه اندازی شده بود مورد انتقاد شدید قرار گرفت. قبل از عرضه موزائیک، گرافیک و متن در صفحات وب از یکدیگر جدا بودند و در پروتکلهای اینترنتی قبلی مانند پروتکل گوفر و مرور اطلاعات ناحیه وسیع گرافیک کاربرد زیادی نداشت. واسط کاربر گرافیکی موزائیک وب را به مشهورترین پروتکل اینترنتی تبدیل کرد.
اجزاء وب
تار گیتیگستر ترکیبی از چهار عنصر اصلی است:
hypertext یا بسامتن: فرمتی از اطلاعات که به افراد اجازه می دهد تا در محیط کامپیوتر با استفاده از ارتباط داخلی موجود میان دو متن از بخشی از سند به بخش دیگری از آن یا حتی سند دیگری مراجعه کنند و به اطلاعات جدیدی دسترسی پیدا کند.
URL: شناسههای منحصر به فردی که برای مشخص کردن محل حضور اطلاعات موجود روی شبکه (فایل کامپیوتری، سند یا منابع دیگر) به کار می روند.
مدل Client-Server یا مشتری-خدمتگزار: سیستمی که در آن نرمافزار یا کامپیوتر مشتری از نرمافزار یا کامپیوتر خدمتگزار تقاضای دریافت منابع اطلاعاتی مانند داده یا فایل می کند.
markup language یازبان علامتگذاری: کاراکترها یا کدهای موجود در متن که ساختار متن وب معنایی را مشخص می کنند.
معماری سیستم وب
کلاً از دیدگاه فنی سیستم وب در دو بخش سازماندهی می شود:
برنامه سمت سرویس دهنده ی وب و برنامه سمت مشتری وب
پایگاه اطلاعاتی توزیع شده از صفحات ابرمتن، فایل های داده مثل صدا، تصویر و بطور کل هر منبع
صفحه وب چیزی نیست مگر یک فایل متنی بسیار ساده که با یکی از زبان های نشانه گذاری ابرمتنی مثل HTML، XHTML ، DHTML یا XML تدوین می شود. کاری که مرورگر به عنوان مشتری وب انجام می دهد آن است که تقاضای دریافت یکی از صفحات یا فایل ها را در قالب قراردادی استاندارد (به نام پروتکل HTTP) به سمت سرویس دهنده ارسال کند. در سمت مقابل سرویس دهنده ی وب این تقاضا را پردازش کرده و در صورت امکان، فایل مورد نظر را برای مرورگر ارسال می کند. مرورگر پپس از دریافت فایل ابرمتنی ، آن را تفسیر کرده و به صورت صفحه آرایی شده روی خروجی نشان می دهد. اگر فایل ابرمتنی در جایی به فایل صدا یا تصویر پیوند خورده باشد آن ها نیز توسط مرورگر تقاضا شده و پس از دریافت در جای خود قرار می گیرند.
وب چگونه عمل میکند
برای مشاهده یک صفحه وب یا دیگر منابع اطلاعاتی روی تور جهان گستر معمولاً URL صفحه را در یک مرورگر وب وارد میکنیم و یا لینک ابر متن مربوط با آن صفحه یا منبع را انتخاب میکنیم. اولین گام که در پشت پرده انجام میشود اختصاص یک آدرس IP به بخش سرور URL است که توسط پایگاه داده توزیع شده اینترنت صورت میگیرد که به آن DNS میگویند.
در مرحله بعد یک درخواست HTTP به مرور وب در آن آدرس IP ارسال میشود و درخواست مشاهده صفحه ارائه میگردد. در صورتی که یک صفحه معمولی در خواست شده باشد متن HTML، تصاویر گرافیکی یا هر فایل دیگری که مربوط به آن صفحه است در اختیار مشتری (مرورگر وب) قرار میگیرد. سپس مرورگر وب صفحه HTML، و دیگر فایلهای دریافت شده را ترجمه میکند. در نهایت "صفحه" مورد نظر مشتری در اختیار وی قرار میگیرد.
در تور جهان گستر، یک برنامه مشتری که عامل کاربر نام دارد منابع اطلاعاتی مانند صفحات وب یا فایلهای کامپیوتری را با استفاده از URL از وب در خواست میکند. اگر عامل کاربر نوعی مرورگر وب باشد، اطلاعات را روی مانیتور نشان میدهد. کاربر میتواند با دنبال کردن لینکهای موجود در صفحه وب به بقیه منابع موجود روی تور جهان گستر دسترسی پیدا کند. همچنین میتوان با پرکردن فرمهای HTML و تحویل این فرمهای وب میتوان اطلاعات را بر اساس پروتکل انتقال ابرمتن به سرور وب برگرداند تا از آن ذخیره شده یا پردازش شوند. صفحات وب در کنار هم قرار گرفته و وبسایتها را می سازند. عمل دنبال کردن ابرلینک از یک وب سایت به وب سایت دیگر را "مرور وب" یا " گشت و گذار" وب مینامند.
اصطلاح "گشت و گذار در اینترنت" اولین بار توسط جین آرمور پولی که یک کتابدار بود در مقاله یا به نام "Surfing the INTERNET" مطرح شد که ژوئن سال 1992 در "بولتن کتابخانه ویلسن" در دانشگاه مینوستا چاپ شد. اگر چه پولی مستقلاً از این کلمه استفاده کرد اما در یوزنتهای مربوط به سالهای 1991 و 1992 این کلمه دیده میشود و حتی عدهای میگویند که این کلمه در مجمع هکرها در دو سال قبل از آن به صورت شفاهی عنوان شده بود. پولی در تاریخ اینترنت به مادر اینترنت معروف است.
اغلب صفحات وب شامل ابر لینکهایی هستند که به صفحات و منابع اطلاعاتی مرتبط با آنها مانند صفحات دانلود، اسناد منابع، تعاریف و غیره منتهی میشوند. چنین مجموعهای از منابع مفید و مرتبط با هم توسط لینکهای ابر متن به یکدیگر متصل شدهاند را "وب" اطلاعات مینامند. قرار دادن این مجموعه منابع روی اینترنت شبکهای را تولید کرد که در اوایل دهه 1990 توسط تیم برنرز لی، " تور جهان گستر" نامیده شد.
عملکرد برنامه ی سرویس دهنده و مشتری وب
در سمت سرویس دهنده ی وب، پروسه ای وجود دارد که دائماً به پورت شماره 80 گوش می دهد و منتظر تقاضای برقراری اتصال توسط مشتریان می ماند. دقت کنید که برنامه ی سرویس دهنده از سوکت های نوع استریم استفاده می کند و اتصال از نوع TCP است. فرامین و داده هایی که بین سرویس دهنده و مرورگر وب مبادله می شوند تماماً متنی هستند.(همانند سیستم پست الکترونیکی) پس از آنکه ،ژ\ بین برنامه ی سویس دهنده و مشتری برقرار شد برنامه ی مشتری حق دارد یک یا چندین تقاضا بفرستد و این تقاضا ها باید در قالب استاندارد HTTP باشد. سرویس دهنده، یکایک تقاضا ها را دریافت و پردازش و در صورت امکان آن ها را اجرا می کند.
کش (cache)
اگر کاربر پس از مدت زمان اندکی به سرعت به صفحه وب برگردد احتمال دارد که اطلاعات از سرور وب اصلی بازیابی نشوند. به طور پیش فرض، مرورگرهای همه منابع وب را روی هارد کامپیوتر مشتری، مخفی (کش) میکنند. مرورگر درخواست HTML را تنها در صورتی که نیاز به روزآوری دادههای قبلی وجود داشته باشد ارسال میکند. در غیر این صورت از دادههای کش استفاده میشود.
این عمل باعث کاهش ترافیک شبکه اینترنت میشود. تصمیمگیری در مورد انقضای زمان استفاده از منبع تصویر، CSS، فایل جاوا اسکریپت و همچنین HTML به صورت مستقل انجام میگیرد. بنابراین حتی در برخی از سایتهای با محتوای پویا، بسیاری از منابع اطلاعاتی اصلی فقط در هر بار مراجعه عرضه میشوند. بهتر است طراحان وب سایت همه فایلهای جاوا اسکریپت و CSS را درون تعدادی فایل سایت جمعآوری کنند تا کش های کاربران بتوانند از آنها استفاده کنند و بدین ترتیب زمان دانلود شدن صفحه و تعداد مراجعات به سرور کاهش یابد.
همچنین بخشهای دیگری از اینترنت میتوانند محتوای وب را کش (مخفی) کنند. یکی از بهترین این اجزاء دیوارهای آتش است که در شرکتها و محیطهای دانشگاهی کاربرد دارد و منابع وب درخواست شده توسط یک کاربر را برای همه کاربران کش میکند. با وجود آن که این قابلیتها در اغلب مرورگرهای وب دیده میشود طراحان صفحات وب میتوانند عناوین HTTP که توسط کاربر درخواست شده را کنترل کنند تا صفحات در مواردی که لازم نیست در کش ذخیره نشوند؛ مثلاً صفحات خبری و بانکها.
بدین ترتیب میتوانیم بین اعمال "دریافت" و "ارسال" HTTP تفاوت قائل شویم. در صورتی که همه شرایط محقق شود، دادههایی که توسط فرمان دریافت (GET) درخواست شدهاند میتوانند در کش ذخیره شوند در حالی که دادههای به دست آمده پس از ارسال (posting) اطلاعات به سرور در کش ذخیره نمیشوند.
وبمستر به طراحان وب، توسعه دهندگان وب، وبلاگ نویسان، مدیران وبسایت و تمامی افرادی که در مدیریت یک وبگاه نقش دارند گفته میشود.
وب جهانگستر
جهان وب٬
وب جهانگستر٬ تار گیتیگستر٬ یا به طور ساده وب (به انگلیسی: World Wide Web) یک سامانهٔ اطلاعاتی از پروندههای ابرمتنی متصلبههم است که از طریق شبکهٔ جهانی اینترنت قابل دسترسی هستند. بهکمک یک مرورگر وب میتوان صفحات وب (که شامل متن، تصویر، ویدیو و سایر محتویات چندرسانهای هستند) را مشاهده و بهکمک ابرپیوندها در میان آنها حرکتکرد. تیم برنرز لی، یک پژوهشگر علوم رایانه و کارمند موسسهٔ سرن
در نزدیکی ژنو، در ماه مارچ سال ۱۹۸۹ میلادی پیشنهاد اولیهٔ وب امروزی را مطرح کرد.پیشنهاد ارائهشده در ۱۹۸۹ قرار بود که یک سیستم ارتباطی برای موسسه سرن شود، اما برنرز لی بهزودی متوجهشد که این ایده قابلیت جهانیشدن را دارد.برنرز لی به همراه رابرت کایلیائو در سال ۱۹۹۰ میلادی این پیشنهاد را بهعنوان «پیوند و دسترسی به اطلاعات مختلف بهصورت تارنمایی از گرههایی که کاربران به دلخواه در میان آنها حرکت میکنند» ارائه دادند.برنرز لی در ماه و در ۷ اوت سال ۱۹۹۱ میلادی آنرا بهعنوان یک پروژه بر روی گروه خبری alt.hypertext منتشر کرد.
واژهٔ وب
واژهٔ وب (به معنی تار) در بسیاری از ترکیبات «اینترنتی» میآید. کم کم «وب» بهعنوان واژهٔ بینالمللی جا افتاده و به منظورهای مختلفی به کار میرود. این واژه معمولاً به صورت اشتباه به جای اینترنت به کار میرود اما وب در حقیقت یکی از خدماتی است که روی اینترنت ارایه میشود (مانند پست الکترونیکی).
همچنین، وب مخفف کلمه وبسایت (website) است. سایت یعنی مکان و منظور از وبسایت صفحات مرتبط است. در پارسی واژهٔ تارنما جایگزین وبسایت شده است.
تاریخچه
ایده اولیه در مورد تارِ گیتیگستر به سال ۱۹۸۰ (میلادی) برمیگردد. زمانی که در شهر سرن سوئیس، تیم برنرز لی شبکه ENQUIRE را ساخت (که به "Enquire Within Upon Everqthing CSS" اشاره داشت و همنام کتابی بود که وی از جوانی خود به یاد داشت. اگرچه آنچه وی ساخت با وب امروزی تفاوتهای زیادی دارد اما ایده اصلی در آن گنجانده شده است (و حتی برخی از این ایدهها در پروژه بعدی برنرزلی پس از WWW یعنی وب معنایی به کار گرفته شد).
در مارس 1989، برنرزلی یک پیشنهاد را نوشت که به ENQUIRE اشاره داشت و یک سیستم اطلاعاتی پیشرفته را توصیف میکرد. وی با کمک رابرت کایلا، پیشنهاد طراحی تور جهان گستر را در 12 نوامبر 1990 ارائه کرد. اولین مرور وب جهان توسط برنرزلی با عنوانNEXTcube مورد استفاده قرار گرفت و وی اولین مرورگر وب و تور جهان گستر را در سال 1990 طراحی کرد.
در کریسمس 1990، برنرز لی همه ابزارهای لازم برای کار با وب را فراهم کرد
در 6 آگوست 1991 وی خلاصهای از پروژه تور جهان گستر را در گروه خبری alt.hypertext پست کرد. در همین روز وب به عنوان یک خدمات عمومی روی اینترنت ارائه شد. مفهوم مهم ابر متن در پروژههای قدیمیتر مربوط به دهه 1960 مانند Project Xanadu مربوط به تد نلسون و NLS (سیستم آنلاین) مربوط به داگلاس انگلبارت مطرح شد.
موفقیت برنرزلی در ایجاد ارتباط بین ابر متن و اینترنت بود. در کتاب "بافتن تور" وی اذعان میکند که بارها از امکان برقراری ارتباط میان دو تکنولوژی صحبت کرده بود اما چون کسی به حرفهایش توجه نکرد وی خودش دست به کار شد و پروژه را به سرانجام رساند. وی در سیستم خود شاخصهای منحصر به فرد جهانی برای شناسایی منابع موجود روی وب و دیگر مکانها در نظر گرفت و آنها را شناسه منبع یکپارچه نامید.
تور جهان گستر با بقیه سیستمهای ابر متنی موجود تفاوتهایی داشت:
WWW به لینکهای یک طرفه نیاز داشت و نه دوطرفه بنابراین فرد میتوانست بدون آن که از جانب مالک منبع واکنشی صورت گیرد به منبع دسترسی پیدا کند. همچنین ابر متن مشکل پیادهسازی سرورهای وب و مرورگرها (در مقایسه با سیستمها قبلی) را برطرف کرد اما در مقابل مشکل زمان در لینکهای قطع شده را ایجاد کرد.
تور جهان گستر بر خلاف سیستمهای قبلی مانند ابر کارت غیر انحصاری بود و این امکان را فراهم میکرد که سرورها و مرورگرهای مستقلی را ایجاد کرده و بدون هیچ محدودیتی آنها را به شبکه وصل کرد.
در 30 آوریل سال ۱۹۹۳ (میلادی)، CERN اعلام کرد که تور جهان گستر به صورت رایگان برای همه افراد قابل دسترسی است. این موضوع دو ماه پس از اعلام رایگان نبودن پروتکل گوفر مطرح میشد و در نتیجه تمایل به وب به شدت افزایش یافت. قبل از آن مرورگر وب معروفی به نامViolaWWW وجود داشت که بر اساس ابر کارت کار میکرد. نسخه گرافیکی تور جهان گستر با نام مرورگر وب موزائیک در سال 1993 توسط مرکز ملی برنامههای سوپرکامپیوتر که توسط مارک اندرسن راه اندازی شده بود مورد انتقاد شدید قرار گرفت. قبل از عرضه موزائیک، گرافیک و متن در صفحات وب از یکدیگر جدا بودند و در پروتکلهای اینترنتی قبلی مانند پروتکل گوفر و مرور اطلاعات ناحیه وسیع گرافیک کاربرد زیادی نداشت. واسط کاربر گرافیکی موزائیک وب را به مشهورترین پروتکل اینترنتی تبدیل کرد.
اجزاء وب
تار گیتیگستر ترکیبی از چهار عنصر اصلی است:
hypertext یا بسامتن: فرمتی از اطلاعات که به افراد اجازه می دهد تا در محیط کامپیوتر با استفاده از ارتباط داخلی موجود میان دو متن از بخشی از سند به بخش دیگری از آن یا حتی سند دیگری مراجعه کنند و به اطلاعات جدیدی دسترسی پیدا کند.
URL: شناسههای منحصر به فردی که برای مشخص کردن محل حضور اطلاعات موجود روی شبکه (فایل کامپیوتری، سند یا منابع دیگر) به کار می روند.
مدل Client-Server یا مشتری-خدمتگزار: سیستمی که در آن نرمافزار یا کامپیوتر مشتری از نرمافزار یا کامپیوتر خدمتگزار تقاضای دریافت منابع اطلاعاتی مانند داده یا فایل می کند.
markup language یازبان علامتگذاری: کاراکترها یا کدهای موجود در متن که ساختار متن وب معنایی را مشخص می کنند.
معماری سیستم وب
کلاً از دیدگاه فنی سیستم وب در دو بخش سازماندهی می شود:
برنامه سمت سرویس دهنده ی وب و برنامه سمت مشتری وب
پایگاه اطلاعاتی توزیع شده از صفحات ابرمتن، فایل های داده مثل صدا، تصویر و بطور کل هر منبع
صفحه وب چیزی نیست مگر یک فایل متنی بسیار ساده که با یکی از زبان های نشانه گذاری ابرمتنی مثل HTML، XHTML ، DHTML یا XML تدوین می شود. کاری که مرورگر به عنوان مشتری وب انجام می دهد آن است که تقاضای دریافت یکی از صفحات یا فایل ها را در قالب قراردادی استاندارد (به نام پروتکل HTTP) به سمت سرویس دهنده ارسال کند. در سمت مقابل سرویس دهنده ی وب این تقاضا را پردازش کرده و در صورت امکان، فایل مورد نظر را برای مرورگر ارسال می کند. مرورگر پپس از دریافت فایل ابرمتنی ، آن را تفسیر کرده و به صورت صفحه آرایی شده روی خروجی نشان می دهد. اگر فایل ابرمتنی در جایی به فایل صدا یا تصویر پیوند خورده باشد آن ها نیز توسط مرورگر تقاضا شده و پس از دریافت در جای خود قرار می گیرند.
وب چگونه عمل میکند
برای مشاهده یک صفحه وب یا دیگر منابع اطلاعاتی روی تور جهان گستر معمولاً URL صفحه را در یک مرورگر وب وارد میکنیم و یا لینک ابر متن مربوط با آن صفحه یا منبع را انتخاب میکنیم. اولین گام که در پشت پرده انجام میشود اختصاص یک آدرس IP به بخش سرور URL است که توسط پایگاه داده توزیع شده اینترنت صورت میگیرد که به آن DNS میگویند.
در مرحله بعد یک درخواست HTTP به مرور وب در آن آدرس IP ارسال میشود و درخواست مشاهده صفحه ارائه میگردد. در صورتی که یک صفحه معمولی در خواست شده باشد متن HTML، تصاویر گرافیکی یا هر فایل دیگری که مربوط به آن صفحه است در اختیار مشتری (مرورگر وب) قرار میگیرد. سپس مرورگر وب صفحه HTML، و دیگر فایلهای دریافت شده را ترجمه میکند. در نهایت "صفحه" مورد نظر مشتری در اختیار وی قرار میگیرد.
در تور جهان گستر، یک برنامه مشتری که عامل کاربر نام دارد منابع اطلاعاتی مانند صفحات وب یا فایلهای کامپیوتری را با استفاده از URL از وب در خواست میکند. اگر عامل کاربر نوعی مرورگر وب باشد، اطلاعات را روی مانیتور نشان میدهد. کاربر میتواند با دنبال کردن لینکهای موجود در صفحه وب به بقیه منابع موجود روی تور جهان گستر دسترسی پیدا کند. همچنین میتوان با پرکردن فرمهای HTML و تحویل این فرمهای وب میتوان اطلاعات را بر اساس پروتکل انتقال ابرمتن به سرور وب برگرداند تا از آن ذخیره شده یا پردازش شوند. صفحات وب در کنار هم قرار گرفته و وبسایتها را می سازند. عمل دنبال کردن ابرلینک از یک وب سایت به وب سایت دیگر را "مرور وب" یا " گشت و گذار" وب مینامند.
اصطلاح "گشت و گذار در اینترنت" اولین بار توسط جین آرمور پولی که یک کتابدار بود در مقاله یا به نام "Surfing the INTERNET" مطرح شد که ژوئن سال 1992 در "بولتن کتابخانه ویلسن" در دانشگاه مینوستا چاپ شد. اگر چه پولی مستقلاً از این کلمه استفاده کرد اما در یوزنتهای مربوط به سالهای 1991 و 1992 این کلمه دیده میشود و حتی عدهای میگویند که این کلمه در مجمع هکرها در دو سال قبل از آن به صورت شفاهی عنوان شده بود. پولی در تاریخ اینترنت به مادر اینترنت معروف است.
اغلب صفحات وب شامل ابر لینکهایی هستند که به صفحات و منابع اطلاعاتی مرتبط با آنها مانند صفحات دانلود، اسناد منابع، تعاریف و غیره منتهی میشوند. چنین مجموعهای از منابع مفید و مرتبط با هم توسط لینکهای ابر متن به یکدیگر متصل شدهاند را "وب" اطلاعات مینامند. قرار دادن این مجموعه منابع روی اینترنت شبکهای را تولید کرد که در اوایل دهه 1990 توسط تیم برنرز لی، " تور جهان گستر" نامیده شد.
عملکرد برنامه ی سرویس دهنده و مشتری وب
در سمت سرویس دهنده ی وب، پروسه ای وجود دارد که دائماً به پورت شماره 80 گوش می دهد و منتظر تقاضای برقراری اتصال توسط مشتریان می ماند. دقت کنید که برنامه ی سرویس دهنده از سوکت های نوع استریم استفاده می کند و اتصال از نوع TCP است. فرامین و داده هایی که بین سرویس دهنده و مرورگر وب مبادله می شوند تماماً متنی هستند.(همانند سیستم پست الکترونیکی) پس از آنکه ،ژ\ بین برنامه ی سویس دهنده و مشتری برقرار شد برنامه ی مشتری حق دارد یک یا چندین تقاضا بفرستد و این تقاضا ها باید در قالب استاندارد HTTP باشد. سرویس دهنده، یکایک تقاضا ها را دریافت و پردازش و در صورت امکان آن ها را اجرا می کند.
کش (cache)
اگر کاربر پس از مدت زمان اندکی به سرعت به صفحه وب برگردد احتمال دارد که اطلاعات از سرور وب اصلی بازیابی نشوند. به طور پیش فرض، مرورگرهای همه منابع وب را روی هارد کامپیوتر مشتری، مخفی (کش) میکنند. مرورگر درخواست HTML را تنها در صورتی که نیاز به روزآوری دادههای قبلی وجود داشته باشد ارسال میکند. در غیر این صورت از دادههای کش استفاده میشود.
این عمل باعث کاهش ترافیک شبکه اینترنت میشود. تصمیمگیری در مورد انقضای زمان استفاده از منبع تصویر، CSS، فایل جاوا اسکریپت و همچنین HTML به صورت مستقل انجام میگیرد. بنابراین حتی در برخی از سایتهای با محتوای پویا، بسیاری از منابع اطلاعاتی اصلی فقط در هر بار مراجعه عرضه میشوند. بهتر است طراحان وب سایت همه فایلهای جاوا اسکریپت و CSS را درون تعدادی فایل سایت جمعآوری کنند تا کش های کاربران بتوانند از آنها استفاده کنند و بدین ترتیب زمان دانلود شدن صفحه و تعداد مراجعات به سرور کاهش یابد.
همچنین بخشهای دیگری از اینترنت میتوانند محتوای وب را کش (مخفی) کنند. یکی از بهترین این اجزاء دیوارهای آتش است که در شرکتها و محیطهای دانشگاهی کاربرد دارد و منابع وب درخواست شده توسط یک کاربر را برای همه کاربران کش میکند. با وجود آن که این قابلیتها در اغلب مرورگرهای وب دیده میشود طراحان صفحات وب میتوانند عناوین HTTP که توسط کاربر درخواست شده را کنترل کنند تا صفحات در مواردی که لازم نیست در کش ذخیره نشوند؛ مثلاً صفحات خبری و بانکها.
بدین ترتیب میتوانیم بین اعمال "دریافت" و "ارسال" HTTP تفاوت قائل شویم. در صورتی که همه شرایط محقق شود، دادههایی که توسط فرمان دریافت (GET) درخواست شدهاند میتوانند در کش ذخیره شوند در حالی که دادههای به دست آمده پس از ارسال (posting) اطلاعات به سرور در کش ذخیره نمیشوند.
ساعت : 11:00 am | نویسنده : admin
|
مطلب بعدی