مقدمه

در این درس، قصد داریم در مورد ماهیت اینترنت و معماری آن صحبت کنیم و با نحوه‌ی تبادل داده در این شبکه‌ی عظیم جهانی آشنا شویم. در سال‌های اخیر، به لطف گسترش ارتباطات ماهواره‌ای، دامنه‌ی تحت پوشش اینترنت از کره‌ی زمین هم فراتر رفته و فضا را نیز در برمی‌گیرد. بنابراین، اینترنت به معنای واقعی کلمه یک شبکه‌ی جهانی (global network) است. برای اینکه ببینیم اینترنت چطور کار می‌کند و از چه زیرساختی بهره می‌برد، قبل از هر چیز باید با شبکه‌های کامپیوتری و مفاهیم ابتدایی مربوط به آن آشنا شویم؛ به هر حال، اینترنت ماهیتاً یک شبکه‌ی کامپیوتری است و تنها چیزی که آن را از سایر شبکه‌ها متمایز می‌کند، بزرگی و گستردگی آن است. البته بنا نداریم در اینجا وارد جزئیات مطالب مربوط به شبکه‌های کامپیوتری شویم و اساساً نمی‌توان بحث کاملی در این مورد را در یک درس گنجاند. اما مطالب ارائه‌شده در این درس، به گونه‌ای است که خواننده را با ساختار شبکه‌های کامپیوتری و معماری اینترنت آشنا می‌کند و به طور کلی، تمام آنچه یک برنامه‌نویس وب باید در مورد شبکه‌های کامپیوتری و اینترنت بداند، در این درس بیان خواهد شد.

شبکه‌های کامپیوتری

یک شبکه‌ی کامپیوتری (computer network) ساختاری است که امکان به‌اشتراک‌گذاری سرویس‌ها یا تبادل داده بین دستگاه‌های کامپیوتری مختلف را فراهم می‌کند. به زبان ساده‌تر، مجموعه‌ای از چند کامپیوتر که به شکلی به هم متصل شده‌اند که بتوانند با یکدیگر ارتباط برقرار کنند، یک شبکه‌ی کامپیوتری را به وجود می‌آورند. در اینجا منظور از کامپیوتر، فقط کامپیوترهای دسکتاپ و لپ‌تاپ نیست؛ بلکه انواع دستگاه‌های کامپیوتری مانند تبلت‌ها، موبایل‌ها، پرینترها، ساعت‌های دیجیتال و حتی بسیاری از لوازم خانگی مانند یخچال‌ها و تلویزیون‌ها نیز می‌توانند در یک شبکه عضو باشند. به طور کلی، هر دستگاهی که قابلیت ارسال و دریافت داده به شکل الکترونیکی را داشته باشد، می‌تواند عضو یک شبکه‌ی کامپیوتری باشد. در ترمینولوژی شبکه، دستگاه‌های عضو در یک شبکه را host یا node می‌نامند.

سخت‌افزار و نرم‌افزار شبکه

یک شبکه‌ی کامپیوتری دارای یک جنبه‌ی فیزیکی (physical) و یک جنبه‌ی منطقی (logical) است. به طور کلی، سخت‌افزار شبکه و تجهیزاتی که زیرساخت ارتباطی شبکه را می‌سازند، به جنبه‌ی فیزیکی شبکه مربوطند و نرم‌افزارها و پروتکل‌های ارتباطی، جنبه‌ی منطقی شبکه را تشکیل می‌دهند. برای برقراری ارتباط و تبادل داده بین کامپیوترها، به هر دو جنبه‌ی فیزیکی و منطقی شبکه نیاز است. مثلاً اگر بخواهیم دو کامپیوتر را به هم متصل کنیم، ابتدا باید مطمئن شویم روی هر کدام یک کارت شبکه (که به زبان دقیق‌تر، کارت واسط شبکه یا Network Interface Card و به اختصار، NIC نامیده می‌شود) نصب شده باشد که هر دو از استاندارد مشابهی (مانند Ethernet) برخوردار هستند و سپس، ماشین‌ها را با استفاده از یک کابلِ متناسب با آن استاندارد، به هم متصل کنیم؛ این ساده‌ترین زیرساخت فیزیکی ممکن است. اما تبادل داده بین دو ماشین، به یک اتصال منطقی نیز نیاز دارد و برای این منظور، باید نرم‌افزارهایی در هر دو کامپیوتر موجود باشند که این کار را بر اساس قوانین مشخصی (پروتکل‌ها) انجام دهند.

