درس مهندسی اینترنت — مفاهیم پایه به زبان ساده + منابع، کتاب و فیلم آموزشی
درس مهندسی اینترنت یکی از دروس تخصصی رشته کامپیوتر در مقطع کارشناسی محسوب میشود. تمرکز اصلی این درس بر «مهارتها و الگوهای توسعه نرمافزارها و کاربردهای تحت وب» است. در حال حاضر، با گسترش چشمگیر فناوری اینترنت در ایران و جهان، میتوان مدعی شد که درس مهندسی اینترنت یکی از مهمترین دروس رشته کامپیوتر به حساب میآید. در این مطلب، کلیه مسائل و نکات لازم پیرامون درس مهندسی اینترنت ارائه شده است. ابتدا به معرفی این درس و نکات قابل توجه در مورد آن پرداخته و سپس با ذکر سرفصلها و رئوس مقالات، شرح مختصر و آموزش ابتدایی درباره هر یک از این مباحث به بیان ساده ارائه شده است.
درس مهندسی اینترنت یکی از دروس تخصصی رشته کامپیوتر است که میتوان موضوع اصلی آن را توسعه برنامههای کاربردی تحت وب دانست. امروزه اینترنت بخش جدایی ناپذیری از زندگی اکثر افراد جامعه به حساب میآید. بر خلاف گذشته، بسیاری از کارها و امور روزمره به وسیله اینترنت انجام میشود که این مسئله باعث افزایش سطح رفاه و کیفیت زندگی در جامعه شده است. به واسطه رشد چشمگیر اینترنت و کاربردهای مختلف آن، بازار کار گستردهای در این حوزه به وجود آمده است.
بنابراین، یادگیری مفاهیم و موضوعات حوزه توسعه وب و مهندسی اینترنت اهمیت بسیار زیادی دارد. به طور قطع، دانشجویان رشتههای کامپیوتر و همه افرادی که به یادگیری درس مهندسی اینترنت میپردازند، باید به این مبحث فراتر از یک درس دانشگاهی توجه نشان دهند. هدف از ارائه این مطلب، آشنایی با درس مهندسی اینترنت و تسهیل در امر آموزش و یادگیری این درس است. در ادامه، به معرفی درس مهندسی اینترنت پرداخته شده است.
درس مهندسی اینترنت چیست؟
همانطور که در ابتدا بیان شد، درس مهندسی اینترنت یکی از درسهای مهم مقطع کارشناسی رشته کامپیوتر به حساب میآید. این درس سه واحدی، جزء دروس تخصصی رشتههای مهندسی کامپیوتر گرایش نرمافزار و مهندسی فناوری اطلاعات است. درس مهندسی اینترنت برای دانشجویان گرایش سختافزار در رشته مهندسی کامپیوتر جزء دروس اختیاری به حساب میآید.
همچنین باید گفت که درس مهندسی اینترنت در فهرست دروس رشته علوم کامپیوتر قرار ندارد. در ادامه، توضیحات بیشتری پیرامون درس مهندسی اینترنت ارائه و به سوالات رایج درباره این درس پاسخ داده شده است.
درس مهندسی اینترنت درباره چیست؟
موضوع اصلی درس مهندسی اینترنت پیرامون برنامهنویسی و توسعه نرمافزارها و کاربردهای تحت وب است که امروزه با نام وباپلیکیشن (Web Application) نیز شناخته میشوند.
درس مهندسی اینترنت چه اهدافی را دنبال میکند؟
یکی از اهداف درس مهندسی اینترنت این است که دانشجویان رشته کامپیوتر با مقدمات برنامهنویسی و توسعه وب آشنایی لازم را کسب کنند. همچنین، به دست آوردن شناخت لازم پیرامون الگوهای رایج در توسعه معماری و طراحی برنامههای تجاری تحت وب، یکی دیگر از اهداف این درس محسوب میشود. آشنایی با الگوها، روشها و مهارتهای مهم در توسعه وب نیز از جمله مفاد مهم این درس به حساب میآیند.
لازم به توضیح است که فناوریها، ابزارها و بسترهای متفاوت و مختلفی برای توسعه وب وجود دارد و به همین دلیل، درس مهندسی اینترنت در دانشگاههای مختلف با تکیه بر روشها و زبانهای برنامهنویسی متفاوتی ارائه میشود. به عنوان مثال، میتوان این درس را با محوریت جاوا، جاوا اسکریپت یا PHP ارائه کرد. بنابراین، نحوه پیادهسازی مفاهیم و سرفصلهای این درس ممکن است بسته به دانشگاه و استاد مربوطه متفاوت باشد. در ادامه این بخش، به بررسی دلایل اهمیت درس مهندسی اینترنت پرداخته شده است.
چرا درس مهندسی اینترنت مهم است؟
درس مهندسی اینترنت ارتباط نزدیکی با صنعت و بازار کار دارد. همانطور که بیان شد، با توجه به گسترش چشمگیر کاربردهای وب در ایران و جهان، بازار کار بسیار وسیعی برای این حوزه وجود دارد. بنابراین، درس مهندسی اینترنت میتواند نقطه پرتابی برای دانشجویان به این بازار کار گسترده باشد. همچنین، برای آن دسته از افرادی که قصد دارند شرکتهای استارتاپی تاسیس کنند و به تولید اپلیکیشنهای تجاری بزرگ علاقهمند هستند، درس مهندسی اینترنت میتواند بسیار کاربردی و مفید باشد.
باید به این نکته اشاره داشت که انتخاب فناوری مناسب و بهروز برای توسعه وب و ساخت وباپلیکیشنها و کاربردهای تجاری بسیار حائز اهمیت است. به طبع، برخی از مهارتها و مفاهیم پایه در این حوزه مشترک و یکسان هستند اما فناوری و بستر توسعه باید بهروز و کاربردی باشد. ابزارهای جدید امکانات بیشتری ارائه میدهند و در نتیجه فرآیند تولید و ساخت با استفاده از آنها بسیار سادهتر خواهد بود. در ادامه، در خصوص نامهای مختلف این درس در سطح جهان بحث شده است.
درس مهندسی اینترنت با چه نامی در سطح جهان شناخته میشود؟
درس مهندسی اینترنت در دانشگاههای مختلف، با نامها و عناوین متفاوتی ارائه میشود. از جمله برخی از این عناوین میتوان به موارد زیر اشاره کرد:
- Internet Engineering (مهندسی اینترنت)
- Enterprise Application Development (توسعه اپلیکیشن تجاری)
- Web Programming (برنامهنویسی وب)
- Web Development (توسعه وب)
از جمله دانشگاههایی که تاکنون این درس در آنها با نام Internet Engineering تدریس شده، میتوان به دانشگاه Kent State ،Clorado و ویرجینیا در ایالات متحده اشاره کرد. حتی در برخی دانشگاهها مهندسی اینترنت در کنار مهندسی کامپیوتر، به صورت یک رشته دانشگاهی در مقطع کارشناسی و کارشناسی ارشد نیز ارائه شده است. همین مسئله بیانگر اهمیت این درس در رشته مهندسی کامپیوتر است.
همچنین، درس مهندسی اینترنت در دانشگاههایی نظیر دانشگاه بینالمللی آتلانتیک در جزایر هاوایی، دانشگاه Albany، دانشگاه Houston و در بسیاری از بسترهای آموزش آنلاین با نام «Enterprise Application Development» شناخته میشود. علاوه بر این، میتوان دورهها و دروس ارائه شده با عنوان «Web Programming» یا «Web Development» را نیز معادل درس مهندسی اینترنت در نظر گرفت. به عنوان مثال، دوره آنلاین CS50 دانشگاه هاروارد با عنوان «Programming with Python and JavaScript» در پلتفرم آموزش آنلاین edX به صورت رایگان در دسترس است.
مباحث مطرح شده در درس مهندسی اینترنت چه هستند؟
همانطور که بیان شد، مباحث و موضوعات ارائه شده در قالب درس مهندسی متفاوت است. اما برخی از موضوعات مشترک این درس که در اکثر دانشگاهها تدریس میشوند شامل مبانی توسعه وب، راهبردهای کلیدی در توسعه وب و در نهایت استفاده از یک بستر و ابزار خاص برای پیادهسازی عملی مفاهیم و رویکردهای تئوری است.
در ادامه، هر یک از موضوعات اصلی درس مهندسی اینترنت با جزئیات بیشتری فهرست شده است.
- مفاهیم و مهارتهای مقدماتی: شبکههای کامپیوتری، اینترنت چیست؟، سرویسهای وب، URL ،HTTP ،WWW، وب سرور، وب سایت، مرورگر، ISP ،HTML، هایپرلینک، DNS چیست و سایر موارد
- راهبردهای کلیدی در توسعه وب: الگوی معماری استفاده شده (MVC)، لایهبندی، کنترل همروندی، الگوها و پروتکلهای مختلف و سایر موارد
- بسترهای پیادهسازی: JavaScript ،PHP، پایتون، داتنت (ASP.NET) و سایر موارد
اکنون، دید کلی نسبت به درس مهندسی اینترنت حاصل شده و بهتر است در ادامه به بحث پیرامون پیش نیازهای درس مهندسی اینترنت پرداخته شود.
پیش نیازهای درس مهندسی اینترنت چه هستند؟
درس شبکههای کامپیوتری پیشنیاز درس مهندسی اینترنت است و درس پایگاه داده نیز همنیاز این درس به حساب میآید. درس سیستم عامل پیشنیاز درس شبکههای کامپیوتری است. همچنین، درس ساختمان دادهها، پیشنیاز درس پایگاه داده و سیستم عامل به شمار میرود.
یکی دیگر از پیشنیازهای درس سیستمهای عامل، درس معماری کامپیوتر است. پیشنیازهای درس ساختمان دادهها نیز دروس برنامهسازی پیشرفته و ریاضیات گسسته هستند. در نهایت، پیشنیاز درس معماری کامپیوتر، درس مدارهای منطقی است. به طور کلی، برای اینکه بتوان درس مهندسی اینترنت را انتخاب کرد، در صورتی که درس پایگاه داده گذرانده نشده باشد، باید به عنوان همنیاز انتخاب شده و علاوه بر آن، دروس زیر نیز باید گذرانده شده باشند:
- شبكههای كامپیوتری
- سيستمهای عامل
- معماری کامپیوتر
- ساختمان دادهها
- مدارهای منطقی
- رياضيات گسسته
- برنامهسازی پيشرفته
- مبانی كامپيوتر و برنامهسازی
با مشخص شدن پیشنیازهای درس مهندسی اینترنت، اکنون در ادامه مطلب به معرفی منابع این درس پرداخته شده است.
منابع درس مهندسی اینترنت کدامند؟
با توجه به اینکه بازه مباحث قابل ارائه و آموزش در درس مهندسی اینترنت بسیار گسترده است، منابع مختلفی برای آموزش و یادگیری این درس وجود دارد. در دانشگاههای مختلف منابع متفاوتی برای آموزش این درس معرفی شده است و بسیاری از اساتید به یک منبع خاص به عنوان مرجع اصلی درس مهندسی اینترنت بسنده نکرده و برای هر موضوع منابع مختلفی را معرفی میکنند.
با در نظر داشتن این موضوع، در این بخش از مطلب درس مهندسی اینترنت ابتدا کتابهای مربوط به این درس به دو زبان فارسی و انگلیسی و سپس، سایر منابع معرفی شدهاند.
منابع فارسی درس مهندسی اینترنت
از جمله منابع فارسی مهم این درس میتوان به «کتاب مهندسی اینترنت عباسعلی رضایی» و «کتاب اصول مهندسی اینترنت دکتر احسان ملکیان» اشاره کرد. در زمان تدوین این مطلب، کتاب مهندسی اینترنت عباسعلی رضایی منبع رسمی این درس در دانشگاه پیامنور است. همچنین، از جمله منابع قدیمی این درس، میتوان «کتاب مهندسی اینترنت مهندس بهزاد اکبری» را نام برد. در ادامه به برخی از منابع انگلیسی این درس اشاره شده است.
منابع انگلیسی درس مهندسی اینترنت
در این بخش از معرفی منابع درس مهندسی اینترنت برخی از منابع انگلیسی این درس ارائه شده است. در ادامه، منابع رسمی معرفی شده توسط وزارت علوم برای این درس فهرست شده است:
- Patterns of Enterprise Application Architecture | کتاب الگوهای معماری برنامههای کاربردی تجاری | مارتین فاولر (Martin Fowler) | 1382
- Core Servlets and Javaserver Pages: Advanced Technologies (2nd Edition) | سرولتهای کلیدی و صفحات جاوا سرور: فناوریهای پیشرفته (چاپ دوم) | مارتی هال (Marty Hall) | ۱۳۸۲
- Security Strategies in Web Applications and Social Networking | راهبردهای امنیتی در وباپلیکیشنها و شبکههای اجتماعی | مایک هاروود (Mike Harwood) | ۱۳۸۹
همچنین، از جمله برخی از سایر منابع کاربردی میتوان به کتابهای زیر اشاره کرد:
- Design Patterns: Elements of Reusable Object-Oriented Software | الگوهای طراحی: عناصر نرمافزار شیگرای قابل استفاده مجدد | اریک گاما (Erich Gamma)، ریچارد هلم (Richard Helm)، رالف جانسون (Ralph Johnson) و جان ویسایدس (Jphn Vissides) | 1373
- Software Engineering for Internet Applications | مهندسی نرمافزار در کاربردهای اینترنت | ایو اندرسون (Eve Anderson)، فیلیپ گریناسپان (Philip Greenspun) و اندرو گرامت (Andrew Grumet) | 1385
- Internet & Intranet Engineering | مهندسی اینترنت و اینترانت | دانیال مینولی (Daniel Minoli) | ۱376
- Hands-On Enterprise Application Development with Python: Design Data-intensive Application with Python 3 | آموزش عملی توسعه برنامه کاربردی تجاری با پایتون: طراحی اپلیکیشن با دادههای حجیم با پایتون ۳ | ساورا بادوار (Saurabh Badhwar) | 1397
- Practical Enterprise Application Development | توسعه کاربردی اپلیکیشن تجاری | Francesco Marchioni (فرانچسکو مارچیونی) | ۱۳۹۸
- Web Development with Node and Express: Leveraging the JavaScript Stack | توسعه وب با Node و Express: با استفاده از JavaScript Stack | ایتان براون (Ethan Brown) | ۱۳۹۳
- Professional Java for Web Applications | راهنمای حرفهای جاوا برای کاربردهای وب | نیکولاس ویلیامز (Nicholas S. Williams) | ۱۳۹۳
در ادامه منابع کاربردی برای درس مهندسی اینترنت و دورههای آموزش آنلاین به زبان اصلی معرفی شده است.
آموزش درس مهندسی اینترنت
همانطور که بیان شد، هدف آموزش درس مهندسی اینترنت نباید تنها گذراندن این درس و کسب نمره قبولی یا حتی کسب نمره برتر باشد، بلکه این درس باید برای علاقهمندان و دانشجویان با انگیزه به عنوان نقطه شروع و اساس ورود به بازار کار و صنعت وب در نظر گرفته شود.
بدین سبب، در این بخش از مطلب درس مهندسی اینترنت به آموزش مباحث و موضوعات کلیدی و کاربردی این درس پرداخته و منابع آموزشی متعددی مرتبط نیز معرفی شدهاند تا دانشجویان بتوانند ضمن یادگیری مباحث و کسب آمادگی کافی برای آزمون این درس، با فناوریها و ابزارهای بهروز در این حوزه نیز آشنایی لازم را کسب کنند. در ادامه، سرفصلهای اصلی و مهم برای آموزش درس مهندسی اینترنت ارائه شده است.
سرفصل ها و رئوس مقالات درس مهندسی اینترنت
برای یادگیری درس مهندسی اینترنت آشنایی با مفاهیم شبکههای کامپیوتری به عنوان یک پیشنیاز ضرورت دارد. کاملاً واضح است که اینترنت از تعداد زیادی شبکههای کامپیوتری کوچکتر به وجود آمده است و عدم شناخت علم شبکههای کامپیوتری درست مثل این است که یک آشپز، شناختی نسبت به مواد اولیه پخت یک دستور غذایی نداشته باشد. بنابراین، اولین فصل درس مهندسی اینترنت به مفاهیم پایه و مروری بر درس شبکههای کامپیوتری اختصاص دارد.
پس از یادگیری مفاهیم مهم شبکههای کامپیوتری، نوبت به آموزش لایههای مختلف شبکه در اینترنت میرسد. البته این مباحث بیشتر در منابع فارسی به این شکل مطرح شدهاند. در خصوص موضوعاتی که در منابع مختلف مشترک هستند در بخشهای قبلی توضیحات لازم ارائه شده است. تعدادی از سرفصلهای درس مهندسی اینترنت در کتابهای فارسی به لایههای واسط شبکه، لایه IP و لایه انتقال در اینترنت اختصاص دارد. سایر سرفصلها نیز پیرامون مسیریابی، DNS، برنامهنویسی سوکت، پروتکلهای دسترسی و انتقال فایل، سازِکار پست الکترونیکی، WWW ،HTTP و مباحث امنیتی در اینترنت هستند.
فهرست مباحث وزارت علوم برای درس مهندسی اینترنت
بهروزترین فهرست مباحث موجود که توسط وزارت علوم برای این درس اعلام شده، به شرح زیر است:
- مقدمهای بر وب | پروتکل HTTP | طراحی صفحات وب
- ساخت وباپلیکیشنهای ساده (بر مبنای PHP ،Servlet یا داتنت)
- الگوی معماری سه لایه
- اتصال به پایگاه دادهها | نگاشت اشیا به رابطهها
- سازماندهی منطق دامنه (Logic Domain Organization)
- چارچوبها و الگوهای لایه نمایش در وب
- مدیریت نشستها (Sessions)
- کنترل همروندی در سیستمهای وب (Concurrency Control)
- سیستمهای وب توزیع شده (Distributed Web Systems)
- خوشهبندی و محاسبات ابری (Cluster and Cloud Computimg)
- امنیت وباپلیکیشنها
- ایجاد سیستمهای وب اتکاپذیر (Reliable Web Systems)
- کارایی سیستمهای مبتنی بر وب
- سرویسهای وب (Web Services)
با توجه به اینکه فهرست فوق بهروزترین فهرست مباحث درس مهندسی اینترنت محسوب میشود، در این مطلب به عنوان محور آموزش درس مهندسی اینترنت در نظر گرفته شده است. اما، بهتر است ابتدا نسبت به مرور مباحث مقدماتی و مفاهیم اصلی درس شبکههای کامپیوتری پرداخته شود.
مفاهیم کلیدی شبکههای کامپیوتری
با توجه به اینکه درس شبکههای کامپیوتری پیشنیازی برای درس مهندسی اینترنت به حساب میآید، در این بخش، مروری بر درس شبکه و مفاهیم کلیدی و مهم آن انجام شده است. در ادامه، به چیستی شبکههای کامپیوتری پرداخته شده است.
شبکه کامپیوتری چیست؟
یک شبکه کامپیوتری مجموعهای از کامپیوترها است که با هدف به اشتراکگذاری منابع، به یکدیگر متصل میشوند. یک شبکه شامل مجموعهای از گرهها (Node) است که به وسیله لینکهای ارتباطی به هم متصل هستند.
گره چیست؟
گره یا Node میتواند یک کامپیوتر، پرینتر یا هر دستگاه دیگری باشد که امکان برقراری ارتباط با سایر گرهها و تبادل (ارسال یا دریافت) دادهها را داشته باشد. برای اینکه یک شبکه کامپیوتری بتواند به درستی کار کند، علاوه بر گرهها، نیاز به تجهیزات دیگری هم وجود دارد.
تجهیزات ارتباطی در شبکه
از جمله تجهیزات و دستگاههای ارتباطی مهم در شبکههای کامپیوتری میتوان به هاب (Hub) و سوئیچ (Switch) اشاره کرد. همچنین، یک روتر (Router) دستگاهی است که برای برقراری ارتباط بین چند شبکه مورد استفاده قرار میگیرد. برای اطلاعات بیشتر پیرامون تجهیزات شبکه، مطالعه مقالات «تفاوت روتر، هاب و سوئیچ در چیست؟ – به زبان ساده» و «روتر چیست و چگونه کار میکند؟ – به زبان ساده» پیشنهاد میشود. اما، گرهها و تجهیزاتی مثل سوئیچ و روتر چگونه به هم متصل میشوند؟ در ادامه به این مسئله پرداخته شده است.
نحوه اتصال اجزا شبکه
انواع مختلف شبکهها و اجزا آنها میتوانند به دو صورت کابلی و وایرلس با هم در ارتباط باشند. به طور کلی، ارتباط از طریق کابل پایداری بیشتری نسبت به ارتباط بیسیم دارد و سریعتر است. شبکههای کامپیوتری بر اساس میزان گستردگی به انواع مختلفی دستهبندی میشوند که در ادامه به این مسئله پرداخته شده است.
انواع شبکههای کامپیوتری
به طور کلی میتوان شبکههای کامپیوتری را به دو دسته LAN و WAN تقسیم کرد. یک شبکه محلی (Local Area Network) ارتباط میان کامپیوترهایی را برقرار میکند که به هم نزدیک هستند. در طرف مقابل، یک شبکه گسترده (Wide Area Network) تعداد کامپیوترهای بیشتری را در یک محدوده بزرگتر پوشش میدهد. یک WAN معمولاً از تعدادی LAN تشکیل و برای اتصال آنها به یکدیگر استفاده میشود.
شبکههایی که در داخل یک WAN قرار دارند به یک شرکت یا سازمان تعلق دارند. میتوان گفت، اینترنت بزرگترین شبکه WAN در جهان به شمار میرود. برای اطلاعت بیشتر راجع به انواع شبکههای کامپیوتری، مطالعه مطلب «انواع شبکههای کامپیوتری — راهنمای جامع» و «فناوریهای مختلف LAN در شبکه — راهنمای جامع» پیشنهاد میشود. همچنین، در مطلب «توپولوژی شبکه های کامپیوتری — راهنمای جامع» انواع شبکههای کامپیوتری از دیدگاه شكل ساختارى (توپولوژی) معرفی شدهاند.
ساختار شبکه
کامپیوترها میتوانند عضوی از چندین شبکه مختلف باشند؛ درست همانطور که شبکهها هم بخشی از شبکههای بزرگتر هستند. معمولاً یک شبکه محلی در کسبوکار کوچک و زیرمجموعه، به شبکه شرکت تجاری بزرگتری متصل است. ممکن است این اتصالات علاوه بر برقراری ارتباط داخلی، دسترسی به اینترنت را نیز فراهم کرده باشند. برای ارتباط میان اجزا در شبکه، نیاز به قواعد و قراردادهایی وجود دارد.
پروتکلهای ارتباطی در شبکه
یک شبکه برای برقراری ارتباط میان اجزا خود، نیاز به پروتکلهای ارتباطی دارد. کامپیوترهای متصل در یک شبکه باید برای ارتباط با سایر اجزا و تبادل داده با آنها، از مجموعه قوانین مشترکی تبعیت کنند. این قوانین جهانی هستند و همه کامپیوترها در شبکه باید از آنها پیروی کنند. در غیر اینصورت، اینترنت و شبکه به درستی کار نخواهد کرد.
به این قوانین پروتکل (Protocol) گفته میشود. در بسترها و سیستمعاملهایی از جمله ویندوز، لینوکس و بسیاری از سایر سیستمعاملها از پروتکل TCP/IP استفاده میشود. برای مطالعه بیشتر و دقیقتر پیرامون مفهوم پروتکل، پیشنهاد میشود مخاطبین مطلب «پروتکل (Protocol) چیست ؟ | تعاریف، مفاهیم و انواع — به زبان ساده» را مطالعه کنند.
پروتکل TCP/IP
پروتکلهای مختلفی وجود دارد که هر یک برای هدف متفاوتی به کار میروند. به همه این پروتکلها، مجموعه پروتکلهای اینترنت (Internet Protocol Suite) گفته میشود. دو تا از مهمترین پروتکلها در مجموعه پروتکلهای اینترنت، پروتکل هدایت انتقال (Transmission Control Protocol |TCP) و پروتکل اینترنت (Internet protocol | IP) هستند که برای اطمینان از سالم رسیدن دادهها به مقصد و جلوگیری از بروز خطا وضع شدهاند.
پروتکل TCP : پروتکل TCP یا قاعده هدایت انتقال (Transmission Control Protocol)، یکی از پروتکلهای اصلی مجموعه پروتکلهای اینترنت به شمار میرود. TCP بخشی از ترکیب رایج و محبوب TCP/IP است که در اینترنت مورد استفاده قرار میگیرد. TCP برای حصول اطمینان از قرار گرفتن دادهها در ترتیب صحیح و گم نشدن آنها در مسیر به کار گرفته میشود. همچنین، پروتکل اینترنت یا IP اطمینان حاصل میکند که دادهها به محل (نشانی) مورد نظر برسند.
پروتکل IP : پروتکل اینترنت (IP) مهمترین پروتکل ارتباطی در مجموعه پروتکلهای اینترنت برای انتقال اطلاعات میان شبکهها و گرهها به حساب میآید. پروتکل IP اساساً قاعده و پروتکل حیاتی در برقراری اینترنت است. پروتکل IP، ارتباطی را برقرار نمیکند و فقط تعیین میکند که بستهها چگونه باید ایجاد شوند.
در عوض، TCP امکان برقراری ارتباط را فراهم میکند. بنابراین، هیچکدام بدون دیگری قادر به فعالیت نیستند و به همین دلیل، همیشه در کنار یکدیگر و با نام TCP/IP خطاب میشوند. این مسئله، وابستگی شدید این دو پروتکل را نشان میدهد.
مدل های شبکه
در صورتی که فناوری ارتباطی شبکه دارای یک مدل بزرگ و منفرد باشد، پیادهسازی چنین مدلی بسیار دشوار خواهد بود. به همین دلیل، قطعات و اجزا مختلف شبکه به ماژولها و لایههای کوچکتری تقسیم و جداسازی میشوند. مدل استاندارد یک شبکه، مدل OSI یا مدل ارتباط درونی سیستمهای باز (Open Systems Interconnection) نامیده میشود.
مدلهای شبکه دیگری هم وجود دارند که آنها هم به لایههای مشابهی تقسیم میشوند. در نوشته «مدلهای شبکه کامپیوتری — راهنمای جامع» توضیحات بیشتری پیرامون مدلهای شبکه ارائه شده است.
لایه های شبکه
در مدلهای شبکه، ارتباطات میان سیستمهای کامپیوتری به لایههای مختلفی تقسیم میشود. هر لایه از خدماتی استفاده میکند که توسط لایه زیرین فراهم شده است. این درحالی است که این لایه نیز خود به لایههای بالاتر خدمترسانی میکند. هر لایه در مبدأ تنها میتواند با لایه متناظر خود در دستگاه مقصد ارتباط برقرار کند.
مدل OSI
مدل OSI یک مدل شبکه هفت لایهای است که توسط سازمان بینالمللی استانداردسازی (International Organization for Standardization) وضع شده است و به طور گستردهای در سطح جهان مورد استفاده قرار میگیرد. در ادامه، هر یک از این هفت لایه به اختصار شرح داده شده است.
لایه اول
اولین لایه با نام «لایه فیزیکی» شناخته میشود که مشخصات فیزیکی و الکتریکی را برای دستگاهها تعریف میکند. همچنین، این لایه «انتقال ماژولبندی شده» (Modulated Transmission) و «انتقال باندپایه» (Baseband Transmission) را مشخص میکند.
Baseband Transmission: باندپایه در واقع اصطلاحی است که به دادههای دیجیتالی در قالب خام خود (1001 1101 1010 0011) اطلاق میشود. چنین قالبی، انتقال و تبادل دادهها با سرعت بسیار زیاد را در طول مسیرهای کوتاه امکانپذیر میسازد. فناوری Baseband در شبکههای محلی (Local Area Network | LAN) رایج است.
Modulated Transmission: در مخابرات، مدولاسیون (ساماندهی | Modulation) به فرآیند حمل و نقل یک سیگنال حامل پیام گفته میشود. بر فرض مثال، یک سیگنال پیام میتواند یک جریان بیتی دیجیتال باشد یا یک سیگنال صوتی آنالوگ در داخل سیگنال دیگری که قابل انتقال باشد. دستگاهی که مدولاسیون سیگنال باندپایه را فراهم میکند، یک مدولاتور نام دارد. لازم به توضیح است که در مطلب «لایه فیزیکی در شبکههای کامپیوتری — راهنمای جامع» نیز توضیحاتی پیرامون لایه فیزیکی ارائه شده است.
لایه دوم
لایه دوم، «لایه پیوند داده» (Data Link) نام دارد که وسایل عملکردی و رویهای را برای انتقال داده میان واحدهای شبکه و همچنین برای شناسایی و احتمالاً اصلاح خطاهایی فراهم میکند که ممکن است در لایه فیزیکی رخ دهند.
در دو مطلب «لایه داده-لینک (Data-link) در شبکههای کامپیوتری — راهنمای جامع» و «کنترل گردش و پروتکلهای داده-لینک در شبکههای کامپیوتری — به زبان ساده» نیز برخی مفاهیم لایه پیوند داده شرح داده شده است که مطالعه آن جهت افزایش سطح آگاهی پیرامون این لایه پیشنهاد میشود.
لایه سوم
این لایه که به آن لایه شبکه گفته میشود، ابزارهای عملکردی و رویهای انتقال توالی دادههایی در اندازه متغیر را از یک منبع میزبان در یک شبکه به میزبان مقصد در شبکه دیگر و با استفاده از IP فراهم میسازد.
برخی از مقالات پیرامون لایه شبکه جهت مطالعه بیشتر علاقهمندان در ادامه فهرست شده است:
- لایه شبکه (Network Layer) — به زبان ساده
- لایه شبکه چیست؟ — به زبان ساده
- پروتکلهای لایه شبکه — راهنمای جامع
- مسیریابی لایه شبکه — راهنمای جامع
آدرس IP
نشانی پروتکل اینترنت (Internet Protocol | IP) یک برچسب عددی است که به هر دستگاه موجود در شبکه (مثلاً کامپیوتر یا پرینتر و سایر موارد) تخصیص داده میشود. در حال حاضر، دو نسخه پروتکل IP به نامهای IPv4 و IPv6 وجود دارند و مورد استفاده قرار میگیرند. در ادامه، هر کدام از این نسخهها به طور مختصر معرفی شدهاند.
- IPv4: آیپی نسخه چهار از آدرسدهی ۳۲ بیتی استفاده میکند که فضای آدرس آن محدود به تعداد ۲32 (4294967296) آدرس منحصربهفرد است.
- IPv6: این نسخه از آدرسدهی ۱۲۸ بیتی استفاده میکند که فضای آدرس آن به 2128 آدرس ممکن و منحصربهفرد محدود میشود.
در مطلب «آدرسدهی در شبکههای کامپیوتری — به زبان ساده» توضیحاتی پیرامون آدرسیدهی IP در شبکه ارائه شده است. در ادامه، لایه چهارم مدل OSI شرح داده شده است.
لایه چهارم
لایه چهارم مدل OSI را لایه انتقال مینامند. این لایه، انتقال شفاف داده بین کاربران نهایی و خدمات انتقال داده قابل اطمينان به لایههای بالاتر را فراهم میسازد. پروتکل مدیریت انتقال (Transmission Control Protocol | TCP) و پروتکل دادهنگار کاربر (User Datagram Protocol | UDP) که جزئی از مجموعه پروتکلهای اینترنت به شمار میروند، عموماً به عنوان پروتکلهای لایه چهار در مدل OSI دستهبندی میشوند.
در ادامه، دو پروتکل TCP و UDP به اختصار شرح داده شدهاند:
- TCP: پروتکل مدیریت انتقال، واگذاری مرتب شده یک جریان از بایتها را از یک برنامه در یک کامپیوتر به برنامه دیگری در کامپیوتر دیگر فراهم میکند. TCP برای برنامههایی به کار میرود که اکیداً نیاز به انتقال قابل اطمینان دارند (مثل ایمیل، WWW، انتقال فایل با FTP و سایر موارد).
- UDP: این پروتکل از یک مدل انتقال ساده و بدون توافق دستدهی (Handshaking) پیروی میکند. در این پروتکل، فراهم کردن پایداری، حفظ ترتیب یا سلامت داده مد نظر نیست؛ بلکه، UDP در کاربردهایی استفاده میشود که در آنها، کاهش تأخیر اولویت بیشتری نسبت به پایداری و قابلیت اطمینان دارد.
در ادامه، برخی از نوشتارهای مرتبط با موضوع انتقال و لایه انتقال در شبکههای کامپیوتری فهرست شدهاند که تاکنون در مجله فرادرس منتشر شدهاند.
- انتقال در شبکههای کامپیوتری — راهنمای جامع
- لایه انتقال در شبکههای کامپیوتری — به زبان ساده
- انتقال آنالوگ در شبکه های کامپیوتری — راهنمای جامع
- انتقال دیجیتال در شبکه های کامپیوتری — راهنمای جامع
- انتقال بی سیم در شبکه های کامپیوتری — راهنمای جامع
- پروتکل UDP در شبکههای کامپیوتری — راهنمای جامع
لایههای پنجم تا هفتم
در مدلهای شبکهای که نسبت به مدل OSI سادهسازی شدهاند، سه لایه ۵، ۶ و ۷ معمولاً در یک لایه، متحد و خلاصه میشوند. هدف این سه لایه این است که با برنامههای کاربردی تعامل داشته باشند، رمزنگاری را انجام دهند و در صورت لزوم ارتباطات اختصاصی (Dedicated) برقرار کنند. مطلبی با عنوان «لایه اپلیکیشن در شبکههای کامپیوتری — راهنمای جامع» نیز در مجله فرادرس موجود است که مطالعه آن برای کسب دانش بیشتر پیرامون لایه اپلیکیشن پیشنهاد میشود. فهرستی از سایر مقالاتی که تاکنون در مجله فرادرس پیرامون موضوع شبکههای کامپیوتری انتشار یافته، به شرح زیر است:
- مفاهیم مقدماتی انتقال داده و شبکه های کامپیوتری — راهنمای جامع
- سوئیچینگ در شبکه های کامپیوتری — به زبان ساده
- پروتکل کنترل انتقال در شبکه های کامپیوتری — راهنمای جامع
- مدل کلاینت-سرور در شبکه های کامپیوتری — راهنمای جامع
- شناسایی و اصلاح خطا در شبکه های کامپیوتری — راهنمای جامع
- شبکه بندی متقابل (Internetworking) در شبکه های کامپیوتری — به زبان ساده
- مفهوم مالتی پلکس در شبکههای کامپیوتری — راهنمای جامع
- انواع سرویسهای شبکه — راهنمای جامع
- FTTH چیست؟ — از صفر تا صد
- آشنایی با پروتکلهای رمزنگاری وای فای — چگونه امنیت وای فای خود را افزایش دهیم؟
- دستور Ping و بررسی وضعیت شبکه با استفاده از خط فرمان
- باز کردن پورت (Port) در فایروال ویندوز – به زبان ساده
- راهاندازی شبکه خانگی — آموزش گام به گام و به زبان ساده
- دریافت و بازبینی بسته های شبکه در ویندوز سرور — راهنمای کاربردی
- بهترین روش انتقال فایل در شبکه خانگی کدام است؟ — به زبان ساده
مفاهیم وب
در این بخش از آموزش درس مهندسی اینترنت مفاهیم مقدماتی وب، پروتکل HTTP، طراحی صفحات وب و سایر موضوعات مرتبط با وب پوشش داده شده است.
اینترنت چیست؟
امروزه اینترنت به بخش مهمی از زندگی روزمره افراد در سراسر دنیا بدل شده است. در این بخش از آموزش درس مهندسی اینترنت ارائه تعریف مختصری از اینترنت به عنوان ابتداییترین مفهوم در دنیای وب ضرورت دارد:
اینترنت اساساً یک منبع محاسباتیِ جهانی است. میتوان اینترنت را به صورت مجموعهای از روترها و مدارها در نظر گرفت که جهت به اشتراکگذاری منابع به کار گرفته میشوند. اینترنت، سیستم جهانی شبکههای کامپیوتری به هم پیوسته است که از مجموعه پروتکلهای اینترنت (TCP/IP) برای ارتباط میان شبکهها و دستگاهها استفاده میکند.
در ادامه مهمترین سرویسهای قابل ارائه در چارچوب اینترنت معرفی شدهاند.
سرویسهای اینترنت
برخی از سرویسها و خدمات اساسی که در دسترس کاربران اینترنت قرار دارد، در ادامه فهرست شدهاند:
- Email: روشی ساده، آسان و کمهزینه برای برقراری ارتباط با سایر کاربران اینترنت در نقاط مختلف جهان محسوب میشود. در خصوص ایمیل، مطالعه مطلب «آشنایی با ۷ پروتکل امنیت ایمیل — به زبان ساد» پیشنهاد میشود.
- تلنت (Telnet): به یک کاربر اجازه میدهد تا درست مثل یک کامپیوتر محلی، به یک کامپیوتر راه دور دسترسی داشته باشد.
- FTP: این پروتکل به کاربر امکان میدهد تا هر نوع فایل قابل ذخیرهسازی را در بستر اینترنت از کامپیوتری به کامپیوتر دیگر انتقال دهد. پیرامون مبحث FTP خواندن مقاله «FTP و FTP سرور چیست؟ | به زبان ساده» توصیه میشود.
- WWW: تارنمای جهان گستر (شبکه جهانی وب | World Wide Web) یک رابط فرامتنی (Hypertext) برای منابع اطلاعاتی اینترنت است. ممکن است این مفهوم چندان واضح به نظر نرسد. در ادامه توضیحات بیشتری پیرامون WWW ارائه شده است.
WWW چیست؟
همانطور که به اختصار توضیح داده شد، WWW سرنامی برای عبارت «World Wide Web» و به معنی تارنمای جهان گستر است. تعریف فنی از تارنمای جهان گستر به صورت زیر است:
WWW شامل تمام منابع و کاربران اینترنت است که از پروتکل اچتیتیپی (HTTP | Hypertext Transfer Protocol) برای برقراری ارتباط استفاده میکنند.
یک تعریف گستردهتر برای WWW از سازمانی برگرفته شده که مخترع وب، تیم برنرزلی (Tim Berners-Lee) در بنیانگذاری آن نقش داشته است. این سازمان، اتحادیه تارنمای جهانگستر (W3C | World Wide Web Consortium) نام دارد. تعریف W3C از WWW بدین شرح است:
تارنمای جهانگستر، جهان اطلاعات قابل دسترس در شبکه و تجسمی از دانش بشر است.
به بیان ساده، تارنمای جهان گستر یا همان شبکه جهانی وب، روشی برای تبادل اطلاعات میان کامپیوترها در اینترنت است و آنها را به یک مجموعه گسترده از منابع چندرسانهای تعاملی مرتبط میکند. در تعریف فنی WWW، سخن از پروتکل یا قراردادی به نام HTTP به میان آمد که در ادامه توضیحات بیشتری راجع به آن ارائه شده است.
پروتکل HTTP
HTTP سرنامی برای عبارت «Hypertext Transfer Protocol» و به معنی «قرارداد انتقال ابَرمتن» است. HTTP پروتکل یا منشوری است که برای انتقال مستندات ابرمتن استفاده میشود. این مستندات پایه و اساس شبکه جهانی وب محسوب میشوند.
URL: یک آدرس وب استاندارد مثل www.Faradars.org یک URL نامیده میشود. URL سرنامی برای «Uniform Resource Locator» است و برای مشخص کردن آدرسها در وب استفاده میشود. یک URL، هویت بنیادین شبکه برای هر منبعی است که به وب متصل باشد. این منابع میتوانند شامل صفحات ابرمتن و فایلهای تصویری و صوتی باشند. یک URL قالبی به صورت زیر خواهد داشت:
1سایر اطلاعات / نام میزبان//: پروتکل
بخش پروتکل در آدرس URL نوع پروتکل برای ارتباط با میزبان را مشخص میکند. پروتکلی که برای منابع وب (صفحات وب) به کار میرود، HTTP است. امروزه، استفاده از پروتکل HTTPS که نوع ایمن شده HTTP به حساب میآید، بسیار رایج شده و اکثر وبسایتها از HTTPS استفاده میکنند. از جمله پروتکلهای دیگری که با اکثر صفحات وب همخوانی دارند، میتوان به FTP و تلنت اشاره کرد.
بعد از پروتکل، یک علامت نقل قول و دو اسلش در آدرس URL قرار داده میشود و پس از این علامتها، باید نام دامنه یا میزبان را وارد کرد. نام دامنه کامپیوتری است که منابع در آن قرار دارند. ممکن است پس از نام دامنه، پیوندهایی به یک فایل خاص یا زیرپوشهها نیاز باشد که میتوان جهت دسترسی، نام آنها را بعد از یک اسلش دیگر و در ادامه نام دامنه وارد کرد. برخی از مقالات مجله فرادرس پیرامون پروتکل HTTP که میتوانند جهت آشنایی بیشتر با این مفهوم مهم در درس مهندسی اینترنت مطالعه شوند، به شرح زیر است:
- پروتکل HTTP چیست؟ — به زبان ساده
- همه چیز در مورد HTTP 3 — از صفر تا صد
- پروتکل SSL چیست؟ | پروتکل HTTPS و رمزنگاری SSL — به زبان ساده
در ادامه به بررسی مفهوم و چیستی یک وبسایت پرداخته شده است.
وب سایت چیست؟
به عنوان مثال، مجله فرادرس (www.blog.faradars.com) یک وبسایت است که صفحات مختلفی دارد. این صفحات با استفاده از زبان نشانهگذاری ابرمتن (Hypertext Markup Language | HTML) ایجاد شدهاند. یک وبسایت، مجموعهای از صفحات در وب است که افراد میتوانند، به عنوان مثال، برای آموزش و یادگیری فناوریهای مختلف یا مطالعه و مشاهده خبرها به آن مراجعه کنند.
با یک جستجوی ساده، میتوان دریافت که، در حال حاضر نزدیک به دو میلیارد وبسایت در جهان وجود دارد. هر صفحه موجود در یک وبسایت را یک «صفحه وب» مینامند. اما وبسایتها در کجا ذخیره میشوند؟ در ادامه به این موضوع پرداخته شده است.
وب سرور چیست ؟
هر وبسایت در یک کامپیوتر ذخیره شده است که به آن وبسرور میگویند. این سرور همیشه به اینترنت متصل است. به هر وبسرور متصل به اینترنت یک نشانی منحصربهفرد اختصاص داده میشود. این آدرس از یک دسته چهارتایی از اعداد تشکیل شده است. هر کدام از این اعداد میتواند مقداری بین صفر تا ۲۵۶ داشته باشد و همچنین، این چهار عدد با نقطه از هم جدا میشوند.
برای مثال، یک آدرس IP به صورت 68.178.157.132 یا 68.122.35.127 است. وقتی که فردی یک آدرس وب یا همان نام دامنه را ثبت میکند، باید آدرس آیپی وبسروری که از سایت میزبانی میکند را مشخص کرده باشد. اما یک فرد چطور میتواند به یک سایت دسترسی پیدا کرده و محتوای آن را ببیند؟ در ادامه به این مسئله پرداخته شده است. برای آشنایی بیشتر با مفهوم سرور مطالعه مطلب «سرور چیست ؟ — آنچه باید بدانید به زبان ساده» پیشنهاد میشود.
مرورگر وب چیست؟
مرورگرهای وب نرمافزارهایی هستند که برای دسترسی به وب روی یک کامپیوتر نصب میشوند. از جمله برخی از مرورگرهای رایج میتوان به گوگل کروم، موزیلا فایرفاکس و Opera اشاره کرد. در حال حاضر، برای دسترسی به مجله فرادرس و مطالعه این مطلب، باید از یک مرورگر استفاده شود.
اصطلاح رایجی که برای جستجو در وب و جابهجایی میان صفحات مختلف به کار برده میشود، «وبگردی» (Browsing the web | Surfing the web) است. اما اگر شخصی بخواهد از طریق اینترنت نامه ارسال کند، این کار از چه طریقی انجام میشود؟ در ادامه راجع به سرور SMTP بحث شده است.
سرور SMTP
SMTP Server سرنامی برای «Simple Mail Transfer Protocol Server» به معنی «سرور پروتکل ساده انتقال ایمیل» است. این سرور کار تحویل ایمیلها از یک سرور به سرور دیگر را بر عهده دارد. وقتی ایمیلی به یک نشانی ایمیل فرستاده میشود، در واقع، این ایمیل توسط یک سرور SMTP به دریافت کننده تحویل داده میشود.
حال این سوال وجود دارد که یک کاربر چطور میتواند به اینترنت دسترسی داشته باشد؟ در ادامه، به این سوال پاسخ داده شده است. مطالعه مقالات «انواع میل سرورها | میل سرور چیست — انواع آن چه فرقی دارند» و «راه اندازی mail server در ویندوز سرور ۲۰۱۲ — آموزش گام به گام تصویری» نیز در خصوص سرورهای ایمیل، انواع آنها و نحوه پیادهسازی آنها پیشنهاد میشود.
ISP چیست؟
ISP سرنامی برای عبارت «Internet Service Provider» و به معنی «ارائهدهنده خدمات اینترنتی» است. به شرکتی که سرویس اینترنت را برای مشتریان فراهم میکند، ISP میگویند. همچنین، برای خریداری فضای ذخیرهسازی روی یک سرور، میتوان به شرکتهای ارائهدهنده خدمات میزبانی مراجعه کرد. در مطلب «راهنمای جامع خرید هاست | به همراه اینفوگرافیک» توضیحاتی پیرامون نحوه خرید و انواع خدمات میزبانی ارائه شده است. در ادامه، به معرفی HTML پرداخته شده است.
HTML چیست ؟
HTML سرنامی برای «Hyper Text Markup Language» یا «زبان نشانهگذاری HTML» است. صفحات وب در وبسایتها با HTML نوشته میشوند. HTML زیرمجموعهای از زبان نشانهگذاری تعمیمیافته استاندارد (Standard Generalized Mark-Up Language | SGML) برای انتشار الکترونیکی است.
SGML استاندارد تعیین شده برای استفاده در شبکه جهانی وب است. مطلب جامع و کاربردی پیرامون HTML با عنوان «زبان برنامه نویسی HTML چیست؟ | راهنمای یادگیری و شروع به کار | به زبان ساده» در مجله فرادرس موجود است که مطالعه آن برای آشنایی بیشتر با HTML و نحوه طراحی صفحات وب با آن، به مخاطبین محترم پیشنهاد میشود.
هایپرلینک
یک هایپرلینک (Hyperlink) یا لینک (پیوند | Link) یک عنصر قابل انتخاب در یک سند الکترونیک است که در نقش نقطه دسترسی به سایر منابع الکترونیک ظاهر میشود. در واقع میتوان برای دسترسی و رفتن به صفحه پیوند داده شده، روی آن هایپرلینک یا لینک کلیک کرد. برخی از انواع رایج هایپرلینکها شامل دکمهها، آیکنها و لینکهای متنی قابل کلیک است. مطالعه مطلب «ایجاد هایپرلینک در HTML — راهنمای کاربردی» پیرامون هایپرلینک پیشنهاد میشود.
DNS چیست؟
DNS یعنی سیستم نام دامنه که سرنامی برای «Domain Name System» است. وقتی که شخصی نام دامنه یک وبسایت را وارد میکند، مرورگر از DNS میخواهد تا آدرس IP سروری که از آن وبسایت میزبانی میکند را بیابد. وقتی که صاحب سایت نام دامنه را ثبت میکند، باید آدرس IP سرور سایت را به همراه نام دامنه در یک DNS قرار دهد. در صورتی که این کار انجام نشود، نام دامنه به درستی عمل نخواهد کرد. در مورد DNS، مطالعه مقاله «مفاهیم DNS و انواع سرورهای آن — راهنمای جامع» توصیه میشود.
سازمان W3C
همانطور که در تعریف WWW اشاره شد، W3C مخفف عبارت «World Wide Web Consortium» و به معنی «اتحادیه شبکه جهانی وب» است. W3C یک اتحادیه بینالمللی متشکل از شرکتهای داخلی در اینترنت محسوب میشود. W3C در اوایل دهه هفتاد شمسی توسط معمار اولیه شبکه جهانی وب یعنی تیم برنرزلی بنیانگذاری شد. هدف از تأسیس سازمان W3C این است که به جای متفرق شدن در گروههای رقیب، تکامل شبکه جهانی وب در یک مسیر یکتا انجام شود.
بدین ترتیب، اکثر مفاهیم کلیدی و مقدماتی وب در آموزش درس مهندسی اینترنت معرفی و شرح داده شدند. در ارتباط با مفاهیم وب، مطالعه مطلب کاربردی «آموزش ICDL – مهارت هفتم – رایگان | به زبان ساده و گام به گام» نیز پیشنهاد میشود. بسیاری از مباحث مطرح شده در بخش مفاهیم وب از آموزش مهندسی اینترنت در این مطلب نیز پوشش داده شده است.
از جمله سرفصلهایی که در این مطلب به آنها پرداخته شده است، میتوان به مزایا و معایب اینترنت، مدلهای مرجع شامل مدل OSI و مدل TCP/IP و لایههای آنها، نامهای دامنه، طرز کار DNS، پروتکلهای اینترنتی، پروتکلهای ایمیل و بسیاری از موارد دیگر اشاره کرد. یکی دیگر از مباحثی که در درس مهندسی اینترنت مطرح میشود، «طراحی صفحات وب» است که در ادامه به آن پرداخته شده است.
طراحی صفحات وب
در این بخش از آموزش درس مهندسی اینترنت به بحث راجع به طراحی صفحات وب و مسائل پیرامون آن پرداخته شده است. در بخش قبل، مفاهیم اولیه و مقدماتی درباره وب ارائه شد. اکنون، پیش از شروع آموزش طراحی صفحات وب، ابتدا باید به این سوال پاسخ داده شود که کارکرد وب چگونه است؟ در ادامه به این مسئله پرداخته شده است.
نحوه عملکرد وب چگونه است؟
برای درک نحوه عملکرد وب، ابتدا باید شناختی نسبت به اجزای تشکیل دهنده آن به دست آورد. در سادهترین سطح، وب به لحاظ فیزیکی از اجزا زیر تشکیل شده است:
- کامپیوتری که برای دسترسی به اینترنت و وب استفاده میشود.
- مرورگر وب
- ارتباط اینترنتی که توسط یک ISP ارائه شده است و کامپیوتر را برای دسترسی به صفحات وب به اینترنت متصل میکند.
- وبسرور؛ همان کامپیوتری است که میزبانی وبسایت را برعهده دارد.
- روترها و سوئیچها که ترکیبی از نرمافزار و سختافزار هستند و کار انتقال اطلاعات میان اجزا اینترنت را برعهده دارند.
وب به عنوان یک سیستم کلاینت-سروری (Client-Server) شناخته میشود. کامپیوتری که سایت با آن باز میشود، کلاینت و کامپیوترهای راه دوری که فایلهای الکترونیکی یک سایت را ذخیره میکنند، سرور نامیده میشوند. در ادامه آموزش درس مهندسی اینترنت به توضیح نحوه عملکرد وب پرداخته شده است.
نحوه عملکرد وب
زمانی که کاربر نشانی یک وبسایت را در مرورگر وارد میکند، درخواست وی به یکی از سرورهای نام دامنه (Domain Name Server) ارسال میشود. همه درخواستهای این چنینی از روترها و سوئیچهای متعددی عبور میکنند. سرورهای DNS جدولهایی از نام ماشینها و نشانی IP آنها را نگهداری میکنند. بنابراین، وقتی که کاربر آدرس یک سایت را وارد میکند، این آدرس توسط DNS به آدرس IP سرور آن سایت ترجمه میشود. پس از مشخص شدن آدرس IP سرور سایت، مرورگر یک درخواست HTTP برای ارسال اطلاعات و باز شدن صفحه به سرور آن سایت ارسال میکند. زمانی که سرور درخواست مربوطه را دریافت میکند، سند درخواستی را جستجو کرده و آن را به مرورگر باز میگرداند.
هر وقت که یک درخواست انجام میشود، سرور آدرس IP درخواست کننده (کلاینت)، سند درخواستی و تاریخ و زمان درخواست را ضبط و نگهداری میکند. البته، نوع اطلاعات ذخیره شده در سرورهای مختلف متفاوت است. معمولاً برای باز کردن و نمایش یک صفحه وب نیاز به درخواست بیش از یک فایل از وب سرور توسط مرورگر وجود دارد و تنها درخواست برای فایل HTML یا XHTML کافی نیست و باید همه تصاویر، صفحات استایلدهی و سایر منابع استفاده شده در آن صفحه وب نیز درخواست شوند. سپس، موارد ذکر شده توسط وب سرور به مرورگر ارسال میشوند و مرورگر تمام این اطلاعات را جمعآوری کرده و آنها را در قالب یک صفحه وب نمایش میدهد.
در این خصوص، مطلبی با نام «نحوه رندر شدن صفحه وب در مرورگر | به زبان ساده» در مجله فرادرس موجود است که مطالعه آن برای اطلاعات بیشتر پیشنهاد میشود. یکی از مواردی که باید در درس مهندسی اینترنت به آن توجه داشت این است که «طراحی وب» با «توسعه وب» تفاوت دارد و این دو عبارت نباید به جای یکدیگر استفاده شوند. برای درک این مسئله، در ادامه به شرح تفاوت «طراحی وب» با «توسعه وب» پرداخته شده است. در ابتدا، توضیحاتی پیرامون «توسعه وب» ارائه شده است.
توسعه وب چیست؟
توسعه وب (Web Development) فرآیند ایجاد وبسایتها و اپلیکیشنها برای اینترنت یا یک شبکه خصوصی اینترانت است. توسعه وب با «طراحی» یک وبسایت ارتباطی ندارد، بلکه هدف در توسعه وب، افزودن قابلیتهای عملکردی به یک وبسایت از طریق برنامهنویسی است.
از سادهترین صفحات وب ایستا گرفته تا شبکههای اجتماعی، وبسایتهای تجارت الکترونیک (فروشگاههای آنلاین)، سامانههای مدیریت محتوا (CMS) و به طور کلی همه ابزارهایی که روزانه از طریق اینترنت مورد استفاده قرار میگیرند، همگی توسط «توسعهدهندگان وب» ساخته شده است. میتوان توسعه وب را به سه لایه تجزیه کرد:
- کدنویسی سمت کلاینت (فرانتاند | Front-End): همه آن چیزی که کاربر نهایی مستقیماً تجربه میکند. کدهای سمت کلاینت در مرورگر اجرا میشوند و مستقیماً با آنچه کاربر در مراجعه به سایت مشاهده میکند ارتباط دارند. مثل: طرحبندی، فونت، رنگها، منوها و سایر موارد
- کدنویسی سمت سرور (بکاند | Back-End): مربوط به همه آن چیزی است که در پشت صحنه در جریان است. بکاند بخشی از وبسایت است که کاربر آن را نمیبیند. این بخش مسئولیت ذخیرهسازی و سازماندهی دادهها را برعهده دارد تا از انجام صحیح وظایف لازم در سمت کلاینت اطمینان حاصل شود. این کار به وسیله برقراری ارتباط با فرانتاند انجام میشود.
- فناوری پایگاهداده: پایگاهداده حاوی تمام فایلها و محتوای مورد نیاز برای کارکرد یک وبسایت است. پایگاهداده این اطلاعات را به گونهای ذخیره میکند که بازیابی، سازماندهی، ویرایش و ذخیره آنها به سادگی انجام شود. پایگاهداده روی یک سرور اجرا میشود و اکثر وبسایتها نوعی از سیستم پایگاهداده رابطهای (RDBMS) را به کار میبرند.
برخی از مقالات کاربردی پیرامون مباحث مطرح شده در این بخش (توسعه وب) به شرح زیر است:
- مناسبترین زبان برنامهنویسی وب برای اهداف مختلف چیست؟
- چگونه برنامهنویسی وب را شروع کنم؟
- برنامهنویس فرانتاند ، بکاند و فولاستک دولوپر — وظایف، مهارتها و درآمد
- یادگیری طراحی و توسعه وب — پادکست پرسش و پاسخ
تفاوت توسعه وب و طراحی وب چیست؟
ممکن است دو عبارت «طراحی وب» و «توسعه وب» به جای یکدیگر بهکار گرفته شوند، اما این دو با هم متفاوت هستند.
برای درک بهتر این تفاوت، اگر به عنوان مثال قرار باشد یک طراح وب و یک توسعهدهنده وب با هم یک اتومبیل بسازند، توسعهدهنده مسئولیت ساخت اجزا عملیاتی مثل موتور، چرخها و چرخدندهها را برعهده خواهد داشت. اما، طراح وظایف مربوط به جنبههای بصری مثل شمایل ماشین، طرحبندی داشبورد، طراحی صندلیها و همچنین تجربه کاربری ایجاده شده به وسیله ماشین را برعهده خواهد داشت.
وظایف طراح وب
طراحان وب، شمایل ظاهری و حس ایجاد شده در کاربر را طراحی میکنند. آنها طرحبندی وبسایت را مدلسازی و از منطقی، کاربرپسند و دلپذیر بودن استفاده از وبسایت اطمینان حاصل میکنند. یک طراح وب تمام اجزا بصری مختلف از قبیل آرایش رنگها و انتخاب فونتها را مد نظر قرار میدهد. همچنین اینکه چه دکمهها و منوهای کشویی و در کجا باید استفاده شوند و بسیاری از موارد دیگر بر عهده طراحان وب است.
حوزه طراحی وب بسیار گسترده است و معمولاً به حوزههای محدودتری تقسیم میشود که در ادامه فهرست شده است:
- طراحی تجربه کاربری (User Experience Design | UX)
- طراحی رابط کاربری (User Interface Design | UI)
- معماری اطلاعات (Information Architecture)
وظیفه یک توسعهدهنده وب این است که حاصل کار یک طراح وب را به یک وبسایت کاملاً کاربردی و عملیاتی تبدیل کند. توسعهدهنده فرانتاند طراحی بصری ارائه شده توسط طراح وب را با استفاده از زبانهایی مثل CSS ،HTML و جاوا اسکریپت پیادهسازی میکند.
یک توسعهدهنده بکاند قابلیتهای عملیاتی پیشرفتهتر سایت مثل عملیات تسویه حساب یا صندوق یک فروشگاه آنلاین را میسازد. به طور خلاصه، یک طراح وب درست مثل یک معمار است؛ در حالی که، توسعهدهنده وب را میتوان سازنده یا مهندس اجرایی در نظر گرفت. مقالات منتشر شده مرتبط با طراحی وب در مجله فرادرس به شرح زیر است:
- طراحی UX چیست؟ | راهنمای جامع آموزش طراحی تجربه کاربری
- UI چیست ؟ | راهنمای جامع آموزش طراحی رابط کاربری
- کاربرد رنگ در طراحی وب — ۶ توصیه برای طراحی مطمئن وبسایت
- درک کیفیتها و خصوصیات رنگ در طراحی وب سایت — به زبان ساده
- مقدمهای بر تئوری رنگ برای طراحان وب — یک راهنمای جامع
- استانداردهای طراحی سایت را بشناسید
- کامپوننت های طراحی متریال (Material Design) برای وب — به زبان ساده
- اصول انتخاب ترکیب رنگی مناسب برای طراحان وب
مهارت های مورد نیاز برای توسعه وب
برای ساخت وبسایتها و وباپلیکیشنها، توسعهدهندگان از زبانها، کتابخانهها و فریمورکهای مختلفی استفاده میکنند.
در ادامه، هر یک از این ابزارهای توسعه وب به همراه توضیحات و مثال ارائه شده است.
- زبانهای برنامهنویسی: همانطور که بیان شد، از زبانهای برنامهنویسی برای ساخت و توسعه قابلیتهای عملیاتی و تعاملی وبسایتها استفاده میشود. از جمله برترین زبانها در توسعه وب میتوان به جاوا اسکریپت، پایتون، PHP ،TypeScript و روبی اشاره کرد.
- زبانهای نشانهگذاری (Markup Languages): زبانهای نشانهگذاری برای مشخص کردن قالب یک فایل متنی به کار گرفته میشوند. به بیان دیگر، زبان نشانهگذاری نحوه قالببندی متن را برای نرمافزار نمایش دهنده متن تعیین میکند. دوتا از محبوبترین و رایجترین زبانهای نشانهگذاری، HTML و XML هستند.
- زبانهای Style Sheet: به زبان ساده، یک زبان Style Sheet مجموعهای از قوانین شیوهمند (سبْکوار | Stylistic) است. زبانهای سبکوار، به معنی دقیق کلمه برای استایلدهی اسنادی به کار میروند که با زبانهای نشانهگذاری نوشته شدهاند. CSS رایجترین زبان Style Sheet به شمار میرود. HTML مسئولیت محتوا و ساختار یک صفحه وب را برعهده دارد، درحالی که CSS نحوه ارائه بصری محتوا را تعیین میکند. CSS برای اضافه کردن رنگها، تغییر فونت، اضافه کردن پسزمینه و سایر موارد از این دست استفاده میشود.
- زبانهای پایگاهداده: پایگاهدادهها برای ذخیرهسازی حجمهای عظیمی از دادهها به کار میروند. به عنوان مثال، اپلیکیشنها و وبسایتهای شبکههای اجتماعی، اطلاعات پروفایل کاربران را ذخیره میکنند. برای انجام عملیات مختلف در پایگاهداده، نیاز به زبانهای مخصوصی وجود دارد و نمیتوان از همان زبانهای برنامهنویسی توسعه وباپلیکیشنها استفاده کرد. به عنوان مثال میتوان زبان SQL را نام برد که در ادامه توضیحات بیشتری پیرامون آن ارائه شده است.
- کتابخانهها و فریمورکها: اگرچه کتابخانه و فریمورک هر دو برای آسانتر کردن کار توسعهدهندگان مورد استفاده قرار میگیرند، در ماهیت با هم تفاوت دارند. یک کتابخانه حاوی مجموعهای از کدهای کاربردی و مفید است که با هم گروهبندی شدهاند تا بتوان بعداً از آنها استفاده کرد. هدف از کتابخانهها کاهش حجم کدنویسی است. اما یک فریمورک دارای اجزا و ابزارهای پیشساخته است که امکان کدنویسی سریعتر را برای توسعهدهندگان فراهم میکنند. بسیاری از فریمورکها خود حاوی چند کتابخانه هستند.
- سایر ابزارهای توسعه وب: علاوه بر موارد ذکر شده، توسعهدهندگان وب از یک ویرایشگر کُد نظیر Sublime ،Atom یا Visual Studio Code، یک مرورگر وب مثل کروم یا فایرفاکس و یک ابزار بسیار مهم به نام گیت (Git) نیز استفاده میکنند. Git یک سیستم کنترل نسخه است که توسعهدهندگان میتوانند به وسیله آن کدهای خود را ذخیره و مدیریت کنند. یک ابزار کنترل نسخه، امکان ردیابی تغییرات و بازگشت به حالتهای قبلی در کدهای نوشته شده را فراهم میکند. گیتهاب یک رابط ابری برای گیت است. گیتهاب علاوه بر ارائه تمام قابلیتهای کنترل نسخه گیت، با ویژگیهای دیگری مانند ردیابی باگها، مدیریت وظایف و دانشنامه پروژه (Project Wiki) نیز همراه است.
در ادامه این بخش، برخی از مهارتهای مهم و اصلی مورد نیاز برای طراحی و توسعه وب معرفی و توضیحات بیشتری برای آنها ارائه شده است. همچنین، مقالات کاربردی پیرامون هر یک از این مهارتها جهت آموزش و یادگیری بهتر معرفی شدهاند. لازم به توضیح است که برای طراحی یک وبسایت ساده، تنها نیاز به چهار مهارت ابتدایی معرفی شده وجود دارد. سایر مهارتها برای ساخت و توسعه وبسایتهای بزرگتر با قابلیتهای تعاملی مورد نیاز خواهند بود.
مهارت کار با کامپیوتر
در این مورد، فرد باید با نحوه کار با کامپیوتر تحت سیستمعاملهایی نظیر ویندوز، لینوکس یا مک OS آشنایی داشته باشد. این مسئله بستگی دارد به اینکه فرد میخواهد میزبانی سایت خود را با چه وبسروری انجام دهد. مهارتهایی از قبیل ایجاد، حذف و ویرایش یک فایل، ایجاد پوشه (Directory)، سطح دسترسی فایل و سایر موارد باید توسط فرد فرا گرفته شده باشند.
مقالات و نوشتههای مرتبط با ویندوز شامل «ویندوز سرور چیست و چه فرقی با ویندوز دارد؟» و «آموزش ویندوز ۱۰ | مجموعه مقالات و آموزشها»، آموزشها و مقالات مربوط به لینوکس شامل «لینوکس چیست؟ | معرفی جامع و راهنمای کامل — از صفر تا صد»، «آموزش لینوکس | مجموعه مقالات و آموزشها» و همچنین مقالات مرتبط با مک OS شامل «آموزش جامع و مقدماتی مک OS» و «دستورهای ترمینال سیستمعامل مک (macOS)» اشاره کرد.
دسترسی از راه دور (Remote Access)
با توجه به اینکه معمولاً برای ساخت و طراحی وبسایت باید از شرکتهای ارائهدهنده خدمات میزبانی سرور اجاره شود، دسترسی به سرور همواره به صورت راه دور خواهد بود. حتی در صورتی که سرور سایت به صورت محلی باشد، باز هم ممکن است به دلایل مختلف همیشه امکان دسترسی مستقیم به سرور وجود نداشته باشد.
بنابراین، باید آشنایی با نحوه اتصال به سرور از راه دور وجود داشته باشد. همچنین، داشتن دانش و مهارت کافی پیرامون ابزار و دستورات تلنت لازم است. البته، بسیاری از ارائه دهندگان خدمات میزبانی، پنل مدیریت جهت انجام امور وب سایت را در اختیار مشتریان خود قرار میدهند. از جمله مقالات و مقالات مرتبط با دسترسی از را دور میتوان به موارد زیر اشاره کرد:
- ۱۵ نرمافزار رایگان برای اتصال و کنترل کامپیوتر از راه دور
- برترین نرمافزارهای اتصال به کامپیوتر از راه دور — فهرست جامع
- راه اندازی SSH روی لینوکس — راهنمای جامع
دانلود و آپلود فایل
همانطور که بیان شد، در اکثر مواقع وبسرور دور از دسترس فیزیکی خواهد بود و نیاز به آپلود و دانلود فایلهای مربوط به وبسایت وجود خواهد داشت. بنابراین، حداقل نیاز به داشتن دانش ابتدایی پیرامون ابزار FTP برای اتصال به یک ماشین راه دور و دریافت و ارسال فایلها وجود دارد. اگرچه، اکثر ارائه دهندگان خدمات امکان آپلود فایلها روی وبسرور را ارائه میدهند. در این مطالعه مطلب «ترفندهای وردپرس — استفاده از FTP برای آپلود فایل از کامپیوتر به وبسایت» پیشنهاد میشود.
آشنایی با HTML 5
داشتن دانش و مهارت کدنویسی HTML برای ساخت وبسایت ضروری است. بنابراین، باید درک کافی از مفاهیم HTML وجود داشته باشد. پیشتر در بخش «HTML چیست» مطلب آموزش HTML معرفی شده است. در بخشی از این مطلب، سایر مقالات آموزشی و کاربردی در ارتباط با HTML معرفی و فهرست شدهاند.
همچنین، نحوه طراحی یک صفحه وب ساده و دیدن نتیجه آن در خروجی در این مطلب گنجانده شده است. در ادامه، فیلمهای آموزش HTML معرفی شدهاند.
مهارت CSS
CSS یا Cascading Style Sheets زبانی برای توصیف نمایش ظاهری صفحات وب است. این المانهای ظاهری شامل رنگها، قالببندی و فونتها میشود. CSS امکان سازگاری نمایش وبسایت در اندازههای مختلف صفحات نمایش را فراهم میسازد. CSS مستقل از HTML است و میتواند با هر نوع زباننشانهگذاری مبتنی بر XML به کار گرفته شود.
دانش و مهارت CSS برای دستیابی به نتایجی که با HTML قابل تولید نیستند لازم و ضروری است. مقالات پیشنهادی مرتبط با CSS به شرح زیر است:
- مهمترین مفاهیم CSS که باید بدانید — از صفر تا صد
- مفاهیم مقدماتی CSS — آموزش CSS (بخش اول)
- ۸ ابزار مهم CSS که هر توسعهدهنده وب باید بشناسد — راهنمای کاربردی
- فهرست برترین کتابخانه های فرانت اند CSS — راهنمای کاربردی
- مجموعه مقالات مرتبط با CSS
زبان PHP
بسیاری از وبسایتهای موجود در اینترنت با استفاده از PHP توسعه داده شدهاند. PHP یک زبان اسکریپتنویسی سمت سرور است که میتواند برای اجرای وظایف مختلفی شامل عملیات پایگاهداده و سایر موارد مورد استفاده قرار گیرد. PHP به توسعهدهندگان کمک میکند تا وبسایتهای تعاملی و واکنشپذیر بسازند.
بنابراین پس از یادگیری مهارتهای مقدماتی، کسب مهارت برنامهنویسی با زبان PHP برای توسعه و طراحی وب در سطوح پیشرفتهتر امر مهمی به حساب میآید. مقالات آموزشی پیرامون PHP در ادامه فهرست شدهاند:
- برنامهنویسی PHP و هر آنچه برای شروع باید بدانید — آموزش جامع
- طراحی یک وبسایت ساده با PHP — از صفر تا صد
- مجموعه مقالات آموزشی PHP
زبان جاوا اسکریپت
جاوا اسکریپت (JavaScript) نیز درست مثل HTML 5 و CSS یکی دیگر از زبانهای ضروری برای طراحی وب به حساب میآید. با استفاده از جاوا اسکریپت میتوان رفتار صفحات وب را برنامهریزی و آنها را تعاملی کرد. از جمله سایر مواردی که در طراحی صفحات وب با جاوا اسکریپت انجام میشوند، میتوان به ایجاد انیمیشنها و جلوههای بصری جذاب و انجام عملیات مختلفی نظیر تغییر در مدل شی سند (Document Object Model | DOM)، تغییر در CSS و سایر موارد اشاره کرد.
تاکنون مقالات و نوشتههای بسیاری در مجله فرادرس پیرامون زبان برنامهنویسی جاوا اسکریپت و آموزش آن منتشر شده است. در ادامه، برخی از مهمترین مقالات و همچنین صفحه دسترسی به مجموعه مقالات جاوا اسکریپت فهرست شده است:
- جاوا اسکریپت چیست؟ — به زبان ساده
- آموزش جاوا اسکریپت — مجموعه مقالات جامع وبلاگ فرادرس
- پروژههای جاوا اسکریپت | مجموعه مقالات و آموزشها | مجله فرادرس
- پایتون یا جاوا اسکریپت کدام بهتر است؟ — راهنمای جامع
SQL
SQL زبان سادهای برای اجرای عملیات پایگاهداده در یک سیستم مدیریت پایگاهداده رابطهای است. از SQL میتوان برای مدیریت دادهها در پایگاهداده اپلیکیشنهای تحت وب یا سایر انواع برنامههای کاربردی مانند اپلیکیشنهای دسکتاپ و موبایل استفاده کرد. میتوان مقادیر را در یک جدول درج یا حذف کرد، آنها را ویرایش کرد، جدولها را ایجاد یا پاک کرد و همچنین بسیاری از موارد دیگر نیز با SQL در پایگاهداده قابل انجام است.
برخی از مهمترین مقالات منتشر شده پیرامون SQL به شرح زیر است:
- معرفی زبان SQL — راهنمای جامع
- آموزش دستورهای SQL – مجموعه مقالات جامع وبلاگ فرادرس
- تقلب نامه (Cheat Sheet) دستورهای SQL — راهنمای کاربردی
- ۱۳ دستور SQL مهم که هر برنامهنویسی باید بداند (+ دانلود فیلم آموزش گامبهگام)
با ارائه مقدمهای بر وب، پروتکل HTTP و پرداختن به طراحی و توسعه وب، نوبت به یکی دیگر از مباحث مطرح شده در درس مهندسی اینترنت، یعنی ایجاد کاربردهای ساده وب رسیده است.
برنامه نویسی سوکت
در این بخش، مفاهیم اساسی برنامهنویسی سوکت آموزش داده شده است. برای ساخت و ایجاد هر اپلیکیشن تحت شبکه و اینترنتی، نیاز به برنامهنویسی سوکت وجود دارد. مرورگرهای وب مثال خوبی از اپلیکیشنهای وب یا شبکه هستند. مرورگرها صفحات وب را از وب سرورها دریافت کرده و نمایش میدهند.
از جمله سایر کاربردهای وب میتوان به کلاینتهای FTP اشاره کرد که دادهها را از سرورهای FTP دریافت میکنند. برای درک چگونگی عملکرد این ابزارها و نحوه برقراری ارتباط و تبادل داده میان آنها، باید درکی از برنامهنویسی سوکت وجود داشته باشد. در ادامه به مفاهیمی اشاره شده است که قبل از شروع یادگیری برنامهنویسی سوکت باید آشنایی لازم با آنها وجود داشته باشد.
پیش نیازهای آموزش برنامه نویسی سوکت
در ادامه پیشنیازهای آموزش برنامهنویسی سوکت فهرست شدهاند:
- مبانی TCP ،IP و UDP : تعاریف و تفاوتهای آنها
- مبانی برنامهنویسی به زبان C
- ساختمان دادهها
- کامپایل کد در لینوکس با استفاده از GCC
- یا کامپایل همه برنامهها در ویندوز با استفاده از کتابخانه Winsock
قبل از شروع یادگیری برنامهنویسی سوکت باید درکی از نحوه کارکرد یک وباپلیکیشن وجود داشته باشد. برای هر اپلیکیشن تحت شبکه نیازمندیهایی وجود دارد:
- در هر دو طرف نیاز به یک نقطه نهایی (End Point) برای برقراری ارتباط وجود دارد.
- نیاز به یک نشانی (آدرس) منحصربهفرد وجود دارد.
- یکی از نقاط انتهایی باید آغازگر ارتباط با دیگری باشد.
- نقطه نهایی دیگر نیز باید در یک وضعیت آماده برای شروع برقراری ارتباط قرار داشته باشد.
- با برقراری ارتباط، دادهها انتقال داده میشوند.
- با پایان تبادل دادهها، نقاط انتهایی ارتباط را قطع میکنند.
ارتباط بین سوکتها
در دنیای سوکتها، عملیات فوق به صورت زیر انجام میشود:
- Socket(): برای ایجاد نقطه نهایی برای برقراری ارتباط از فراخوانی سوکت استفاده میشود.
- Bind(): برای تخصیص یک آدرس منحصربهفرد به نقاط انتهایی از Bind استفاده میشود. Bind ترکیبی از آدرس IP و آدرس پورت است.
- Listen(): با فراخوانی Listen، نقاط انتهایی برای شروع ارتباط منتظر میمانند.
- Connect(): آن نقطه انتهایی که قصد برقراری ارتباط با نقطه دیگر را دارد، از Connect استفاده میکند.
- Accept(): پردازهای که در انتظار برقراری ارتباط است، از Accept برای پذیرفتن درخواست اتصال استفاده میکند.
- Send() و Recieve(): با برقراری ارتباط، از Send و Recieve برای تبادل (ارسال و دریافت) داده استفاده میشود.
- Close(): پس از خاتمه تبادل داده، برای قطع ارتباط از Close استفاده میشود.
مدل کلاینت-سرور چیست ؟
در دنیای برنامهنویسی سوکت تقریباً تمام ارتباطات شبکه را میتوان در مدل کلاینت-سرور جای داد. اما مدل کلاینت-سرور چیست؟ در این مدل، یک سرور موجودیتی است که اطلاعات را فراهم و ارائه میکند. در طرف مقابل، کلاینت به موجودیتی گفته میشود که به دنبال دریافت اطلاعات است. یک مثال ایدهآل میتواند یک سرور آپاچی باشد که صفحات وب را ارائه میدهد و یک کلاینت هم میتواند مرورگر اینترنت اکسپلورر یا فایرفاکس باشد که صفحات وب را از وب سرور دریافت میکند.
در یک سازِکار کلاینت-سروی، سرور منتظر میماند تا یک کلاینت به آن متصل شود. پس از اینکه یک کلاینت با موفقیت به سرور متصل میشود، درخواست خود برای دریافت اطلاعات را ارسال میکند. سرور این اطلاعات را به کلاینت منتقل میکند و در پایان سرور ارتباط را قطع میکند و منتظر کلانت دیگری مینشیند. تعامل کلاینت و سرور در دو قالب TCP و UDP انجام میشود که در ادامه به تعامل TCP پرداخته شده است.
تعامل کلاینت-سرور در قالب TCP
در این بخش پیرامون برنامهنویسی سوکت در تعامل سرور و کلاینت در قالب پروتکل TCP بحث شده است. در تصویر فوق، گامهای ارتباط میان کلاینت و سرور تجزیه و تفکیک شده است. در ابتدا، سرور سوکت را فراخوانی میکند. این کار نقطه نهایی ارتباط سرور را ایجاد میکند. کلاینت نیز همین کار را انجام داده و socket() را فراخوانی میکند. سپس سرور bind() را برای اتصال یک آدرس منحصربهفرد فراخوانی میکند.
این آدرس منحصربهفرد یک آدرس IP و شماره پورتی است که سرور روی آن به درخواستها گوش میدهد. در این مرحله، کلاینت از فراخوانی Connect() برای برقراری ارتباط با سرور استفاده میکند. سپس، با دریافت درخواست برقراری ارتباط، سرور accept() را برای پذیرش ارتباط با یک کلاینت خاص فراخوانی میکند. پس از برقراری ارتباط، هر دو نقطه نهایی برای انتقال داده بین یکدیگر، توابع Read() و Write() را فراخوانی میکنند. پس از پایان انتقال داده، از Close() برای بستن و خاتمه اتصال استفاده می شود.
ایجاد وب اپلیکیشن ساده
هدف از مبحث ایجاد وب اپلیکیشن ساده در درس مهندسی اینترنت ، پیادهسازی عملی توسعه و طراحی وب به وسیله مجموعهای از زبانها و ابزارهای این حوزه در قالب یک مثال ساده است. در اینجا باید فناوری (زبانها و ابزارهای) مورد استفاده انتخاب شود. همانطور که در بخش قبل مطرح شد، فناوریهای مختلفی برای توسعه وب وجود دارد. اینکه از کدام زبان برنامهنویسی، کتابخانه و فریمورک استفاده شود، کاملاً بستگی به استاد و منابع درس مهندسی اینترنت دارد.
اکثر منابع فارسی درس مهندسی اینترنت و همچنین بسیاری از اساتید دانشگاههای مختلف از فناوری جاوا استفاده میکنند. زیرا با وجود اینکه جاوا یک فناوری قدیمی به حساب میآید، اما امکانات گسترده آن باعث شده است که در کاربردهای تجاری و پروژههای بزرگ همچنان از جاوا استفاده شود. همانطور که بیان شد، یکی از اهداف درس مهندسی اینترنت آموزش توسعه اپلیکیشنهای تجاری است.
بنابراین، در ادامه و این بخش از آموزش درس مهندسی اینترنت، به معرفی منابع آموزشی پیرامون فناوری جاوا برای طراحی و توسعه وب پرداخته شده است. البته از فناوریهای دیگری نظیر PHP و داتنت نیز در فهرست مباحث وزارت علوم برای درس مهندسی اینترنت نام برده شده است. لذا پس از پرداختن به توسعه وباپلیکیشن با جاوا و در پایان این مقاله، منابع آموزشی پیرامون توسعه وب با PHP و داتنت نیز معرفی خواهند شد. ابتدا فهرستی از مقالات مرتبط با ایجاد وباپلیکیش آمده است:
- انتخاب بهترین فریمورک برای توسعه وباپلیکیشن | راهنمای کاربردی
- آشنایی با شیوه طراحی وب اپلیکیشن — راهنمای کاربردی
- توسعه وب اپلیکیشن با جاوا اسکریپت و Webpack — راهنمای کاربردی
آشنایی با جاوا (Java)
جاوا یک زبان برنامهنویسی محبوب ساخته شده در اواسط دهه هفتاد شمسی است. جاوا تحت مالکیت Oracle قرار دارد.
کاربردهای شاخص جاوا به شرح زیر است:
- توسعه اپلیکیشنهای موبایل (مخصوصاً اپلیکیشنهای اندروید)
- ساخت اپلیکیشنهای دسکتاپ
- ایجاد وباپلیکیشنها
- توسعه وبسرورها و اپلیکیشن سرورها
- ساخت بازی
- ارتباط پایگاهداده
- و بسیاری از موارد دیگر
مطلب جامع و کاربردی پیرامون زبان جاوا به نام «زبان برنامه نویسی جاوا (Java) — از صفر تا صد» ارائه شده است که مطالعه آن برای آشنایی با جاوا توصیه میشود. همچنین، برخی از مقالات آموزش جاوا در ادامه فهرست شده است:
- مجموعه آموزش مقدماتی جاوا — از صفر تا صد: هدف این مجموعه مقالات، آشنایی با زبان برنامه نویسی جاوا به شیوهای ساده و مؤثر است. این مجموعه مقالات شامل پنج بخش است:
- برای مطالعه بخش اول + اینجا کلیک کنید.
- برای مطالعه بخش دوم + اینجا کلیک کنید.
- برای مطالعه بخش سوم + اینجا کلیک کنید.
- برای مطالعه بخش چهارم + اینجا کلیک کنید.
- مجموعه آموزش جامع برنامهنویسی جاوا به زبان ساده: در این مجموعه مقالات آموزش جاوا، مباحث بیشتری پوشش داده شده، به طوری که شامل پانزده بخش است. با مطالعه کامل تمامی بخشهای این سلسله آموزشها، آشنایی با برنامهنویسی شیءگرا (OOP) و توسعه برنامههای واقعی با استفاده از زبان و پلتفرم جاوا به دست خواهد آمد. با کلیک روی هر یک از اعداد ۱، ۲، ۳، ۴، ۵، ۶، ۷، ۸، ۹، ۱۰، ۱۱، ۱۲، ۱۳، ۱۴ و ۱۵ میتوان به بخش متناظر با آن دسترسی پیدا کرد.
- پایتون یا جاوا کدام بهتر است؟ — راهنمای جامع
- ۱۰ مفهوم اصلی زبان جاوا که هر فرد مبتدی باید بداند
- مفاهیم برنامه نویسی شیئ گرا در جاوا — به زبان ساده
- متدهای جاوا — به زبان ساده
- ساخت یک ماشین حساب ساده در جاوا — از صفر تا صد
آشنایی با Servlet
سرولت (Servlet) روشی برای تولید صفحات وب پویا (Dynamic) با جاوا است. سرولتها برنامههای جاوایی هستند که روی وبسرورها یا اپلیکیشنسرورهای مبتنی بر جاوا اجرا میشوند. سرولتها برای مدیریت درخواستهای دریافتی از وبسرور، پردازش درخواستها، تولید پاسخها و سپس ارسال پاسخها به وبسرور استفاده میشوند.
سرولتها معمولاً وقتی اجرا میشوند که کاربر روی یک لینک کلیک و فُرمی را ثبت میکند یا هر عملیات دیگری روی یک وبسایت انجام میدهد. سرولتها قابلیت مدیریت درخواستهای پیچیده دریافتی از وبسرور را دارا هستند. نمودار معماری Servlet در تصویر زیر نمایش داده شده است.
آشنایی با JSP
صفحات جاوا سرور (JavaServer Pages) یک فناوری استاندارد جاوا است که امکان نوشتن صفحات پویا و مبتنی بر دادهها را برای وباپلیکیشنهای توسعه داده شده با زبان جاوا فراهم میسازد. JSP بر اساس Servlet ساخته شده است و این دو اغلب در ساخت وباپلیکیشنهای قدیمیتر جاوا استفاده به کار گرفته شدهاند.
از دیدگاه کدنویسی، تفاوت واضح میان JSP و Servlet این است که در Servlet ابتدا کدهای جاوا نوشته میشوند و سپس کدهای HTML سمت کلاینت در داخل آن ادغام میشوند. این در حالی است که در خصوص JSP، کار با نشانهگذاری سمت کلاینت آغاز شده و سپس برچسبهای JSP برای اتصال صفحه به بکاند جاوا ادغام میشوند.
الگوی معماری سه لایه
یکی دیگر از سرفصلهای درس مهندسی اینترنت الگوی معماری سه لایه است. معماری سه لایه نوعی از معماری نرمافزار است که از سه «رده» یا «لایه» تشکیل میشود. از این الگوی معماری اغلب در اپلیکیشنها به عنوان یک نوع خاص از سیستم کلاینت-سروری استفاده میشود. معماری سه لایه مزایای بسیاری برای محیطهای تولید و توسعه به وسیله ماژولبندی رابط کاربری، منطق کسبوکار و لایههای ذخیره داده فراهم میکند.
بر این اساس، با استفاده از معماری سه لایه، انعطافپذیری بیشتری از طریق امکان بهروزرسانی مستقل بخش خاصی از یک اپلیکیشن به طور جداگانه از سایر بخشها برای توسعهدهندگان وجود خواهد داشت. مطلب جامع و کاربردی پیرامون معماری سه لایه در مجله فرادرس منتشر شده است. مطالعه مطلب «معماری سه لایه در مهندسی نرم افزار چیست؟ | راهنمای جامع» جهت آشنایی جامع با معماری سه لایه پیشنهاد میشود.
الگوی معماری MVC
MVC سرنامی برای مدل-نما-کنترلگر (Model-View-Controller) است. MVC یک مدل طراحی اپلیکیشن است که از سه بخش به هم پیوسته تشکیل میشود. این بخشها شامل مدل (دادهها)، نما (رابط کاربری) و کنترلگر (پردازشی که ورودی را مدیریت میکند) تشکیل شده است. مدل یا «الگوی» MVC به طور رایج برای توسعه رابط کاربری استفاده میشود. MVC بخشهای بنیادی برای طراحی یک برنامه دسکتاپ، موبایل و وباپلیکیشن فراهم میکند.
این الگوی معماری با برنامهنویسی شیگرا به خوبی سازگاری دارد، زیرا مدلها، نماها و کنترلگرهای مختلف را میتوان به عنوان شیٔ در نظر گرفت و از آنها در قسمتهای مختلف اپلیکیشن مجدداً استفاده کرد. مطلب جامعی پیرامون معماری MVC در مجله فرادرس منتشر شده است. برای آشنایی بیشتر با الگوی معماری MVC، مطالعه مطلب «MVC چیست ؟ — آنچه باید درباره معماری MVC بدانید | به زبان ساده» توصیه میشود.
تفاوت معماری سه لایه با MVC چیست؟
با توجه به اینکه MVC نیز یک معماری سه لایه است، ممکن است این سوال به وجود بیاید که آیا این دو الگو با هم یکسان هستند؟ در غیر اینصورت چه تفاوتی با هم دارند؟ در این زمینه باید گفت که به لحاظ مفهومی، معماری سه لایه، یک معماری خطی (Linear) به حساب میآید. بر خلاف آن، معماری MVC ماهیت مثلثی دارد. یعنی لایه نما بهروزرسانیها را به لایه کنترلگر ارسال میکند؛ کنترلگر لایه مدل را بهروزرسانی میکند و لایه نما به صورت مستقیم توسط لایه مدل بهروزرسانی میشود. البته، الگوی معماری MVC ممکن است لزوماً مثلثی نباشد اما، الگوهای معماری چند لایه و سه لایه همواره خطی هستند.
اتصال به پایگاه داده
در درس مهندسی اینترنت، پس از ایجاد یک وباپلیکیشن یا کاربرد وب ساده با PHP ،Servlet یا داتنت، نوبت به یادگیری نحوه اتصال یک وباپلیکیشن به پایگاهداده فرا میرسد. معمولاً دادههایی در پایگاهداده نگهداری میشوند که بین اجزا وب به اشتراک گذاشته شده و به طور پیوسته در یک وباپلیکیشن فراخوانی میشوند. در ادامه، نحوه اتصال پایگاهداده در جاوا شرح داده شده است.
اتصال به پایگاه داده در جاوا
وباپلیکیشنها از API (رابط برنامهنویسی اپلیکیشن) JDBC برای دسترسی به پایگاهدادههای رابطهای استفاده میکنند. JDBC سرنامی برای Java Database Connectivity به معنای اتصال پایگاهداده جاوا است. JDBC یک API سطح پایین برای ایجاد اتصال پایگاه داده و مدیریت کوئریهای SQL و پاسخ آنها محسوب میشود.
API چیست؟
API یک واسط نرمافزاری است که امکان برقراری ارتباط میان دو اپلیکیشن را فراهم میکند.
برای کسب اطلاعات بیشتر پیرامون API، مطالعه مقالات زیر پیشنهاد میشود:
- API چیست؟ — به زبان ساده
- API چیست و APIهای باز چگونه اینترنت را تغییر میدهند؟
- مقدمهای بر API-های وب — راهنمای جامع
در JDCB API، دسترسی به پایگاهدادهها از طریق اشیائی به نام DataSource انجام میشود. یک DataSource دارای مجموعهای از متعلقات (Property) است. این مجموعه متعلقات منبع داده جهان واقعی را که بازنمایاننده آن هستند، شناسایی و توصیف میکنند. این Propertyها شامل اطلاعاتی نظیر موقعیت سرور پایگاهداده، نام پایگاهداده، پروتکل شبکه مورد استفاده برای ارتباط با سرور و سایر موارد هستند. وباپلیکیشنها با استفاده از یک اتصال به منبع داده دسترسی پیدا میکنند. یک شیٔ DataSource را میتوان به یک کارخانه برای اتصال به یک منبع داده خاص تشبیه کرد. پیرامون مبحث اتصال به پایگاهداده در جاوا، مطالعه مقالات زیر توصیه میشود:
- اتصال به پایگاه داده MySQL با استفاده از زبان جاوا — آموزش گام به گام
- روشهای مختلف ایمپورت (Import) پایگاه داده در MySQL — راهنمای جامع
- آموزش مقدماتی جاوا (بخش سوم) – از صفر تا صد
- برنامه اتصال به یک پایگاه داده SQL در نمونه کدهای کاربردی برای برنامهنویسان جاوا
همچنین، برای اتصال به پایگاه داده در PHP مقالات زیر موجود است:
- اتصال PHP به MySQL — به زبان ساده
- ساختار PHP و نحوه اتصال به پایگاهداده MySQL — به زبان ساده
- ایجاد فرم ورود (Login) با PHP — از صفر تا صد
نگاشت اشیا به رابطهها
زبانهای برنامهنویسی شی گرا در ترکیب کردن متغیرها و توابع برای تبدیل آنها به اشیا و کلاسها به کار میروند. به عنوان یک مثال در دنیای واقعی، میتوان شیٔ را مشابه یک اتومبیل در نظر گرفت که دارای متعلقاتی (Property) همچون چرخها است و از خود رفتاری را مثل حرکت کردن نشان میدهد. از سوی دیگر، پایگاهدادههای رابطهای که سیستم مدیریت پایگاهداده رابطهای (DBMS) هم خوانده میشوند، در ایجاد روابط میان جداول به وسیله استفاده از کلیدهای خارجی به خوبی عمل میکنند. میتوان روابط را در دنیای واقعی به مانند رابطه میان یک عنصر مثل مسافر و عنصر دیگری مثل صندلی هواپیما تصور کرد. این دو عنصر به وسیله یک شناسه منحصربهفرد یعنی بلیت هواپیما با یکدیگر مرتبط میشوند.
امروزه اکثر اپلیکیشنها با یک زبان شیگرا نوشته میشوند و همچنین از یک پایگاهداده رابطهای برای ذخیره دادهها استفاده میکنند. در نتیجه، نیاز به روشی برای ایجاد هماهنگی میان اشیا و روابط به وجود میآید. نگاشت شیٔ-رابطهای (Object-Relational Mapping | ORM) مضمونی است که امکان دستکاری دادهها در یک پایگاهداده را از طریق یک موجودیت شیگرا به وجود میآورد. به بیان دیگر، ORM اجازه میدهد با استفاده از هر زبان برنامهنویسی دلخواهی و بدون نیاز به زبان SQL، دادهها را در پایگاهداده فراخوانی کرده یا تغییر داد.
فرآیند تبدیل دادهها به اشیا، Hydration نامیده میشود. Hydration معمولاً شامل تبدیل مقادیر ستونهای جدول در پایگاهداده به Propertyهای یک شیٔ است. همچنین، توضیحاتی هم در مطلب «پایتون و نگاشتهای شیٔ-رابطه ای (ORM) — هر آن چه باید در این مورد بدانید» پیرامون ORM موجود است.
سازمان دهی منطق دامنه
سازماندهی اصولی کدها و مخصوصاً سازماندهی منطق دامنه (Organizing Logic Domain) برای امر نگهداری یا نگهداشتپذیری یک پروژه بسیار دارای اهمیت است. برای درک بهتر این موضوع، میتوان یک فروشگاه کتاب یا کتابخانه را در نظر گرفت. در صورتی که کتابی در قفسه اشتباه قرار داده شود، بعداً نمیتوان آن کتاب را پیدا کرد. چنین چیزی در کدنویسی هم اتفاق میافتد. اگر محل مشخصی برای قرار دادن یک قطعه خاص از کدها وجود نداشته باشد، سایر توسعهدهندگان متوجه وجود چنین کدهایی نخواهند شد و تصور خواهند کرد که این کدها وجود ندارند. بنابراین، دوباره اقدام به کدنویسی خواهند کرد که این مسئله باعث اتلاف وقت و منابع خواهد شد.
منطق دامنه چیست؟
منطق دامنه در واقع همان دنیایی است که اپلیکیشن در آن زیست میکند. به عنوان مثال، اگر یک توسعهدهنده روی سامانه خرید بلیت هواپیما کار میکند، دامنه اپلیکیشن یا همان منطق دامنه، «خرید بلیت هواپیما» خواهد بود.
الگوهای سازماندهی منطق دامنه
سه الگوی اصلی برای سازماندهی منطق دامنه وجود دارد که در ادامه فهرست شده است:
- اسکریپت تراکنش (Transaction Script): در این الگو از برنامهنویسی رویهای (Procedural) استفاده میشود. در این الگو، برای هر کاری که یک کاربر میتواند انجام دهد، یک روند (Procedure) خاص وجود دارد . اگرچه، این به این معنا نیست که روند مربوطه تماماً دارای منطق است. اسکریپت تراکنش روش سادهای برای سازماندهی کدها و کارهای ممکن به حساب میآید. اما با رشد پیچیدگی، این روش کافی نخواهد بود، چرا که نمیتواند از تکرار کدها جلوگیری کند و بنابراین به دوگانگی منطق منجر خواهد شد.
- مدل دامنه (Domain Model): در این الگو از برنامهنویسی شیگرا استفاده میشود و مدلی از دامنه ساخته میشود که پیرامون فاعلها در دامنه سازمان مییابد. لذا، یک فاعل با یک شیٔ مطابقت داده میشود. خصوصیتهای آن فاعل همان متعلقات شیٔ هستند و کاری که میتواند انجام دهد هم API شیٔ (متُدهای عمومی) خواهد بود. برتری بزرگ این رویکرد این است که امکان مدیریت منطق فوق پیشرفته را به گونهای منظم و قابل نگهداری فراهم میکند.
- ماژول جدول (Table Module): این نوع از سازماندهی، حد میانه اسکریپت تراکنش و مدل دامنه به حساب میآید. ماژول جدول، منطق دامنه را به جای اشیا دامنه یا عملیات محض، بر اساس جداول سازماندهی میکند. ماژول جدول ساختار بهتری نسبت به یک اسکریپت تراکنش فراهم میکند و جلوگیری از تکرار کدها در آن بهتر انجام میشود. اما، فراهمسازی سازکارهایی را که یک مدل دامنه برای الگوها، روشها و راهبُردها از طریق شیگرایی مهیا میکند، در ماژول جدول انجام نمیشود.
لایه خدمات
یک راه دیگر برای سازماندهی بیشتر دامنه، تقسیم کردن لایه دامنه به دو بخش است: لایه خدمات و لایه مدل. در ادامه در خصوص این دو لایه توضیحاتی ارائه شده است.
- لایه خدمات: لایه رابط کاربری (که کنترلگرها هستند) تنها از طریق لایه خدمات با دامنه تعامل خواهد داشت. به این ترتیب، لایه خدمات یک API شفاف برای تعامل با منطق دامنه فراهم میکند. خدمات در این لایه میتوانند فقط نماها باشند که به سادگی فراخوانیها را به اشیا دامنه منتقل میکنند، یا خدمات (نماها) میتوانند مقدار زیادی از منطق کسبوکار را نگهداری کنند. با این کار، دامنه اشیا بسیار ساده یا حتی تضعیف خواهد شد.
- لایه مدل: در این لایه، اشیائی که چیزی مرتبط در دامنه (موجودیتها) را منعکس میکنند و در نهایت کلاسهای عملیاتی فرعی قرار داده میشود.
چارچوب ها و الگوهای لایه نمایش در وب
الگوها نقش مهمی در توسعه وب ایفا میکنند. الگوهای طراحی راهکارهایی استاندارد برای مسائل طراحی نرمافزار هستند. الگوهای بسیاری به خوبی مستند شدهاند و امکان فراگیری و بهکارگیری یک روش اصولی برای توسعه را فراهم میکنند. یکی از کتابهای محبوب در این زمینه، کتاب الگوهای طراحی (Design Patterns) است که در بخش منابع درس مهندسی اینترنت معرفی شد. یک منبع دیگر هم کتاب الگوهای معماری اپلیکیشنهای تجاری نوشته مارتین فاولر است.
همانطور که بیان شد، این کتاب به عنوان منبع رسمی وزارت علوم برای درس مهندسی اینترنت معرفی شده است. اثر مارتین فاولر تلفیقی از الگوهای تخصصی و تعمیمیافته است. فاولر الگوی مدل-نما-کنترلگر (MVC) را در ارتباط با توسعه وب پوشش داده است و همچنین تعدادی از گونههای دیگر MVC با کنترلگر صفحه و کنترلگر فرانت را نیز توصیف میکند.
در یک وباپلیکیشن، یک درخواست از طریق پروتکل HTTP وارد و به کنترلگر تحویل داده میشود. از این جا به بعد، راههای مختلفی برای نحوه تعامل مدل و نما وجود دارد. در یک رویکرد منفعل (Passive Approach)، کنترلگر اطلاعات را به مدل انتقال میدهد تا مدل خود را بهروزرسانی کند. سپس، کنترلگر نمای متناظر را فراخوانی میکند. در مرحله بعد، نما وضعیت (State) فعلی را از مدل بازیابی میکند. پس از آن، نما در پاسخ HTTP، به کلاینت بازگردانده میشود.
مدل در رویکرد منفعل، تعامل اندکی با نما دارد. این تعامل تنها برای پاسخ به نما در ازای هر درخواست اطلاعات وضعیتی انجام میشود. یک رویکرد فعالانهتر (Active Approach) میتواند به این صورت باشد که مدل در عمل کار اطلاعرسانی (Notify) به نما یا هر مدل دیگری را انجام دهد. کنترلگر در یک وباپلیکیشن میتواند به روشهای مختلفی پیادهسازی شود. رایجترین رویکردها کنترلگر صفحه و کنترلگر فرانت هستند.
کنترلگر صفحه
در کنترلگر صفحه (Page Controller) هر صفحه در یک سایت به عنوان یک کنترلگر برای یک یا تعدادی نما عمل میکند. برای مثال، یک فراخوانی به userlist.php ممکن است فهرستی از کاربران را نمایش دهد و useredit.php مسئولیت افزودن، ویرایش و حذف توابع را بر عهده خواهد داشت. هر عمل نمای متفاوتی ارائه میدهد، اما همگی به کاربر مرتبط هستند. در این سناریو، نما و کنترلگر تمایل دارند ارتباط نزدیکتری داشته باشند، چرا که کنترلگر برای مدیریت تعداد نماهای خاصی طراحی شده است. مدل همچنان در داخل کلاسهای مربوط به خودش مستقل و جدا است و توسط نما فراخوانی میشود.
کنترلگر فرانت
در یک کنترلگر فرانت (Front Controller)، تمام کارها از طریق یک کنترلگر مرکزی انجام میشوند. این کنترلگر مرکزی، از یک دیکشنری استفاده میکند تا کنترلگر مشخص کند که باید کدام مدل را بهروزرسانی یا درخواست را به کدام مدل ارسال کند. این رویکردی است که به وسیله بسیاری از وباپلیکیشنها شامل WordPress و eZpublish به کار گرفته شده است.
ملاحظاتی پیرامون الگوهای نمایش وب
به طور کلی و در یک جمعبندی میتوان گفت که الگوهای طراحی، انتزاعی را به وجود میآورند که پیادهسازی و استفاده مجدد را تسهیل میبخشد. اما، اعتبارسنجی الگوها به عنوان یک ابزار حائز اهمیت است. اینکه فرد سعی کند از همه الگوها استفاده کند، درست نیست، زیرا منجربه «طراحی ترکیبی» (Synthetic Designs) میشود؛ طراحی که بر مبنای حدس و گمان است و انعطافپذیری غیر ضروری به وجود میآورد. بنابراین، رمز موفقیت در این است که تا حد امکان از الگوهای طراحی کمتری استفاده کرده و مناسبترین الگوها به کار گرفته شوند.
مدیریت نشست
برای بحث پیرامون مدیریت نشست (Session Managment | مدیریت جلسه)، ابتدا باید دانست که یک نشست وب (Web Session) چیست؟
نشست چیست؟
یک نشست یا جلسه وب مجموعهای از کارهای پیوستهای است که توسط یک بازدید کننده در یک سایت در یک چارچوب زمانی معین انجام میشود. این مجموعه کارها میتواند شامل جستجوهای مربوط به موتور جستجوی سایت، پر کردن فرم برای دریافت محتوا، حرکت در یک صفحه وب (Scrolling)، افزودن اقلامی به یک سبد خرید، جستجوی هزینه بلیت یا صفحات بازدید شده در وبسایت باشند. هر تعاملی که با یک وبسایت توسط کاربر انجام میشود، به عنوان یک نشست وب در Property آن وبسایت ضبط میشود. برای ردیابی نشستها، یک شناسه (ID) در مرورگر کاربر ذخیره میشود.
این شناسه به هر درخواست HTTP ارسال شده در زمان حضور کاربر در سایت، ضمیمه میشود. «نشست» اصطلاحی برای اشاره به مدت زمانی است که یک بازدید کننده در وبسایت سپری میکند. هدف نشست، بازنمود زمان بین ورود بازدید کننده به یک صفحه در سایت و زمان خروج وی از سایت است. کدهایی که آغازگر یک نشست هستند، یک زمان انقضاء هم دارند. بنابراین، یک جلسه حداقل تا جایی که به یک Property وب مربوط است، هیچگاه فراتر از یک مدت زمانی خاص دوام نخواهد داشت. بسته به شرایط، یک توسعهدهنده ممکن است نشست وب را مدت کوتاهی مثلاً پنج دقیقه تعریف کند یا امکان دارد مدت زمان نشست را ۱۴۴۰ دقیقه (معادل یک روز) در نظر بگیرد.
مدیریت نشست چیست؟
اکنون با تعریف یک نشست وب، میتوان به شرح «مدیریت نشست» (Session Managment) در یک وباپلیکیشن پرداخت. مدیریت نشست به فرآیند مدیریت ایمن چندین درخواست به یک اپلیکیشن مبتنی بر وب اطلاق میشود. وبسایتها و مرورگرها از پروتکل HTTP برای ارتباط استفاده میکنند. بنابراین، یک نشست را میتوان مجموعهای از درخواستها و تراکنشهای HTTP در نظر گرفت که توسط یک کاربر آغاز شده باشند. معمولاً یک نشست زمانی شروع میشود که کاربر تایید هویت خود را از طریق شناسه کاربری و رمز عبور یا هر پروتکل تایید هویت دیگری انجام میدهد.
مدیریت نشست شامل به اشتراکگذاری منابع خاص با آن دسته از کاربرانی است که تایید هویت شده باشند. HTTP یک پروتکل بدون حالت است؛ یعنی هر زوج درخواست و پاسخ، مستقل از سایر تعاملهای وب هستند. بنابراین، جهت معرفی مفهوم یک نشست، لازم است تا قابلیتهای مدیریت نشست پیادهسازی شوند. این قابلیتها، ماژولهای تایید اعتبار و کنترل دسترسی (تایید مجوزی) را پیوند میدهند که معمولاً در وب قابل دسترسی است.
نوشته مفید و کاربردی پیرامون مدیریت نشست در مجله فرادرس با عنوان «شیوه استفاده از نشست ها (Session) در PHP — به زبان ساده» منتشر شده است که مطالعه آن برای آشنایی با مبانی مدیریت نشست در PHP پیشنهاد میشود.
کنترل همروندی
در یک سیستم مدیریت پایگاه داده (DBMS)، کنترل همروندی (Concurrency Control) دسترسی همزمان به یک پایگاهداده را مدیریت میکند. کنترل همروندی از ویرایش یک رکورد توسط دو کاربر به طور همزمان جلوگیری میکند و همچنین تراکنشها را برای پشتیبانگیری و بازیابی (Recovery) به صورت نوبتی مرتبسازی میکند.
سیستم های وب توزیع شده
یک سیستم توزیع شده سیستمی است که اجزا آن در چند ماشین توزیع شدهاند و این اجزا از طریق شبکه و با ارسال پیام با یکدیگر ارتباط برقرار میکنند. پروتکل پیامرسانی و نحوه برقراری ارتباط این اجزا، به وسیله یک API خاص تعریف میشود. این API برای حمایت و پشتیبانی از برقراری ارتباط میان اجزا سیستم ساخته شده است. در این سیستم پیامرسانی، اجزا سیستم فعالیتها و کارهای خود را با استفاده از یک مدل ارتباطی (Communication Modle) هماهنگ میکنند. یک مدل رایج ارتباطی، مدل Master/Slave (ارباب/برده) است.
در این مدل یک Master (ارباب) وجود دارد که جریان را کنترل میکند و چندین Slave (برده) که براساس وظایف محول شده توسط Master عمل میکنند. این مدل ارتباطی در Apache Spark پیادهسازی شده است که به آن Driver and Executors (راننده و مجریان) گفته میشود. که راننده همان Master و مجریان همان Slaveها هستند. چندین راه برای طراحی معماری یک سیستم توزیع شده با مدلهای ارتباطی مختلفی مثل کلاینت-سرور، سه لایه، n لایه یا نظیر به نظیر (Peer-to-Peer) یا طبقهبندیهایی نظیر اتصال سُست (Loose Coupling) یا اتصال فشرده (Tight Coupling) وجود دارد.
خوشه بندی و محاسبات ابری
خوشهبندی و محاسبات ابری یکی دیگر از سرفصلهای درس مهندسی اینترنت به شمار میرود. در این بخش به معرفی دو مفهوم خوشهبندی و محاسبات ابری پرداخته و منابع آموزشی کاربردی پیرامون آنها معرفی شده است.
خوشهبندی
محاسبات خوشهای اشاره دارد به تعداد زیادی کامپیوتر که به یک شبکه متصل هستند و به صورت «یک موجودیت» عمل میکنند. محاسبات خوشهای، راهکارهایی را برای حل مسائل پیچیده به وسیله فراهمسازی سرعت محاسباتی بیشتر ارائه میدهد. کامپیوترهای متصل همگی باهم درست مثل یک سیستم واحد (ماشین مجازی) عملیات انجام میدهند. این فناوری شبکه بر اساس اصل سیستمهای توزیع شده عملیات خود را انجام میدهد. و در اینجا، شبکه محلی (LAN) واحد اتصال دهنده به حساب میآید. برخی از ویژگیهای محاسبات خوشهای به شرح زیر است:
- نوع تمام کامپیوترها یکسان است.
- کامپیوترهای یک خوشه از طریق اتصالات اختصاصی شبکه به هم متصل هستند.
- تمام کامپیوترها از یک انباره محلی (Home Directory) مشترک استفاده میکنند.
محاسبات ابری
به سادهترین بیان، محاسبات ابری یعنی به جای کامپیوتر شخصی، ذخیرهسازی و دسترسی به دادهها و برنامهها از طریق اینترنت انجام شود. در واقع محاسبات ابری خدمات سختافزاری و نرمافزاری از جانب یک ارائهدهنده در اینترنت است. به بیان دقیقتر، محاسبات ابری به تقاضا برای تحویل منابع فناوری اطلاعات، خصوصاً قدرت محاسباتی و فضای ذخیرهسازی، از طریق اینترنت و به صورت «پرداخت به میزان استفاده» (Pay Per Use) اطلاق میشود. جهت آموزش بیشتر پیرامون محاسبات ابری، مطالعه مطلب «آموزش رایانش ابری (Cloud Computing) — از صفر تا صد» پیشنهاد میشود.
در ادامه آموزش درس مهندسی اینترنت به شرح مباحث امنیتی در توسعه وباپلیکیشنها پرداخته شده است.
امنیت وب اپلیکیشنها
امنیت وباپلیکیشنها جزء محوری هر کسبوکار مبتنی بر وب محسوب میشود. طبیعت جهانی اینترنت، متعلقات وب را در معرض حملات از جانب موقعیتهای مختلف، مقیاسها و سطوح پیچیدگی گوناگون قرار میدهد. امنیت وباپلیکیشن به طور خاص با بحث امنیت پیرامون وبسایتها، کاربردها و خدمات وب نظیر APIها سر و کار دارد.
آسیبپذیریهای رایج امنیت وباپلیکیشنها چیست؟
حملات بر ضد وباپلیکیشنها شامل مواردی همچون دستکاری هدفمند پایگاهداده یا ایجاد اختلال شبکه در مقیاس وسیع میشود. در ادامه، برخی از روشهای رایج حمله شرح داده شده است.
تزریق اسکریپت از طریق سایت (XSS)
تزریق اسکریپت (Cross Site Scripting) آسیبپذیری است که در آن یک مهاجم اسکریپتهای سمت کلاینت را با هدف دسترسی مستقیم به اطلاعات مهم و جعل هویت کاربر یا فریب او برای افشا اطلاعات حساس در یک صفحه وب تزریق میکند.
تزریق SQL
این شیوه از هک کردن که به آن SQi نیز گفته میشود، روشی است که در آن مهاجم نحوه اجرای کوئریهای جستجو توسط پایگاهداده را برای بهره بردن از آسیبپذیریها شبیهسازی میکند. مهاجمین از SQi برای دستیابی به اطلاعات محرمانه، ویرایش یا ایجاد مجوزهای کاربری جدید و یا دستکاری و تخریب دادههای حساس استفاده میکنند.
حمله منع سرویس
در حملات منع سرویس (Denial of Service | DoS) یا حملات منع سرویس توزیع شده، از طریق انواع روشهای حمله، مهاجمین میتوانند یک سرور هدف یا زیرساختهای مرتبط با آن را تحت فشار و بار مضاعف قرار دهند. زمانی که یک سرور دیگر قادر به پردازش مؤثر درخواستهای ورودی نباشد، دچار کندی شده و در نهایت امکان سرویسدهی به کاربران واقعی را نخواهد داشت.
حملات دیگری نظیر «نقض داده» (Data Breech)، سرریز بافر (Buffer Overflow) و سایر موارد در خصوص امنیت وباپلیکیشنها وجود دارند که شناخت و نحوه مقابله با آنها جهت جلوگیری از بروز حملات سایبری دارای اهمیت است. جهت مطالعه بیشتر پیرامون امنیت کاربردهای وب، مطالعه مقالات زیر پیشنهاد میشود:
- ۱۰ اشتباه امنیتی که نباید در وب اپلیکیشنهای خود مرتکب شوید | راهنمای کاربردی
- ۱۰ نکته امنیتی برای توسعه دهندگان فرانت اند | راهنمای کاربردی
- گواهی امنیتی یک وبسایت چیست و چرا باید به آن توجه کنیم؟
ایجاد سیستمهای وب اتکاپذیر
سازمانها دارای سیستمهای IT متعددی هستند که این سیستمها به تبادل داده ساختیافته هم به صورت داخلی و هم به صورت بین سازمانی نیاز دارند. تبادل داده در این سازمانها به روشهای مختلفی مدیریت میشود. استفاده از راهکارهای مختلف در راهاندازی پیوندهای جدید میان سیستمها یا استفاده مجدد از سیستمهای فعلی، به عدم سازگاری، تاخیر و هزینه مضاعف منجر میشود. سرویسهای وب میتوانند به یک استاندارد واحد برای کل فرآیند تبادل دادههای ساختیافته بدل شوند.
با محقق شدن سرویسهای وب قابل اطمینان، ایمن و استاندارد (Reliable Web Systems)، فناوری واحدی برای ارتباط همزمان و ناهمزمان هم در داخل و هم میان سازمانها قابل استفاده خواهد بود. اول از همه، این کار میتواند به کاهش هزینهها کمک کند و علاوه بر این، فناوری خدمات وب به یک توانمندساز مهم برای معماری مبتنی بر خدمات بدل خواهد شد. به راحتی میتوان خدمات مختلف را در داخل و میان سازمانها منتشر و استفاده کرد که منجربه انعطافپذیری گستردهای خواهد شد.
کارایی سیستم های مبتنی بر وب
در این بخش از آموزش درس مهندسی اینترنت کلیاتی در خصوص مفاهیم مهم پیرامون کارایی و عملکرد وباپلیکیشنها ارائه شده است.
معیارهای کارایی وب اپلیکیشن
در این بخش، برخی از معیارهای پایه در سنجش کارایی و عملکرد کاربردهای وب تعریف شدهاند.
- زمان پاسخدهی (Response Time): پراستفادهترین معیار سنجش عملکرد به حساب میآید و اساساً به عملیات اندازهگیری مستقیم مدت زمان پردازش یک درخواست گفته میشود.
- توان عملیاتی (Throughput): شمارش تعداد درخواستهایی است که اپلیکیشن میتواند در یک فاصله زمانی مشخص پردازش کند. در مورد وباپلیکیشنها، معمولاً شمارش تعداد دفعات نمایش یا درخواست صفحات در ثانیه به عنوان معیار سنجش توان عملیاتی استفاده میشود.
- دسترسپذیری سیستم (System Availability): معمولاً به صورت تفریق میزان زمان اجرای یک اپلیکیشن از مدت زمانی است که یک کاربر امکان دسترسی به اپلیکیشن را ندارد. دسترسپذیری یک معیار سنجش لازم الاجرا محسوب میشود، چرا که در زمان عدم دسترسی به سیستم، مقدار هر دو معیار زمان پاسخدهی و توان عملیاتی صفر خواهد بود. اکثر شرکتها از این معیار به عنوان راهی برای اندازهگیری مدت زمان اجرا (Uptime) برای توافقنامه سطح خدمات (Service Level Agreement | SLA) استفاده میکنند.
- واکنشپذیری (Responsiveness): مربوط میشود به سرعت پذیرش یک درخواست و نه پردازش آن؛ این مسئله در بسیاری از سیستمها اهمیت دارد، زیرا ممکن است در صورت واکنشپذیری ضعیف در یک سیستم حتی با وجود زمان پاسخدهی مناسب، کاربران دلسرد شوند.
عملکرد چیست؟
معیار سنجش عملکرد (Performance) توان عملیاتی یا زمان پاسخدهی است. ارائهدهنده یک سرویس وب میتواند از هر کدام از این دو معیار که اهمیت بیشتری دارند، استفاده کند. در وباپلیکیشنها معمولاً زمان پاسخدهی محبوبیت بیشتری دارد. از دیدگاه یک کاربر، ممکن است واکنشپذیری اهمیت بیشتری نسبت به زمان پاسخدهی داشته باشد. بنابراین، بهبود واکنشپذیری در برابر از دست دادن زمان پاسخدهی یا توان عملیاتی، میزان عملکرد را افزایش خواهد داد.
مقیاسپذیری چیست؟
عملکرد اپلیکیشن همواره به واسطه محدودیت منابع تحت تأثیر قرار خواهد گرفت. مقیاسپذیری (Scalability) توانایی غلبه بر محدودیتهای عملکردی با افزایش منابع تعریف میشود. فارق از میزان سختافزاری که در دسترس است، در یک نقطه خاص در نهایت کاهش عملکرد اتفاق خواهد افتاد. مقصود از کاهش عملکرد، افزایش زمان پاسخدهی یا محدودیت در توان عملکردی است. آیا افزودن سختافزار بیشتر مشکل را برطرف خواهد کرد؟ اگر جواب مثبت باشد، میتوان مقیاس را گسترش داد. در غیر اینصورت، یک مشکل مقیاسپذیری وجود خواهد داشت.
به بیان دیگر، مقیاسپذیری یا گسترشپذیری اندازهگیری این مسئله است که افزودن منابع چگونه عملکرد را تحت تأثیر قرار میدهد. یک سیستم مقیاسپذیر، سیستمی است که امکان افزودن منابع سختافزاری و دستیابی به بهبود عملکرد متناسب را داشته باشد. مفاهیمی از قبیل نحوه تعریف عملکرد یک اپلیکیشن، آزمایش عملکرد و سایر موارد نیز پیرامون بحث کارایی و عملکرد وباپلیکیشنها یا کاربردهای وب در درس مهندسی اینترنت قابل طرح هستند.
سرویس های وب
سرویسهای وب (Web Service) شامل هر نوع نرمافزار، اپلیکیشن یا فناوری ابری است که پروتکلهای وب استاندارد (HTTP یا HTTPS) را برای تعامل، برقراری ارتباط و تبادل پیام داده (معمولاً XML) در اینترنت فراهم میکند. به بیان دیگر، سرویسهای وب سیستمهای تبادل داده در قالب XML هستند که از اینترنت برای ارتباط اپلیکیشن به اپلیکیشن و تعامل استفاده میکنند.
این پردازشها شامل برنامهها، پیامها، اسناد و اشیا میشوند. اپلیکیشنها ممکن است به زبانهای مختلفی کدنویسی شده باشند اما یک ویژگی کلیدی سرویسهای وب این است که با وجود متفاوت بودن فناوری ساخت کاربردهای وب، این اپلیکیشنها همچنان میتوانند از طریق یک وب سرویس به تبادل داده و ارتباط با یکدیگر بپردازند. به طور کلی، یک وب سرویس از قابلیتهای عمده زیر تشکیل شده است:
- در شبکه اینترنت و اینترانت در دسترس است.
- سیستم پیامرسانی استاندارد XML
- به یک سیستمعامل یا زبان برنامهنویسی خاص وابسته نیست.
- از طریق یک متد موقعیتیابی ساده قابل دسترسی است.
یک سرویس وب با SOAP ،WSDL ،XML ،HTML و سایر استانداردهای متنباز از برقراری ارتباط میان اپلیکیشنهای مختلف پشتیبانی میکند. XML دادهها را برچسبگذاری میکند، SOAP پیامها را متنقل میکند و WSDL دسترسپذیری سرویس را توصیف میکند.
چرا نیاز به وب سرویس وجود دارد ؟
کاربردهای تجاری دنیای امروز از بسترهای برنامهنویسی مختلفی برای توسعه اپلیکیشنهای مبتنی بر وب استفاده میکنند. برخی از اپلیکیشنها ممکن است با جاوا توسعه داده شده باشند، برخی با داتنت و برخی دیگر نیز ممکن است با Node.js ،Angular JS و موارد دیگر ساخته شده باشند.
غالباً این اپلیکیشینهای ناهمگون ممکن است نیاز داشته باشند به نوعی با یکدیگر ارتباط برقرار کنند و چون هر کدام با زبان متفاوتی توسعه داده شدهاند، اطمینان از برقراری ارتباط بدون نقص بسیار دشوار خواهد بود. وب سرویسها در چنین شرایطی وارد عمل میشوند. سرویسهای وب یک بستر مشترک فراهم میکنند که این بستر به چندین اپلیکیشن ساخته شده با زبانهای برنامهنویسی متفاوت اجازه میدهد امکان برقراری ارتباط با یکدیگر را داشته باشند. سرویسهای وب انواع مختلفی دارند که در ادامه به آنها پرداخته شده است.
انواع مختلف سرویس های وب
به طور عمده دو نوع سرویس وب وجود دارد:
- وب سرویسهای SOAP
- وب سرویسهای RESTful
SOAP سرنامی برای Simple Object Access Protocol (پروتکل ساده دسترسی به شیٔ) و یک پروتکل دسترسی استاندارد برای وب سرویس است که قدمت دیرینهای دارد. REST هم که سرنامی برای Representational State Transfer به معنی انتقال حالت بازنمودی است، استاندارد دیگری است که با هدف پاسخ به کمبودهای SOAP پدید آمد.
REST به دنبال اصلاح مشکلات SOAP و فراهم کردن روشهای سادهتر برای دسترسی به سرویسهای وب ارائه شده است. پروتکلهای SOAP و REST در توسعه APIها هم کاربرد دارند. توضیحاتی پیرامون APIها در بخش اتصال به پایگاه داده ارائه شده است. مفهوم API و وب سرویس بسیار به هم نزدیک هستند، اما این دو با هم تفاوت دارند. بنابراین، در ادامه به اختصار پیرامون تفاوت این دو توضیح داده شده است.
تفاوت وب سرویس و API چیست ؟
API رابطی است که امکان اتکا به دادهها و قابلیتهای یک اپلیکیشن دیگر را فراهم میکند، در حالی که وب سرویس یک منبع مبتنی بر شبکه است که یک وظیفه خاص را برآورده میکند. میان API و وب سرویس تداخلی به این شکل وجود دارد که تمام وب سرویسها API هستند اما تمام APIها ممکن است وب سرویس نباشند.
پیرامون APIهای مبتنی بر REST مطلب جامعی با عنوان «REST چیست ؟ | همه چیز درباره RESTful API — به زبان ساده» در مجله فرادرس موجود است که مطالعه آن برای آشنایی بیشتر با مفاهیم این بخش از درس مهندسی اینترنت پیشنهاد میشود. در این مطلب، پیرامون SOAP و تفاوت آن با REST نیز توضیحات کاربردی ارائه شده است. در ادامه، برخی از سایر دورههای کاربردی و مرتبط با آموزش درس مهندسی اینترنت معرفی شدهاند.
جمعبندی
درس مهندسی اینترنت یکی از مهمترین دروس رشته مهندسی کامپیوتر و فناوری اطلاعات به حساب میآید، چرا که موضوع اصلی این درس پیرامون توسعه وب و خصوصاً توسعه کاربردهای تجاری وب است. نقش پررنگ وب و کاربردهای وسیع آن در دنیای امروزی غیرقابل انکار است. بنابراین، با مطالعه دقیق و یادگیری کامل مفاهیم درس مهندسی اینترنت میتوان فرصتهای شغلی بهتری را برای دانشجویان پس از فارغالتحصیلی متصور شد.
نکته مهم در درس مهندسی اینترنت این است که برای توسعه وب باید از بهروزترین فناوریها (شامل زبانهای برنامهنویسی، کتابخانهها و فریمورکهای توسعه وب) استفاده شود. زیرا، آخرین فناوریها همواره دارای امکانات بیشتری هستند و کار با آنها سادهتر است. همچنین، فناوریهای جدیدتر توسعه وب در صنعت و بازار کار رایجتر هستند و تقاضا برای توسعهدهندگان مسلط بر این فناوریها بیشتر است. در این مطلب، نکات مهم پیرامون درس مهندسی اینترنت بیان و به سوالات مهم درباره آن پاسخ داده شد. همچنین، سرفصلهای مهم این درس به اختصار و با بیانی ساده معرفی و شرح داده شدند. منابع آموزشی مختلفی نیز در قالب دورههای ویدئویی و مقالات آموزشی برای هر یک از سرفصلها و مفاهیم درس مهندسی اینترنت معرفی شدند.
کدوم زبان برنامه نویسی (تحت وب ، شبکه،پایگاه داده،اپلیکیشن یا هر چیز دیگه ای ) آموزشش در دوره دبیرستان داره صورت میگیره و جزو سر فصل انهاست برای هنرستانی ها فنی و حرفه ای و کارودانش.
ممنون