اینترنت چگونه کار می‌کند

برای خوانندگان در خانه: این فصل در ویدئو نصب پایتون و کد ویرایشگر توضیح داده شده است.

این فصل "اینترنت چگونه کار می‌کند" از سخنرانی جسیکا مک کلر (http://web.mit.edu/jesstess/www/) الهام گرفته شده است.

قطعاً شما هر روز از اینترنت استفاده می‌کنید. اما آیا می‌دانید در واقع وقتی شما آدرسی مثل https://djangogirls.org را در مرورگر خود تایپ می‌کنید، چه اتفاقی می‌افتد؟

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

اگر با برنامه نویسی آشنایی ندارید، ممکن است درک HTML در ابتدا سخت باشد، ولی مرورگر های شما (مثل گوگل کروم، سافاری، فایرفاکس و...) عاشق آن هستند. مرورگرها طراحی شده اند تا این کدها را درک کنند، دستورات آنها را دنبال کنند و فایل‌هایی را که وب سایت شما از آن تشکیل شده است، دقیقاً آنطور که می‌خواهید، نمایش دهند.

مانند هر فایل دیگری، ما نیاز داریم تا فایل‌های HTML را نیز جایی بر روی هارد دیسک ذخیره کنیم. برای اینترنت، ما از کامپیوترهای مخصوص و قوی به نام servers استفاده می‌کنیم. این کامپیوترها صفحه نمایش، کیبورد یا موس ندارند برای آنکه وظیفه اصلی آن‌ها ذخیره اطلاعات و ارائه آن‌ها است. برای همین به آن‌ها سرور می‌گویند برای آنکه آن‌ها داده‌ها را ارائه می‌کنند (serve یعنی ارائه کردن).

خب، ولی شما می‌خواهید بدانید که اینترنت چطور کار می‌کند، درست است؟

تصویری برای شما کشیده ایم! چیزی شبیه به این:

تصویر 1.1

کمی به هم ریخته است، درست است؟ در واقع این شبکه‌ای از ماشین‌های به هم متصل شده است (همانطور که در بالا اشاره شد سرورها هستند). صدها و هزاران دستگاه! کیلومترها سیم و کابل دور دنیا! شما می‌توانید وبسایت نقشه کابل‌های زیردریایی (http://submarinecablemap.com) را ببینید تا با پیچیدگی شبکه آشنا شوید. این تصویری از این وبسایت است:

تصویر 1.2

جذاب است، اینطور نیست؟ اما کشیدن یک سیم مستقیم بین هر دستگاه متصل شده به اینترنت با دیگر دستگاه‌ها ممکن نیست. بنابراین برای رسیدن به یک دستگاه (مثلاً دستگاهی که https://djangogirls.org روی آن ذخیره شده) نیاز است تا ما درخواستی (request) را از طریق دستگاه‌های بسیار زیادی ارسال کنیم.

شبیه به این:

تصویر 1.3

تصور کنید که وقتی شما https://djangogirls.org را تایپ می‌کنید، نامه‌ای فرستاده اید به این مضمون: "دختران جنگو عزیز، من می‌خواهم وب سایت djangogirls.org را ببینم. لطفاً آن را برای من بفرستید!"

نامه شما به نزدیکترین اداره پست فرستاده می‌شود. بعد به اداره پست دیگری می‌رود که کمی بیشتر به مقصد نزدیک است و همینطور پیش می‌رود تا به مقصد نهایی برسد. تنها ویژگی این سیستم این است که اگر نامه های بسیاری به یک مقصد بفرستید (data packets) آن‌ها می‌توانند از مسیرهایی کاملاً متفاوت (routers) به مقصد برسند. این موضوع بستگی به این دارد که نامه ها در هر اداره پست چطور تقسیم شوند.

تصویر 1.4

این روش کار است - شما پیغامی میفرستید و منتظر پاسخ می‌مانید. به جای قلم و کاغذ شما از بایت‌های داده استفاده می‌کنید اما منطق کار یکسان است!

به جای آدرس یا نام خیابان، شهر و کدپستی، ما از آدرس IP استفاده می‌کنیم. کامپیوتر شما ابتدا از DNS (Domain Name System) می‌خواهد که djangogirls.org را به IP address تبدیل کند. این سیستم شبیه دفترچه تلفن‌های قدیمی است که شما می‌توانستید دنبال نام یک نفر بگردید و آدرس و شماره تلفن وی را پیدا کنید.

وقتی شما نامه‌ای می‌فرستید نیاز است که ویژگی های مشخصی داشته باشد تا قابل ارسال باشد: آدرس، تمبر و غیره. علاوه بر این از زبانی استفاده می‌کنید که گیرنده آن را متوجه شود، درست است؟ عین همین اتفاق برای data packet هایی می‌افتد که شما برای دیدن یک وبسایت ارسال می‌کنید. ما از پروتکلی به نام HTTP (Hypertext Transfer Protocol) استفاده می‌کنیم.

بنابراین به طور اصولی، وقتی شما وبسایتی دارید، نیاز است تا یک سرور داشته باشید که وبسایت بر روی آن قرار داشته باشد. وقتی که سرور یک ریکوئست (یک درخواست به صورت یک نامه) را دریافت می‌کند، وبسایت شما را در پاسخ به آن نامه ارسال می‌کند (در یک نامه جداگانه).

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

صحبت بس است - وقت ساختن است!

results matching ""

    No results matching ""