شبکه‌ها بر اساس بزرگی و تعداد دستگاه‌های عضو در آنها، در دو گروه LAN و WAN جای می‌گیرند. یک LAN یا Local Area Network شبکه‌ای است که دستگاه‌های عضو در آن، در یک ناحیه‌ی جغرافیایی کوچک و متمرکز (مانند یک ساختمان یا محوطه‌ی یک دانشگاه) قرار دارند. اما یک WAN یا Wide Area Network نواحی بزرگتری مانند شهرها، کشورها و حتی قاره‌ها را پوشش می‌دهد. یک شبکه‌ی WAN معمولاً ‌از اتصال شبکه‌های LAN به یکدیگر ایجاد می‌شود و اینترنت بزرگترین شبکه‌ی WAN در دنیاست که شامل تعداد بسیار زیادی از دستگاه‌های عضو مانند کامپیوترهای دسکتاپ و لپ‌تاپ، موبایل‌ها و تبلت‌ها، پرینترها، کنسول‌های بازی، تلویزیون‌ها و لوازم خانگی، اتومبیل‌ها، دستگاه‌های پخش‌کننده‌ی مالتی‌مدیا و بسیاری دستگاه‌های دیگر است.

البته بعضی‌ها ترجیح می‌دهند که در دسته‌بندی شبکه‌ها از نظر بزرگی، علاوه بر LAN و WAN، گروه‌هایی را نیز مابین این دو گروه تعریف کنند. برای مثال، PAN یا Personal Area Network به شبکه‌های خانگی گفته می‌شود که اصطلاحاً تک‌نفره هستند و مثلاً گوشی موبایل، تبلت و لپ‌تاپ یک شخص را به هم متصل می‌کنند. همچنین، MAN یا Metropolitan Area Network به شبکه‌هایی گفته می‌شود که نواحی جغرافیایی در سطح یک شهر را پوشش می‌دهند و چیزی بین شبکه‌های LAN و WAN هستند. اما بدون هیچ مشکلی، می‌توان PAN را یک LAN دانست و MAN را نیز یک WAN محسوب کرد و به همین دسته‌بندی ساده اکتفا کرد.

