من محمدم یه برنامه نویسی که عاشق یادگرفتنه چیز های جدیده.
اینترنت چجوری کار میکنه؟
با سلام به دوستان عزیز. من این مطلب رو از یک مطلب انگلیسی ترجمه کردم و اولین تجربم از ترجمس. امیدوارم تونسته باشم کاملش کنم. منبع در اخر پست درج میشه.
1- مقدمه
اینترنت چجوری کار میکنه؟ سوال خیلی خوبیه. رشد اینترنت در جهان تبدیل به یک بمب بارانی شده که هیچ کسی نمیتونه ازش فرار کنه. اینترنت در تلویزیون،رادیو و در مجله ها هم دیده میشه. اینترنت تو این چند سال تبدیل شده به یک قسمت بزرگی از زندگی ما که اگه بخوایم از آن نهایت استفاده مفید رو ببریم باید از آن شناخت کافی داشته باشیم.
تو این مطلب قراره درمورد زیر ساخت ها و تکنولوژی هایی که باعث کار کردن اینترنت میشه حرف میزنیم. ما قرار نیست به عمق مفاهیم بریم، به اندازه کافی توضیح داده میشه که شما بتونید درک درستی از مفاهیم پایه رو داشته باشید.
2- از کجا شروع کنیم؟؟ آدرس های اینترنتی
به این دلیل که اینترنت یک شبکه جهانی تشکیل شده از کامپیوتر هاست، هر کامپیوتری که میخواد به اینترنت متصل بشه باید یه ادرس منحصر به فرد داشته باشه. ادرس های اینترنتی که به قالب متنی مثل nnn.nnn.nnn.nnn استفاده میکنند که به جای nnn باید عددی از 0 تا 255 قرار بگیره. به این نوع آدرس میگن IP(که مختصر Internet Protocol هست که درمورد این بعدا توضیح خواهیم داد).
عکس زیر که دو کامپیوتر متصل به اینترنت رو نشون میده. کامپیوتر شما با آدرس 1.2.3.4 و کامپیوتری دیگر با ادرس 5.6.7.8 . اینترنت به عنوان واسط عمل میکنه.
اگه شما توسط یک ISP به اینترنت متصل شده باشید، به شما یک آدرس یک بار مصرف میده که تا وقتی شما به اینترنت متصل باشید معتبره و وقتی شما اینترنت رو قطع و دوباره وصل شید آدرس جدیدی به شما میده.
3- پروتکل ها و بسته ها
بنابراین کامیپیوتر شما به اینترنت متصل شده و یک آدرس منحصر به فرد داره. حالا یه سوال جدیدی پیش میاد که این کامپیوتر هایی که به اینترنت متصل هستند چجوری با هم صحبت میکنند؟ به عنوان مثال کامپیوتر شما با آدرس 1.2.3.4 میخواهد پیامی به کامپیوتری به آدرس 5.6.7.8 ارسال کند. به عنوان مثال شما میخواهید که پیام "سلام به تو" را ارسال کنید.
مشخص هست که باید این پیام بین هر نوع سیمی که کامپیوتر شما رو به اینترنت متصل کرده منتقل شود. فرض بر اینکه شما توسط ISP به اینترنت وصل شدید و پیام شما باید به خط تلفن منتقل شود. اینجاست که پیام شما باید از حروف الفبا به سیگنال های الکترونیکی تبدیل بشن، منتقل شن به کامپیوتر هدف توسط اینترنت و بعد دوباره تبدیل به حروف الفبا بشن. چجوری این ها اتفاق میفتن؟ از طریق استفاده از لایه های پروتکل. همه کامپیوتر ها به یک پروتکل نیاز دارن تا بتوانند با اینترنت ارتباط برقرار کنند که معمولا هر سیستم عاملی درون خودش داره(Windows , Mac , Linux و ....) لایه پروتکل توسط اینترنت به خاطر دو پروتکل ارتباطی اصلی استفاده میکند که به نام TCP/IP شناخته میشوند. که لایه TCP/IP شبیه زیر هست:
حالا اگه ما بخوایم پیام "سلام به تو" رو ارسال کنیم و مسیری که طی میکنه تا به کامپیوتر مورد نظر برسه رو دنبال کنیم به همچین چیزی بر میخوریم :
- 1 - پیام شما از بالای لایه پروتکل شروع میکند و کار خود را به سمت پایین ادامه میدهد.
- 2 - اگه پیامی که شما ارسال کردید طولانی باشد، پیام هر لایه ای که ازش عبور میکنه اون لایه ممکنه پیام رو بشکنه و به تکه های کوچک تر داده ها تبدیل کند. این که کار به این خاطره که هر چیزی که بین اینترنت منتقل میشه(و بیشتر شبکه های کامپیوتری) رو از طریق تکه های قابل کنترل میفرسته. توی اینترنت این تکه ها رو به عنوان بسته ها(Packets) میشناسند.
- 3 - بسته ها از لایه نرم افزار(Application) عبور میکنند و به لایه TCP میرسند. تو این قسمت به هر بسته یک پورت اختصاص داده میشه. پورت ها رو بعدا توضیح خواهیم داد، ولی کافیه که اینجا بدونید که ممکنه بیشتر نرم افزار ها از لایه TCP/IP برای ارسال پیام استفاده کنند. ما باید بدونیم که کدوم نرم افزار روی کامپیوتر مقصد پیام رو دریافت میکنه چون که این برنامه روی یک پورت خاصی در حال گوش دادنه.
- 4 - بعد از این که بسته لایه TCP رو رد میکنه میرسه به لایه IP که در این لایه بسته ها آدرس مقصد خود رو دریافت میکنند.
- 5 - حالا بسته ها آدرس و پورت رو دارن و آماده هستن تا به اینترنت فرستاده بشن. لایه سخت افزار(Hardware) بسته ها رو تبدیل به سیگنال های الکترونیکی میکنه و میفرستدشون به خط تلفن.
- 6 - در آخر خط تلفن ISP ها ارتباط مستقیم به اینترنت دارند. روتر ISP ها بسته ها رو دریافت میکنند و آدرس های بسته ها رو بررسی میکنند و تصمیم میگیرند که هر بسته رو به کجا بفرستند. غالبا جای دیگری بسته ها به آن میرسند روتر دیگر هست(روتری که کامپیوتر مقصد از طریق آن به اینترنت متصل شده).
- 7 - در نهایت، بسته ها به کامپیوتر 5.6.7.8 میرسند. اینجا بسته ها شروع میکنند از پایین به سمت بالا از لایه های پروتکل رد میشوند.
- 8 - وقتی بسته ها از لایه ها رد میشند برچسب هایی که در مراحل اول به این ها زده بودند مثل آدرس IP و... برداشته میشوند.
- 9 - وقتی داده ها به کامپیوتر میرسند منتاژ مجدد میشوند و به حالت اولیش برمیگرده،"سلام به تو". :)
4- زیرساخت های شبکه
خب الان شما میدونید که چجوری اطلاعات از یه کامپیوتر به کامپیوتر دیگه از طریق اینترنت سفر میکنه. ولی این بین چه اتفاقی میفته؟ چه چیزی دقیقا اینترنت رو سر پا نگه میداره؟ بیاید به این عکس زیر یه نگاهی بندازیم :
خب ما تو این تصویر دیاگرام اول رو با جزئیات بیشتری میبینیم. اتصال فیزیکی بین خط تلفن به ISP رو میتونید به سادگی حدس بزنید. اما بازم چیزایی برای تعریف کردن هستش.
ارائه دهنده های اینترنت(ISP) از استخر های مودم نگهداری میکنند برای مشتری هاشون که توسط کامپیوتر ها مدیریت میشوند که هر کدام داده ها را کنترل میکنند و بعد آن ها را به ستون فقرات یا به روتر خط اختصاصی میفرستند. به این راه اندازی معمولا سرور پورت گفته میشود زیرا دسترسی به شبکه را فراهم میکند. اطلاعات صورت حساب و استفاده معمولا از اینجا جمع اوری میشود.
بعد از این که بسته هاتون از خط تلفن و ISP رد شد به ستون فقرات سرویس دهنده اینترنت میرسه یا همون (ISP Backbone). از همین جا سفر بسته هامون شروع میشود و بسته ها از چندید روتر، ستون فقرات ISP، خطوط اختصاصی و شبکه های دیگر حرکت میکنند تا به مقصد خود یعنی کامپیوتر 5.6.7.8 برسند. ولی اگه ما میدونستیم که بسته ها چه مسیری رو طی کردند تا به مقصدشون برسند جالب نیست؟ در واقع برای این سوال هم راه حل وجود داره و اون هم traceroute نام دارد و میتونید این را در ویندوز با دستور tracert google.com و در خانواده یونیکس از traceroute google.com استفاده کنید.
اگه شما از traceroute استفاده کرده باشید باید دیده باشید که بسته ها به آدرس های زیادی فرستاده میشند تا به مقصدشون برسند. به احتمال باید به ادرس های عجیبی مثل sjc2-core1-h2-0-0.atlas.digex.net و fddi0-0.br4.SJC.globalcenter.net. اینها آدرس روتر هایی هستند که بسته ها به آن ارسال میشود تا درمورد مسیر بسته ها تصمیم بگیرند. چندین روتر در دیاگرام 3 نشان داده شده، اما فقط تعداد معدودی هستند. منظور از دیاگرام 3 نشون دادن ساختار شبکه به صورت ساده است. شبکه اینترنت پیچیده تر است.
5- زیر ساخت شبکه
ستون فقرات اینترنت که از تعداد زیادی از شبکه های بزرگ که با هم در ارتباط هستند تشکیل شده، که این شبکه های بزرگ رو به نام Network Service Providers یا به اختصار NSPs میشناسند که UUNet, CerfNet, IBM, BBN Planet, SprintNet, PSINet نام تعدادی از این شبکه های بزرگ هستند. این شبکه ها برای تبادل بسته ها با هم همکاری میکنند. هر NSP نیاز داره تا به سه عدد نقاط دسترسی به شبکه(NAP) متصل باشه. در NAP ها ممکن است بسته ها از یک ستون فقرات NSP به یکی دیگه از ستون فقرات بپرند.
همچنین NSP ها در MAE ها به هم متصل هستند.MAE ها هم همان کار NAP رو انجام میدن ولی با این تفاوت که متعلق به بخش خصوصی هستند. NAP ها نقاط اصلی اتصال اینترنت هستند. درواقع NAP ها و MAE ها به عنوان نقاط تبادیل اینترنت شناخته میشوند یا به اختصار IXs. همچنین NSP ها پهنای باند را به شبکه های کوچک مانند ISP ها ارائه دهنده های پهنای باند کوچک تر میفروشند. عکس زیر, زیر ساخت سلسله مراتبی این روند رو نشون میده.
این در واقع نمای واقعی از قطعه واقعی اینترنت نیستش. دیاگرام ۴ فقط منظورش این است که NSP ها چگونه باید با یکدیگر و دیگر ISP های کوچک ارتباط برقرار کنند. شما میتونید نقشه کامل این رو در اینترنت پیدا بکنید.
۶- سلسله مراتب مسیریابی اینترنت
خب حالا بسته ها چجوری مسیر خودشونو توی این اینترنت پیدا میکنند؟ آیا هر کامپیوتری که به اینترنت متصل هست میدونه که بقیه کامپیوتر ها کجا هستند؟ آیا هر بسته به راحتی در هر رایانه ای در اینترنت پخش میشود؟ جواب هر دو سوال 'نه' هستش. هیچ کامپیوتری از محل کامپیوتر دیگه خبر نداره, بسته ها هم به هر کامپیوتری ارسال نمیشوند. اطلاعات مورد نیاز برای دسترسی هر بسته به مقصد در جداول مسیریابی وجود دارد که توسط روتر های متصل به اینترنت نگهداری میشوند.
روتر ها سوئیچ های بسته هستند. معمولا روتر ها مابین شبکه ها قرار میگیرند تا بسته های بین انها را مسیریابی کنند. هر روتر از شبکه های فرعی آن و کدام آدرسهای IP استفاده می کند خبر دارد. روتر ها معمولا آدرس IP بالای خود را نمیدانند. نمودار ۵ در زیر رو بررسی کنید. جعبه های سیاه که به ستون فقرات متصل هسنتد روتر نام دارند. ستون فقرات NSP بزرگتر در بالا به NAP متصل شده است. زیر آن ها چند شبکه فرعی وجود دارد و زیر آن ها شبکه های فرعی بیشتری وجود دارد. در زیر همه آن ها دو شبکه محلی وجود دارد که چندین کامپیوتر به آن ها متصل شده اند.
وقتی یکی از بسته ها به روتر میرسد, روتر آدرس IP که توسط لایه پروتکل IP بر روی بسته زده شده رو بررسی میکنه. در صورت پیدا شدن شبکه حاوی آدرس IP ، بسته به ارسال میشود و اگه پیدا نشه روتر بسته ها رو به شبکه پیشفرض ارسال میکنه، معمولا به صورت سلسله مراتبی به روتر بعدی. به این امید که روتر بعدی بدونه که بسته رو باید به کجا بفرسته.اگه ندونه بسته به مسیر خودش ادامه میده تا به ستون فقرات NSP برسه. روترهای متصل به ستون فقرات NSP بزرگترین جداول مسیریابی را در خود جای می دهند و در اینجا بسته به ستون فقرات صحیح هدایت می شود ، جایی که سفر خود را از طریق شبکه های کوچکتر و کوچکتر شروع می کند تا جایی که مقصد خود را پیدا کند.
۷- نام دامنه و وضوح آدرس
خب اگه آدرس IP کامپیوتری که میخواید بهش وصل شید رو ندونید چی میشه؟ اگه شما نیاز داشتید به وب سروری که آدرسش www.anothercomputer.com بود دسترسی داشته باشید؟ مرورگر شما باید از کجا بدونه کامپیوتر مورد نظر شما کجای اینترنت هست؟ جواب تمام این سوال Domain Name Service یا به اختصار DNS است. DNS یک پایگاه داده توزیع شده است که پیگیر نام کامپیوتر ها و آدرس IP آن ها هست.
تعداد زیادی از کامپیوتر های متصل به اینترنت میزبان بخشی از پایگاه داده DNS و نرم افزاری است که به دیگران امکان دسترسی به آن را میدهد. اسم این کامپیوتر ها DNS سرور نام دارند. هیچ کدوم از DNS سرور ها شامل کل بانک اطلاعاتی نیستند؛ آنها فقط شامل زیر مجموعه ای از آن هستند. اگه DNS سرور نام دامنه درخواست شده توسط کامپیوتر رو پیدا نکنه اون رو به یک DNS سرور دیگه ارسال میکنه.
سرویس DNS به عنوان سلسله مراتب شبیه به سلسله مراتب مسیریابی IP ساخته شده است. وقتی کامپیوتری درخواست خودش رو میفرسته؛ درخواست به صورت سلسله مراتبی بالا میره تا یک DNS سرور بتونه پیداش کنه. شکل ۶ بخشی از سلسله مراتب را نشان می دهد. در بالای درخت ریشه های دامنه قرار دارد. بعضی از دامنه های قدیمی تر و متداول در نزدیکی بالا دیده میشوند. چیزی که نشون داده نشده تعداد زیادی از DNS سرور ها در سراسر جهان است که بقیه سلسله مراتبی را تشکیل میدهند.
وقتی یک اتصال به اینترنت راه اندازی میشود(مثلا شبکه LAN یا Dial-up در ویندوز)، معمولا یک DNS سرور اصلی و یک یا چند DNS سرور ثانویه به عنوان قسمتی از نصب تنظیم میشوند. به این صورت، هر برنامه ای که نیاز به ارسال نام دامنه دارند میتونند به راحتی درخواست خودشون رو ارسال کند و جواب درستی دریافت کند. به عنوان مثال، شما وقتی یک آدرس رو در مرورگر خود وارد میکنید، ابتدا مروگر به DNS سرور اصلی متصل میشود و بعد از این که آدرس مورد نظر رو پیدا کرد به کامپیوتر مورد نظر وصل میشود و صفحه وب مورد نظر رو درخواست میکنه.
۸- بررسی دوباره پروتکل های اینترنتی
همانطور که قبلاً در بخش مربوط به پشته های پروتکل اشاره شده بود، به احتمال تصور میکنید که پروتکل های زیادی وجود دارد که اینترنت از آن استفاده میکند. که دقیقا درسته. پرتکل های ارتباطی زیادی وجود دارد که اینترنت برای اینکه به درستی عمل کنه به آن ها نیاز داره. که شامل پروتکل TCP و IP، پروتکل مسیریابی، پروتکل مدیریت دسترسی، پروتکل سطح برنامه و.... .
مطلبی دیگر از این انتشارات
نگاهی به بازار اپلیکیشن ها در ایران (+ تجربه شخصی)
مطلبی دیگر از این انتشارات
Map & Filter in Python | مپ و فیلتر در پایتون
مطلبی دیگر از این انتشارات
حقوق و شرایط برنامهنویسی در ترکیه چگونه است؟ + اینفوگرافیک