مفاهیم و اصطلاحات مهم شبکه

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

  • Topology: به ترکیب یا چیدمان کامپیوترها در یک شبکه و نحوه‌ی اتصال آنها به یکدیگر، توپولوژی شبکه گفته می‌شود. انواع مختلفی از توپولوژی‌ها (مانند bus، star، mesh، ring و tree) وجود دارد که هر کدام برای سناریوهای مشخصی، مناسب هستند.
  • Process و Interprocess: یک برنامه‌ی در حال اجرا را پروسه (process) می‌نامند. در واقع، یک پروسه، عنصر فعال در یک کامپیوتر است و معمولاً یک اپلیکیشن یا یک سرویس است. ارتباط بین ترمینال‌ها، فایل‌ها و سایر دستگاه‌های ورودی و خروجی (I/O) از طریق پروسه‌ها ممکن می‌شود. حالا برای درک مفهوم واژه‌ی interprocess، رابطه‌ی بین واژه‌های national و international را در نظر بگیرید. در حقیقت، ارتباط بین کامپیوترها در یک شبکه به معنای تبادل داده بین پروسه‌هایی است که روی ماشین‌های مختلف یک شبکه در حال اجرا هستند.
  • Port و Socket: تبادل داده بین پروسه‌ها در یک شبکه از طریق پورت‌ها صورت می‌گیرد. در واقع، پورت، یک نقطه‌ی اتصال منطقی برای پروسه محسوب می‌شود و به نوعی، دروازه‌ی ورود به یک پروسه است. هر پورت می‌تواند شماره‌ای از 0 تا 65535 داشته باشد. سازمان IANA به عنوان مسئول واگذاری آدرس‌های اینترنتی، شماره‌های صفر تا 1023 را به سرویس‌های پرکاربرد و شناخته‌شده‌ای مانند HTTP و SSH و FTP اختصاص داده است و در واقع، این شماره‌ها رزرو شده محسوب می‌شوند. اما سوکت، ترکیبی از آدرس host و شماره‌ی پورت است و هر آدرس سوکت دقیقاً به یک پروسه‌ی مشخص در یک شبکه اشاره می‌کند. برای مثال، شماره‌ی پورت 80 به سرویس HTTP اختصاص دارد اما 1.2.3.4:80 یک آدرس سوکت است که به سرویس HTTP مربوط به host یا دستگاهی به آدرس 1.2.3.4 اشاره می‌کند.
  • Client و Server: کامپیوتر یا پروسه‌ای که داده‌ها، سرویس‌ها یا منابعی را در دسترس سایر کامپیوترها یا پروسه‌ها در یک شبکه قرار می‌دهد، server نامیده می‌شود و در مقابل، هر کامپیوتر یا پروسه‌ای که به داده‌ها یا سرویس‌های ارائه‌شده توسط یک server دسترسی دارد، یک client نامیده می‌شود. مرسوم‌ترین مدل در طراحی شبکه‌های کامپیوتری، مدل client-server است. شبکه‌های client-server معمولاً بر اساس معماری درخواست‌و‌پاسخ (request and response) کار می‌کنند؛ یعنی کلاینت، درخواستی را برای سرور ارسال می‌کند و سرور، درخواست را پردازش کرده و پاسخ مناسب را ارسال می‌کند. البته گاهی سرور و کلاینت، یک مفهوم غیر استاتیک پیدا می‌کنند؛ مثلاً وقتی با استفاده از یک سرویس چت، عکس‌هایی را با دوستتان رد و بدل می‌کنید، در هر ارسال، فرستنده سرور است و گیرنده کلاینت. یعنی نقش کلاینت و سرور بین دو کامپیوتر مدام تغییر می‌کند.
  • Host و Node: هر دستگاه عضو در یک شبکه که قابلیت تبادل داده با سایر دستگاه‌ها را داشه باد، یک host نامیده می‌شود. البته از آنجایی که هر host یک رأس یا گِرِه (node) در گراف شبکه محسوب می‌شود، بعضی‌ها به جای host از اصطلاح node استفاده می‌کنند. یک host می‌تواند کلاینت یا سرور باشد و نیز می‌تواند منبع یا مقصد داده‌های ارسالی باشد. اصطلاح local host برای هر کاربر، به کامپیوتری گفته می‌شود که کاربر مستقیماً روی آن کار می‌کند و در مقابل، هر دستگاه دیگر برای آن کاربر یک foreign host محسوب می‌شود. هر host در شبکه دارای یک آدرس مختص به خود است.
  • Ip Address: آدرس یک host در شبکه، یک آدرس ip نامیده می‌شود و به فرم a.b.c.d است که هر یک از چهار بخش آن، مقداری بین صفر تا 255 دارند (مانند 12.1.158.245). این فرم از ip با نام IPv4 شناخته می‌شود و مجموعاً 232 (بیشتر از چهار میلیارد) آدرس به این فرم، قابل تولید است. اما با افزایش تعداد دستگاه‌های متصل به اینترنت، تمهیداتی برای افزایش تعداد آدرس‌های ip ممکن در اینترنت اندیشیده شد و IPv6 توسط IETF پیشنهاد شد. در این فرم، هر ip عبارتی متشکل از هشت گروه عدد چهار رقمی به فرم هگزادسیمال (در مبنای 16) است که با دو نقطه از هم جدا شده‌اند (مانند 3ffe:1900:4545:3:200:f8ff:fe21:67cf). به این ترتیب، امکان تولید 2128 (یک عدد بی‌نهایت بزرگ) آدرس ip به این فرم وجود دارد. البته فعلاً از هر دو ورژن Ipv4 و Ipv6 در کنار هم استفاده می‌شود اما در آینده IPv6 به طور کامل جایگرین IPv4 خواهد شد.
  • Protocol: یک پروتکل، شامل مجموعه‌ای از قوانین و تعاریف مربوط به ارتباط بین کامپیوترها و فرمت پیام‌های ارسالی بین آنهاست که دستگاه‌های کامپیوتری مختلف با پیاده‌سازی آنها، قادر به برقراری ارتباط با یکدیگر می‌شوند؛ درست مثل مردمی با ملیت‌های مختلف که به‌واسطه‌ی آشنایی با زبان مشترکی مانند انگلیسی، می‌توانند با هم ارتباط برقرار کنند. برخی پروتکل‌‌ها به تبادل داده بین دستگاه‌های یک شبکه مربوط می‌شوند (مانند Ethernet)، برخی دیگر به تبادل داده بین شبکه‌ها مربوطند (مانند IP)، برخی موفقیت‌آمیز بودن فرایند ارسال و تحویل داده را تضمین می‌کنند (مانند TCP) و برخی دیگر نیز به فرمت‌بندی داده‌ها برای اپلیکیشن‌ها مربوط هستند (مانند HTTP). علاوه بر این پروتکل‌های اساسی، پروتکل‌هایی نیز برای مسیریابی، تست و رمزنگاری وجود دارد و همچنین، در برخی سناریوهای خاص، جایگزین‌هایی برای بعضی از پروتکل‌ها وجود دارد؛ برای مثال، در مواردی مانند استریم ویدیو و به طور کلی، در هر موردی که فاکتور «سرعت» بر فاکتور «تضمین رسیدن داده‌ها به مقصد» ارجحیت داشته باشد، از UDP به جای TCP استفاده می‌شود.
  • Ethernet و Wi-Fi: شبکه‌های محلی یا LAN را می‌توان به صورت کابلی (wired) یا بیسیم (wireless) ایجاد کرد. در مورد شبکه‌های کابلی، تکنولوژی Ethernet به دلایلی مانند سادگی و صرفه‌ی اقتصادی، از رقبایی همچون FDDI و ATM پیشی گرفت و به استاندارد اصلی در طراحی شبکه‌های محلی یا LAN تبدیل شد. در مورد شبکه‌های بیسیم نیز تکنولوژی Wi-Fi که از امواج رادیویی با یک فرکانس مشخص برای ارسال داده در شبکه استفاده می‌کند، استاندارد غالب محسوب می‌شود.
  • VPN: شبکه‌های کامپیوتری از نظر سطح دسترسی در دو گروه جای می‌گیرند: شبکه‌های عمومی (public) و شبکه‌های خصوصی (private). اینترنت، بارزترین نمونه از شبکه‌های عمومی است و شبکه‌هایی که در سازمان‌ها و شرکت‌ها برای دسترسی کارکنان ایجاد می‌شوند، نمونه‌هایی از شبکه‌های خصوصی هستند. VPN یا Virtual Private Network یک شبکه‌ی خصوصی است که در دل یک شبکه‌ی عمومی ایجاد می‌شود. برای مثال، یک شرکت یا سازمان می‌تواند یک VPN ایجاد کند و از طریق آن به کارکنانش امکان دهد با استفاده از یک شبکه‌ی عمومی مانند اینترنت، از خانه به شبکه‌ی خصوصی سازمان متصل شوند. در یک VPN داده‌ها به صورت رمزنگاری‌شده رد و بدل می‌شوند و این موجب افزایش امنیت کاربران می‌شود.

بسیار خوب، تا اینجا با ماهیت شبکه‌های کامپیوتری و برخی از مهمترین مفاهیم و اصطلاحات مربوط به این موضوع آشنا شدیم. در ادامه، قصد داریم با معرفی مدل مفهومی OSI جریان داده‌ای در شبکه‌ها را بررسی کنیم و سپس، با مجموعه‌ی پروتکلی TCP/IP به عنوان مکانیزمی که دستگاه‌های عضو در شبکه را به یک زبان مشترک برای برقراری ارتباط با سایر اعضا مجهز می‌کند، آشنا شویم.

مدل مفهومی OSI

اغلب اوقات برای درک پروژه‌های مهندسی پیچیده، آنها را به مؤلفه‌های مستقل کوچکتری تجزیه می‌کنند که از طریق رابط‌های کاربری خوش‌تعریف، با هم کار می‌کنند. شبکه‌های کامپیوتری نیز از این قاعده مستثنی نیستند و مدل مفهومی OSI یا Open Systems Interconnection مؤلفه‌های مستقل یک شبکه را در قالب هفت لایه تعریف می‌کند و از این طریق، ساز و کار و تجهیزات شبکه را مشخص می‌کند و جریان داده‌ها را در یک شبکه به خوبی نشان می‌دهد. جدول زیر، شامل نام و نقش اصلی هر یک از لایه‌های OSI است. ستون سوم این جدول نشان می‌دهد که داده‌ها در هر یک از لایه‌های مدل OSI، چه نامیده می‌شوند.

لایه‌ی OSI نقش لایه داده‌ها
Application داده‌ها توسط اپلیکیشن‌های شبکه (مانند مرورگرهای وب) تولید می‌شوند. data
Presentation داده‌های تولید شده فرمت‌بندی، فشرده‌سازی و گاهی رمزنگاری می‌شوند. data
Session ارتباط بین اپلیکیشن‌ها (پروسه‌ها) به طور منطقی ایجاد و مدیریت می‌شود. data
Transport انتقال داده بدون رخ‌دادن خطا را تضمین می‌کند. segments
Network ارتباط بین ماشین‌های شبکه را مدیریت و کنترل می‌کند. packets
Data link فراهم‌کننده‌ی قابلیت اعتماد (reliability) برای تحویل داده‌ها توسط لایه‌ی physical است. frames
Physical توصیف‌کننده‌ی رسانه‌ی فیزیکی (physical media) در شبکه است. bits

جریان داده‌‌ای در یک شبکه در سمت مبدأ از بالا به پایین و در سمت مقصد از پایین به بالاست. یعنی داده‌های ارسالی از بالاترین لایه یعنی Application شروع می‌کنند و به پایین‌ترین لایه یعنی لایه‌ی Physical می‌رسند اما در سمت مقصد، لایه‌ی Physical اولین جایی است که داده‌ها را دریافت می‌کند و سرانجام داده‌ها به بالاترین لایه یعنی Application تحویل داده می‌شوند. برای به‌خاطر سپردن نام لایه‌های مدل OSI می‌توانید از جمله‌ی زیر استفاده کنید:

All People Seems To Need Data Processing.

مجموعه پروتکلی TCP/IP

مدل مفهومی OSI جریان داده را در شبکه‌های کامپیوتری به خوبی نشان می‌دهد و بیشتر دارای جنبه‌ی تئوریک است و در عمل، از مدلی به نام TCP/IP استفاده می‌شود که با ادغام برخی لایه‌های OSI یک ورژن ساده‌تر و عمل‌گرایانه‌تر از OSI ایجاد کرده است. TCP/IP در واقع، مجموعه‌ای از پروتکل‌هاست و نامش از روی دو مورد از مهمترین پروتکل‌های آن یعنی TCP یا Transmission Control Protocol و IP یا Internet Protocol گرفته شده است.

در یک شبکه‌ی کامپیوتری مانند اینترنت، دستگاه‌های کامپیوتری مختلفی وجود دارد که دارای سخت‌افزارهایی با برندها و مدل‌های متنوع هستند و سیستم‌عامل‌ها و نرم‌افزارهای مختلفی دارند. طبیعتاً برقراری ارتباط بین این دستگاه‌های متفاوت، در حالت عادی امکان ندارد و آنچه که این امر را ممکن کرده، مجموعه‌ی پروتکلی TCP/IP است که توسط همه‌ی این دستگاه‌ها پیاده‌سازی شده است. البته هیچ کاربری نیاز به نصب دستی TCP/IP ندارد؛ چون در اغلب سیستم‌عامل‌ها، این مجموعه به همراه خود سیستم‌عامل نصب می‌شود.

جریان داده در سمت مبدأ از بالا به پایین (یعنی شروع از لایه‌ی Application و پایان در لایه‌ی Physical) و در سمت مقصد از پایین به بالاست. در طی این فرایند، اتفاقات زیر رخ می‌دهد:

  1. داده‌های پیام ارسالی، در لایه‌ی Application تولید و فرمت‌بندی می‌شوند.
  2. سپس، پیام به لایه‌ی Transport فرستاده می‌شود. در این لایه، پیام ارسالی به بخش‌های کوچکتری تجزیه می‌شود و به هر بخش یک TCP header افزوده می‌شود که شامل اطلاعاتی از جمله شماره‌ی پورت مقصد است که مشخص می‌کند در سمت مقصد، چه اپلیکیشن یا پروسه‌ای باید داده‌ها را دریافت کند. هر یک از این بخش‌های دارای TCP header یک سگمنت (segment) نامیده می‌شود.
  3. سگمنت‌ها به لایه‌ی بعدی یعنی Internet فرستاده می‌شوند و در این لایه به هر سگمنت یک IP header افزوده می‌شود و از این به بعد، بسته (packet) نامیده می‌شود. مهمترین اطلاعاتی که در IP header وجود دارد، آدرس ip ماشین مقصد است. به این ترتیب، یک بسته یا packet هم آدرس کامپیوتر مقصد و هم شماره‌ی پورت پروسه‌ی مقصد را می‌داند.
  4. در ادامه، بسته‌ها به لایه‌ی Link وارد می‌شوند و به هر بسته یک Ethernet header افزوده می‌شود که شامل اطلاعاتی از جمله آدرس سخت‌افزاری کارت شبکه‌ی ماشین مقصد (MAC address) است. بسته‌ها بعد از دریافت Ethernet header، فریم (frame) نامیده می‌شوند.
  5. با ورود فریم‌ها به لایه‌ی Physical، داده‌ها به سیگنال‌های الکتریکی و یا پالس‌های نوری قابل حمل در شبکه تبدیل می‌شوند و از طریق رسانه‌ی انتقال (transfer medium) که می‌تواند کابل، فیبر نوری یا امواج رادیویی و یا ترکیبی از اینها باشد، منتقل می‌شوند و به لایه‌ی Physical در سمت مقصد تحویل داده می‌شوند.
  6. در سمت مقصد، عکس مراحلی که در سمت مبدأ رخ داد، انجام می‌شود و داده‌ها با حرکت به سمت بالا در نهایت، به لایه‌ی Application می‌رسند. با حرکت از هر لایه به لایه‌ی بالایی، اطلاعاتی که در لایه‌ی مشابه در سمت مبدأ به عنوان Header اضافه شده بود، از بسته‌ها خارج می‌شوند.

Packet Switching چیست؟

فرض کنید بخواهیم یک کانکس را از مکانی به یک مکان جدید (مثلاً به یک شهر یا کشور دیگر) منتقل کنیم. برای انجام این جابجایی، می‌توانیم کانکس را یکجا و بدون تغییر، درون یک وسیله‌ی نقلیه قرار داده و آن را به محل جدید منتقل کنیم. اما به جای این کار، می‌توانیم کانکس را باز کرده، قطعات آن را تفکیک کنیم و با وسایل نقلیه‌ی سریع‌تر و از مسیرهای متفاوت به مقصد برسانیم و در آنجا مجدداً کانکس را سر پا کنیم. روش اول، اتفاقی است که در یک شبکه‌‌ی تلفن رخ می‌دهد و circuit switching نام دارد و روش دوم، چیزی است که در شبکه‌های کامپیوتری رخ می‌دهد و packet switching نام دارد.

وقتی ارتباط ما با شخصی دیگر توسط تلفن برقرار می‌شود، یک اتصال باز (مدار) بین دو طرف ایجاد می‌شود و این اتصال تا زمانی که تلفن را قطع کنیم، باز می‌ماند و خط انتقال را مشغول می‌کند؛ یعنی شخص دیگری نمی‌تواند به یکی از دو طرف تلفن کند. حالا تصور کنید چقدر بد می‌شد اگر شبکه‌های کامپیوتری و از جمله اینترنت نیز از همین روش برای ارسال داده استفاده می‌کردند. استفاده از روش packet switching و شکستن پیام به بسته‌های کوچکترِ قابل مدیریت در شبکه و ارسال آنها از مسیرهای متفاوت و ساخت مجدد پیام در کامپیوتر مقصد، تأثیر چشمگیری روی افزایش کارایی شبکه‌های کامپیوتری دارد.

معماری اینترنت

همانطور که گفته شد، اینترنت ماهیتاً یک شبکه‌ی کامپیوتری است که شامل تعداد زیادی از دستگاه‌های مختلف است که به واسطه‌ی پیاده‌سازی پروتکل‌های شبکه و به طور خاص، TCP/IP قادر به برقراری ارتباط با یکدیگر هستند. پروژه‌ی اینترنت در اواخر دهه‌ی 1960 با بودجه‌ی وزارت دفاع امریکا و با اهداف نظامی و امنیتی کلید خورد و بعدها با پشتیبانی شرکت‌های خصوصی، مراکز علمی و دانشگاه‌ها جنبه‌ی عمومی پیدا کرد.

طبیعتاً برای برقراری ارتباط بین دستگاه‌هایی که در نقاط مختلف دنیا قرار دارند، قبل از هر چیز باید یک زیرساخت ارتباطی تدارک دیده شود که دستگاه‌ها را به طور فیزیکی به هم متصل کند و به عبارت دیگر، جنبه‌ی فیزیکی شبکه را شکل دهد. مؤلفه‌های زیادی در شکل‌گیری این زیرساخت فیزیکی برای شبکه‌ی اینترنت نقش دارند. تکنولوژی‌های استانداردی مانند Ethernet و Wi-Fi و دستگاه‌ها و تجهیزاتی (مانند مودم‌ها، سوئیچ‌ها و روترها) که بر اساس این استانداردها ساخته می‌شوند، خطوط تلفن و برق، کابل‌های مسی و فیبرهای نوری که از خشکی‌ها و دریاها و اقیانوس‌ها می‌گذرند، امواج رادیویی، ایستگاه‌های مخابراتی، ماهواره‌ها و موارد متعدد دیگر در شکل‌گیری این شبکه‌ی عظیم جهانی نقش دارند.

برای درک معماری اینترنت، ابتدا یک شبکه‌ی محلی یا LAN را در نظر بگیرید. چنین شبکه‌ای را می‌توان یا به صورت کابلی بر اساس استاندارهایی نظیر Ethernet و یا به صورت بیسیم با استفاده از استانداردهایی نظیر Bluetooth و Wi-Fi ایجاد کرد. انجمن مهندسان برق و الکترونیک با نام اختصاری IEEE متولی استانداردهای Ethernet و Wi-Fi است. دو کامپیوتر را می‌توان با استفاده از فقط یک کابل به هم متصل کرد. اگر تعداد کامپیوترها افزایش یابد، بهتر است از یک دستگاه مرکزی مانند هاب (hub) یا سوئیچ (switch) استفاده کرد تا پیچیدگی شبکه و تعداد کابل‌های مورد نیاز، کاهش یابد.

اتصال 10 کامپیوتر با استفاده از یک دستگاه مرکزی
اتصال 10 کامپیوتر با استفاده از یک هاب یا سوئیچ

تفاوت هاب و سوئیچ

اگرچه هاب و سوئیچ، هر دو به عنوان یک دستگاه مرکزی برای اتصال دستگاه‌های یک شبکه به یکدیگر به کار می‌روند اما تفاوت‌های مهمی با هم دارند که اگر بخواهیم آنها را در یک جمله خلاصه کنیم، می‌توانیم بگوییم: بر خلاف هاب، سوئیچ نحوه‌ی ارسال بسته‌های داده را مدیریت می‌کند. در واقع، هاب دستگاه ساده‌ای است که برای ارسال بسته‌ها کاری به آدرس دستگاه مقصد ندارد؛ چون بسته‌های داده را برای همه‌ی دستگاه‌ها ارسال می‌کند و این خود دستگاه‌ها هستند که باید ببینند آیا بسته به آنها تعلق دارد یا خیر. اما سوئیچ، قبل از ارسال بسته، دستگاه مقصد را از روی آدرس ip موجود در IP header بسته، شناسایی کرده و بسته را تنها برای همان دستگاه می‌فرستد. بنابراین، سوئیچ، ترافیک شبکه را به اشتراک نمی‌گذارد و این به معنای افزایش راندمان و البته امنیت شبکه است. به طور کلی، هیچ دلیلی وجود ندارد که هاب را به سوئیچ ترجیح دهیم؛ مگر اینکه بخواهیم کمتر خرج کنیم.

برای اتصال کامپیوترها به یکدیگر، می‌توان از روتر (router) نیز استفاده کرد اما روتر، علاوه بر ارسال بسته‌ها در یک شبکه، می‌تواند بسته‌ها را بین شبکه‌ها نیز ارسال کند و به عبارت دیگر، می‌تواند شبکه‌ها را به هم متصل کند. روتر، پیشرفته‌ترین ابزاریست که در شبکه‌ها به کار می‌رود و در واقع، یک کامپیوتر کوچک محسوب می‌شود که هم CPU دارد، هم انواع حافظه‌های RAM و ROM و هم کارت شبکه. یک روتر، علاوه بر اتصال شبکه‌ها به یکدیگر و ایجاد شبکه‌ای از شبکه‌ها، امکان تجزیه و تحلیل شبکه و اموری مانند نظارت بر ترافیک شبکه را نیز دارد.

علاوه بر این، روترها با تکیه بر چیزی به نام «جدول مسیریابی» سعی می‌کنند بهترین مسیر را برای رساندن یک بسته به مقصد، پیدا کنند. هنگام پیکربندی اولیه‌ی یک روتر، یک جدول مسیریابی به آن اختصاص داده می‌شود اما اکثر روترها این قابلیت را دارند که در طول زمان، این جدول را به‌روزرسانی کنند. وقتی بسته‌ای به یک روتر می‌رسد، با توجه به مقصد نهایی بسته، از بین روترهای همسایه، بسته را به روتری پاس می‌دهد که در مسیر دستگاه مقصد قرار دارد و با طی همین روند، پس از چند پرش یا گام (hop) بسته به مقصد می‌رسد.

تفاوت روتر و مودم

اینترنت را می‌توانیم مجموعه‌ای از روترها تصور کنیم که هر روتر، شبکه یا شبکه‌هایی را نمایندگی می‌کند. بعضی‌ها به اشتباه، کار اتصال دستگاه‌ها به اینترنت را وظیفه‌ی مودم (modem) می‌دانند؛ اما توجه داشته باشید که وظیفه‌ی یک مودم، تبدیل سیگنال‌های الکتریکی یا پالس‌های نوری به بیت‌های دیجیتال قابل درک برای کامپیوتر در یک‌سوی ارتباط و عکس همین کار در سوی دیگر است. برای مثال، وقتی از تکنولوژی DSL برای اتصال کامپیوترتان به اینترنت استفاده می‌کنید، بسته‌های داده از طریق خطوط تلفن جابجا می‌شوند اما خطوط تلفن برای انتقال آنالوگ صوت ایجاد شده‌اند نه بیت‌های دیجیتال. بنابراین، یک مودم در سمت مبدأ، بیت‌ها را به سیگنال‌های قابل انتقال در خطوط تلفن تبدیل می‌کند و در سمت مقصد، عکس این کار را انجام می‌دهد. توجه داشته باشید که اغلب مودم‌های DSL به یک روتر داخلی مجهز هستند و در واقع، روتر ـ مودم هستند و به همین دلیل است که ما می‌توانیم بدون استفاده از یک روتر مستقل، به اینترنت متصل شویم.

پس، تا اینجا ما شبکه‌ای از شبکه‌ها داریم که با اتصال روترها به یکدیگر ایجاد می‌شوند.

چنین شبکه‌ای به مفهوم اینترنت خیلی نزدیک است اما هنوز یک چیز نسبت به آن کم دارد و آن، امکان اتصال به شبکه‌هایی است که در نقاط دیگر دنیا قرار دارند و این کاری است که توسط یک ISP یا Internet Service Provider انجام می‌شود. یک ‌ISP می‌تواند دارای سطح یک، دو یا سه باشد. کاربران اینترنت معمولاً از یک ‌ISP سطح سه (tire 3) برای اتصال به اینترنت استفاده می‌کنند که اینISP به نوبه‌ی خود از یک ISP سطح دو سرویس می‌گیرد و در نهایت، تعداد کمی از شرکت‌های مخابراتی مانند AT&T و Verizon هستند که به عنوان ‌ISP سطح یک یا Backbone provider شناخته می‌شوند و با انجام کابل‌کشی‌های عظیم، نقاط مختلف دنیا را به هم متصل کرده‌اند و با ارائه‌ی سرویس و پهنای باند به ISPهای سطح پایین‌تر، شبکه‌ی عظیم اینترنت را شکل داده‌اند.

البته آنچه که ما در اینجا تحت عنوان «معماری اینترنت» بیان کردیم، یک ساده‌سازی از واقعیت ماجراست و در عمل، مؤلفه‌های متعدد دیگری نیز در شکل‌گیری این شبکه‌ی جهانی دخیل هستند. برای نمونه، شبکه‌های موبایلی مانند 4G و 5G و حتی شبکه‌های قدیمی‌تر مانند H و H+ از شبکه‌ی ارتباطی موبایل (یعنی همان شبکه‌ای که امکان مکالمه از طریق تلفن‌های همراه را فراهم می‌کند) برای اتصال به اینترنت استفاده می‌کنند و به‌جای خطوط تلفن از سیم‌کارت استفاده می‌کنند. اینترنت ماهواره‌ای نیز داستان خودش را دارد و به تجهیزات متفاوتی نظیر دیش و گیرنده (receiver) نیاز دارد. حتی اینترنت dial-up نیز کاملاً فراموش نشده و هنوز هستند افرادی که با یک اتصال از نوع dial-up به اینترنت متصل می‌شوند.

در درس بعدی با یکی از مهمترین سرویس‌هایی که بر بستر اینترنت ارائه می‌شود، یعنی سرویس Web یا به عبارت کامل‌تر World Wide Web و نحوه‌ی عملکرد آن آشنا می‌شویم.