چگونه وب سرورها کار می کنند
پشت صحنه
اگر میخواهید جزئیات بیشتری در مورد گرفتن یک صفحه وب بر روی صفحه نمایش کامپیوتر خود بدست آورید، در اینجا مراحل اولیه ای است که در پشت صحنه اتفاق افتاده است:
مرورگر URL را به سه قسمت تقسیم کرد:
پروتکل (“http”)
نام سرور (“www.howstuffworks.com”)
نام فایل (“web-server.htm”)
مرورگر با یک سرور نام ارتباط برقرار کرد تا نام سرور “www.howstuffworks.com” را به یک آدرس IP تبدیل کند که برای اتصال به دستگاه سرور مورد استفاده قرار می گیرد. مرورگر پس از آن یک اتصال به سرور را در آن آدرس IP در پورت ۸۰ شکل داد. (ما بعدا در این مقاله بحث خواهیم کرد.)
به دنبال پروتکل HTTP، مرورگر یک درخواست GET را به سرور ارسال کرد و درخواست پرونده “https://www.howstuffworks.com/web-server.htm” را داد. (توجه داشته باشید که کوکی ها ممکن است از یک مرورگر به سرور با درخواست GET ارسال شوند – به جزئیات نحوه کار کوکی های اینترنتی مراجعه کنید.)
سرور سپس متن HTML را برای صفحه وب به مرورگر ارسال می کند. (کوکی ها نیز ممکن است از سرور به مرورگر در هدر برای صفحه ارسال شوند. مرورگر تگ های HTML را خوانده و صفحه را بر روی صفحه شما فرمت می کند.
اگر قبلا هرگز این فرایند را ندیده اید، بسیاری از لغات جدید وجود دارد. برای درک کامل این فرآیند در جزئیات، شما باید در مورد آدرس های آی پی، پورت ها، پروتکل ها یاد بگیرید … بخش های زیر شما را از طریق یک توضیح کامل هدایت می کند.
اینترنت
بنابراین “اینترنت” چیست؟ اینترنت یک مجموعه غول پیکر از میلیون ها کامپیوتر است که همه آنها در یک شبکه کامپیوتری مرتبط هستند. این شبکه به همه کامپیوترها اجازه برقراری ارتباط با یکدیگر را می دهد. یک کامپیوتر خانگی ممکن است با استفاده از یک مودم تلفنی، DSL یا مودم کابلی که با یک ارائه دهنده خدمات اینترنت (ISP) صحبت می کند، به اینترنت متصل شود. یک کامپیوتر در یک کسب و کار یا دانشگاه معموال دارای یک کارت رابط شبکه (NIC) است که به طور مستقیم آن را به یک شبکه محلی (LAN) در داخل کسب و کار متصل می کند. پس از آن کسب و کار می تواند LAN خود را به یک ISP متصل با استفاده از یک خط تلفن با سرعت بالا مانند یک خط T1. یک خط T1 می تواند حدود ۱٫۵ میلیون بیت در ثانیه را حمل کند، در حالی که یک خط تلفن معمولی با استفاده از مودم می تواند به طور معمول ۳۰،۰۰۰ تا ۵۰،۰۰۰ بیت در ثانیه را اداره کند.
ISP ها سپس به ISP های بزرگتر وصل می شوند و بزرگترین ISP ها “ستون فقرات” فیبر نوری را برای یک کل کشور یا منطقه حفظ می کنند. ستون فقرات در سراسر جهان از طریق خطوط فیبر نوری، کابل های زیردریایی یا لینک های ماهواره ای متصل می شوند. (اطلس مکان های سایبر برای برخی از نقشه های ستون فقرات جالب). به این ترتیب، هر رایانه ای در اینترنت به هر رایانه دیگر در اینترنت متصل است.
مشتریان و سرورها
به طور کلی، تمام ماشین ها در اینترنت می توانند به دو دسته تقسیم شوند: سرورها و مشتریان. این ماشینهایی که خدماتی مانند سرورهای وب یا سرورهای FTP را به دستگاه های دیگر ارائه می دهند سرورها هستند. و ماشین هایی که برای اتصال به آن خدمات استفاده می شوند مشتری هستند. هنگامی که شما به یاهو وصل می شوید در صفحه www.yahoo.com برای خواندن یک صفحه، Yahoo! ارائه یک ماشین (احتمالا خوشه ای از ماشین های بسیار بزرگ)، برای استفاده در اینترنت، برای درخواست درخواست شما. یاهو ارائه دهنده یک سرور است از سوی دیگر، دستگاه شما احتمالا به هیچ کس دیگری در اینترنت خدماتی ارائه نمی دهد. بنابراین، این یک ماشین کاربر است، همچنین به عنوان یک مشتری شناخته می شود. این امکان وجود دارد که دستگاه یک سرور و یک مشتری باشد، اما برای اهداف ما در اینجا می توانید از بیشتر ماشین ها به عنوان یکی یا دیگری فکر کنید.
یک دستگاه سرور ممکن است یک یا چند سرویس را در اینترنت ارائه دهد. به عنوان مثال، یک دستگاه سرور ممکن است نرم افزاری بر روی آن اجرا کند که به آن اجازه می دهد تا به عنوان یک سرور وب، یک سرور ایمیل و یک سرور FTP عمل کند. مشتریانی که به یک سرور سرور می آیند این کار را با یک هدف خاص انجام می دهند، بنابراین مشتریان درخواست های خود را به یک سرور نرم افزاری خاص در حال اجرا بر روی سرور سرور کلی هدایت می کنند. به عنوان مثال، اگر شما در حال اجرا بر روی مرورگر خود در دستگاه خود هستید، به احتمال زیاد می خواهید با سرور وب در دستگاه سرور صحبت کنید. برنامه Telnet شما می خواهد با سرور Telnet صحبت کند، برنامه ایمیل شما با سرور ایمیل صحبت خواهد کرد و غیره …
چگونه وب سرورها کار می کنند
توسط مارشال مغز
آدرس IP
برای حفظ تمام این دستگاه ها مستقیما، هر دستگاه در اینترنت یک آدرس منحصر به فرد به نام آدرس IP اختصاص داده می شود. IP برای پروتکل اینترنت استفاده می شود و این آدرس ها اعداد ۳۲ بیتی هستند که به طور معمول به صورت چهار اکانت در یک اعداد اعشاری dotted بیان می شوند. یک آدرس IP معمولی به نظر می رسد:
۲۱۶٫۲۷٫۶۱٫۱۳۷
چهار اعداد در یک آدرس IP اکتیو نامیده می شوند زیرا می توانند مقادیر بین ۰ تا ۲۵۵ داشته باشند که ۲۸ اکانت در هر اکتت است.
هر ماشین در اینترنت یک آدرس آی پی منحصر به فرد دارد. یک سرور دارای یک آدرس IP استاتیک است که اغلب تغییر نمی کند. یک ماشین خانگی که از طریق مودم شماره گیری می شود، اغلب دارای یک آدرس IP است که توسط دستگاه ISP تعیین می شود وقتی که ماشین شماره گیری می کند. این آدرس IP برای این جلسه منحصر به فرد است – ممکن است در زمان بعدی دستگاه شماره گیری شود. راه، یک ISP فقط یک آدرس IP برای هر مودم پشتیبانی می کند، نه برای هر مشتری.
اگر شما در حال کار بر روی یک ماشین ویندوز هستید، می توانید مقدار زیادی از اطلاعات اینترنت را برای دستگاه خود، از جمله آدرس IP فعلی و نام میزبان خود، با دستور WINIPCFG.EXE (IPCONFIG.EXE برای ویندوز ۲۰۰۰ / XP) مشاهده کنید. در یک دستگاه یونیکس، nslookup را در خط فرمان تایپ کنید، همراه با نام دستگاه، مانند www.howstuffworks.com – به عنوان مثال “nslookup www.howstuffworks.com” – برای نشان دادن آدرس IP دستگاه، و شما می توانید از نام میزبان دستور برای یادگیری نام دستگاه استفاده کنید. (برای اطلاعات بیشتر در مورد آدرس های IP، IANA را ببینید.)
تا آنجا که به ماشینهای اینترنتی مربوط می شود، یک آدرس IP همه چیزهایی است که شما باید با یک سرور صحبت کنید. به عنوان مثال، در مرورگر شما می توانید URL http://209.116.69.66 را تایپ کنید و وارد دستگاهی شوید که حاوی وب سرور برای HowStuffWorks است. در برخی از سرورها، آدرس IP به تنهایی کافی نیست، اما در اکثر سرورهای بزرگ این است – برای خواندن جزئیات بیشتر بخوانید.
نام دامنه
از آنجایی که اکثر مردم به خاطر رشته اعداد که آدرس های IP را تشکیل می دهند، به خاطر داشته باشید و به دلیل اینکه گاهی نیاز به تغییر آدرس های IP وجود دارد، تمام سرورهای موجود در اینترنت همچنین دارای اسامی قابل خواندن هستند که نام دامنه آنها نامیده می شود. به عنوان مثال، www.howstuffworks.com یک نام دائمی و قابل خواندن است. برای اکثر ما به یاد داشته باشید www.howstuffworks.com ساده تر از آن است که به یاد داشته باشید ۲۰۹٫۱۱۶٫۶۹٫۶۶.
نام www.howstuffworks.com در واقع سه بخش دارد:
نام میزبان (“www”)
نام دامنه (howstuffworks)
نام دامنه سطح بالا (“com”)
نام دامنه در دامنه “.com” توسط ثبت کننده به نام VeriSign اداره می شود. VeriSign همچنین نام دامنه “.net” را مدیریت می کند. سایر ثبت کننده ها (مانند RegistryPro، NeuLevel و Registry Interest General) دامنه های دیگری را مدیریت می کنند (مانند .pro، .biz و .org). VeriSign نام دامنه سطح بالا را ایجاد می کند و تضمین می کند که تمام نام ها در یک دامنه سطح بالا منحصر به فرد هستند. VeriSign همچنین اطلاعات تماس برای هر سایت را نگه می دارد و پایگاه داده “whois” را اجرا می کند. نام میزبان توسط شرکت میزبانی دامنه ایجاد می شود. “www” یک نام میزبان بسیار رایج است، اما بسیاری از مکانها هم اکنون آن را حذف می کنند یا جایگزین آن با یک نام میزبان متفاوت می کنند که نشان دهنده یک منطقه خاص از سایت است. برای مثال، در encarta.msn.com، نام دامنه دایره المعارف Encarta مایکروسافت، “encarta” به عنوان نام میزبان به جای “www” نامگذاری می شود.
سرورهای نام
مجموعه ای از سرورهایی که سرورهای نام دامنه (DNS) نامیده می شوند، اسامی انسانی قابل خواندن را به آدرس های IP نشان می دهند. این سرورها پایگاه های ساده ای هستند که اسامی را به آدرس های IP نشان می دهند و در سراسر اینترنت توزیع می شوند. اکثر شرکت های فردی، ISP ها و دانشگاه ها سرور های نام کوچک را برای نشان دادن نام میزبان به آدرس های IP نگه می دارند. سرورهای مرکزی نیز وجود دارند که از داده های ارائه شده توسط VeriSign برای نمایش نام دامنه به آدرس IP استفاده می کنند.
اگر نشانی اینترنتی “https://www.howstuffworks.com/web-server.htm” را در مرورگر خود وارد کنید، مرورگر شما نام “www.howstuffworks.com” را استخراج می کند، آن را به سرور نام دامنه می فرستد، و دامنه سرور نام آدرس IP درست برای www.howstuffworks.com را باز می کند. تعدادی از سرورهای نام ممکن است درگیر شوند تا آدرس IP درست را دریافت کنند. به عنوان مثال، در مورد www.howstuffworks.com، سرور نام دامنه سطح “com” آدرس IP را برای سرور نامی که نام میزبان را می داند، و یک پرس و جو جداگانه به آن سرور نام، که توسط ISP HowStuffWorks ممکن است آدرس IP واقعی برای دستگاه سرور HowStuffWorks را ارائه دهد.
در یک دستگاه یونیکس، می توانید به همان سرویس با استفاده از دستور nslookup دسترسی پیدا کنید. به سادگی نام “www.howstuffworks.com” را به خط فرمان تایپ کنید و این فرمان سرویس سرور نام ها را جستجو می کند و آدرس IP مربوطه را برای شما ارسال می کند.
بنابراین در اینجا این است: اینترنت از میلیون ها ماشین ساخته شده است، هر یک با یک آدرس IP منحصر به فرد. بسیاری از این ماشین ها ماشین های سرور هستند، به این معنی که آنها خدمات را به ماشین های دیگر در اینترنت ارائه می دهند. شما از بسیاری از این سرورها خبر دارید: سرورهای ایمیل، سرورهای وب، سرورهای FTP، سرورهای Gopher و سرورهای Telnet، برای نام چند. همه این ها توسط دستگاه های سرور ارائه می شوند.
بنادر
هر سرور سرور سرویس های خود را با استفاده از پورت های شماره گذاری شده به اینترنت متصل می کند، یکی برای هر سرویس موجود در سرور. به عنوان مثال، اگر یک سرور سرور یک سرور وب و سرور FTP را اجرا کند، سرور وب به طور معمول در پورت ۸۰ در دسترس خواهد بود و سرور FTP در بندر ۲۱ در دسترس خواهد بود. مشتریان به یک سرویس با یک آدرس IP خاص متصل می شوند و در یک بندر خاص
هر یک از شناخته شده ترین خدمات در شماره پورت شناخته شده موجود است. در اینجا چندین شماره پورت رایج وجود دارد:
اکو ۷
روز ۱۳
qotd 17 (نقل قول از روز)
ftp 21
telnet 23
smtp 25 (انتقال ساده ایمیل، یعنی ایمیل)
زمان ۳۷
نام سرور ۵۳
nicname 43 (چه کسی است)
گوهر ۷۰
انگشت ۷۹
WWW 80
اگر سرور سرور اتصالات در یک پورت از جهان خارج را قبول کند و اگر یک فایروال از پورت محافظت نمی کند، می توانید از هر نقطه از اینترنت از طریق پورت از این سرویس استفاده کنید. توجه داشته باشید که هیچ چیز نیرویی برای مثال سرور وب در پورت ۸۰ وجود ندارد. اگر شما دستگاه خود را راه اندازی کرده و نرم افزار سرور وب را بر روی آن بارگذاری کردید، می توانید سرور وب را در بندر ۹۱۸ یا هر جای دیگر قرار دهید اگر میخواهید پورت استفاده نکنید سپس، اگر دستگاه شما به نام xxx.yyy.com شناخته شود، کسی که در اینترنت می تواند به سرور شما با URL http://xxx.yyy.com:918 متصل شود. “: ۹۱۸” به صراحت شماره پورت را مشخص می کند و باید برای کسی که برای رسیدن به سرور شما در نظر گرفته شده باشد. هنگامی که هیچ پورت مشخص نشده است، مرورگر به سادگی فرض می کند که سرور از پورت شناخته شده ۸۰ استفاده می کند.
پروتکل ها
هنگامی که یک سرویس دهنده به یک سرویس در یک پورت خاص وصل شده است، با استفاده از یک پروتکل مخصوص به سرویس دسترسی پیدا می کند. این پروتکل از پیش تعریف شده است که فردی که می خواهد از یک سرویس با آن سرویس استفاده کند. “کسی” می تواند فرد باشد، اما اغلب آن یک برنامه کامپیوتری مانند یک مرورگر وب است. پروتکل ها اغلب متن هستند و به سادگی توضیح می دهند که چگونه مشتری و سرور مکالمه خود را دارند.
شاید ساده ترین پروتکل پروتکل روزانه باشد. اگر به پورت ۱۳ در یک دستگاه که از یک سرور روزانه پشتیبانی می کند، به سرور متصل شوید، سرور به شما در مورد تاریخ و زمان فعلی شما ارسال می کند و سپس اتصال را متوقف می کند. پروتکل این است: “اگر به من وصل شوید، من تاریخ و زمان شما را ارسال می کنم و سپس قطع ارتباط”. بیشتر دستگاه های یونیکس از این سرور پشتیبانی می کنند. اگر می خواهید آن را امتحان کنید، می توانید با برنامه Telnet متصل شوید. در یونیکس، جلسه اینگونه شبیه خواهد بود:
٪ telnet web67.ntx.net 13Trying 216.27.61.137 … متصل به character web67.ntx.net.Escape است ‘^]’. خرداد ۲۵ اکتبر ۰۸:۳۴:۰۶ ۱۹۹۸ اتصال توسط میزبان خارجی بسته شده است.
در یک ماشین ویندوز، می توانید به این سرور با تایپ “telnet web67.ntx.net 13” در فوری MSDOS دسترسی داشته باشید.
در این مثال، web67.ntx.net دستگاه یونیکس سرور است و ۱۳ شماره پورت برای سرویس روزانه است. برنامه Telnet به پورت ۱۳ متصل می شود (Telnet به طور طبیعی به پورت ۲۳ متصل می شود، اما شما می توانید آن را برای اتصال به هر پورت هدایت کنید)، سپس سرور تاریخ و زمان را ارسال می کند و قطع می کند. اکثر نسخه های Telnet به شما اجازه می دهند شماره پورت را مشخص کنید، بنابراین می توانید این را با استفاده از هر نسخه ای از Telnet که در دستگاه شما موجود است، امتحان کنید.
اکثر پروتکل ها بیشتر از روز درگیر هستند و در اسناد Request For Comment (RFC) که در دسترس عموم قرار دارند (مشخص شده است http://sunsite.auc.dk/RFC/ برای یک آرشیو خوب از تمام RFC ها) مشخص شده است. هر وب سرور در اینترنت مطابق با پروتکل HTTP است، به طور خلاصه در HTTP اصلی همانطور که در سال ۱۹۹۱ تعریف شده است. ساده ترین پروتکل قابل درک توسط یک سرور HTTP شامل فقط یک دستور: GET. اگر شما به سرور متصل شوید که پروتکل HTTP را درک می کند و به “GET filename” بگویید، سرور با ارسال محتویات فایل نامگذاری شده و سپس قطع ارتباط برقرار می کند. در اینجا یک جلسه معمولی است:
٪ telnet www.howstuffworks.com 80Trying 216.27.61.137 … متصل به شخصیت howstuffworks.com.Escape است ‘^]’. دریافت https://www.howstuffworks.com/ … اتصال توسط میزبان خارجی بسته شده است.
در پروتکل اصلی HTTP، تمام آنچه که شما ارسال کرده اید، نام فایل واقعی، مانند “/” یا “/web-server.htm” است. پروتکل بعدها برای ارسال آدرس کامل انجام شد. این اجازه داده است شرکت هایی که دامنه های مجازی را میزبانی می کنند، که در آن بسیاری از دامنه ها در یک دستگاه واحد زندگی می کنند، برای استفاده از یک آدرس IP برای تمام دامنه های میزبان. به نظر می رسد که صدها دامنه در ۱۶۹٫۱۱۶٫۶۹٫۶۶ میزبانی می شوند – آدرس IP HowStuffWorks.
همه اش رو بذار کنار هم
حالا شما مقدار زیادی در مورد اینترنت می دانید. شما می دانید زمانی که URL را وارد یک مرورگر می کنید، مراحل زیر انجام می شوند:
مرورگر URL را به سه بخش تقسیم می کند:
پروتکل (“http”)
نام سرور (“www.howstuffworks.com”)
نام فایل (“web-server.htm”)
مرورگر با سرور نامی ارتباط برقرار می کند تا نام سرور “www.howstuffworks.com” را به یک آدرس IP تبدیل کند که برای اتصال به آن سرور سرور استفاده می شود. سپس مرورگر یک اتصال به سرور وب را در آن آدرس IP در پورت ۸۰ ایجاد می کند. پس از پروتکل HTTP، مرورگر یک درخواست GET را به سرور می فرستد، درخواست پرونده “https://www.howstuffworks.com/web- سرور.htm. ” (توجه داشته باشید که کوکی ها ممکن است از طریق مرورگر به سرور با درخواست GET ارسال شوند – ببینید چگونه کوکی های اینترنتی برای جزئیات کار می کنند.) سرور متن HTML را برای صفحه وب به مرورگر ارسال می کند. (کوکی ها نیز ممکن است از سرور به مرورگر در هدر برای صفحه ارسال شوند. مرورگر تگ های HTML را خوانده و صفحه را بر روی صفحه شما قالب بندی می کند.
امنیت
شما می توانید از این توضیحات را ببینید که یک وب سرور می تواند یک قطعه نرم افزار بسیار ساده است. نام فایل ارسال شده با دستور GET طول می کشد، این پرونده را بازیابی می کند و سیم را به مرورگر ارسال می کند. حتی اگر شما تمام کد را برای مدیریت اتصالات پورت ها و پورت ها حساب کنید، می توانید به راحتی یک برنامه C ایجاد کنید که وب سرور ساده ای را در کمتر از ۵۰۰ خط کد اجرا می کند. بدیهی است، یک وب سرور کامل در سطح سازمانی بیشتر درگیر است، اما اصول بسیار ساده است.
اکثر سرورها یک سطح امنیتی را به روند خدمت اضافه می کنند. به عنوان مثال، اگر تا به حال به یک صفحه وب رفته اید و مرورگر ظاهر شد، یک جعبه محاوره ای با نام و رمز عبور خود درخواست می کند، شما با یک صفحه محافظت شده با رمز عبور مواجه شده اید. سرور اجازه می دهد که صاحب صفحه لیستی از نام ها و گذرواژه ها را برای افرادی که مجاز به دسترسی به این صفحه هستند نگهداری کند؛ سرور اجازه می دهد تا تنها کسانی که رمز عبور مناسب را می دانند صفحه را ببینند. سرورهای پیشرفته تر به امنیت بیشتر اجازه می دهد تا یک اتصال رمز شده بین سرور و مرورگر، به طوری که اطلاعات حساس مانند شماره کارت اعتباری می تواند در اینترنت ارسال شود.
این واقعا همه ی وجود دارد که به یک سرور وب ارائه می شود که استاندارد و صفحات استاتیک را ارائه می دهد. صفحات استاتیک هستند که تغییری نمی کنند مگر اینکه خالق این صفحه را ویرایش می کند.
موارد اضافی: صفحات پویا
اما در مورد صفحات وب پویا چیست؟ مثلا:
هر کتاب مهمان اجازه می دهد تا شما را به یک پیام در یک فرم HTML وارد کنید، و دفعه بعد که کتاب مهمان مشاهده می شود، صفحه حاوی مطالب جدید خواهد بود.
فرم کوکی در Network Solutions اجازه می دهد تا شما را به یک نام دامنه در یک فرم وارد کنید، و صفحه با توجه به نام دامنه وارد شده متفاوت است.
هر موتور جستجو به شما اجازه می دهد تا کلمات کلیدی را در یک فرم HTML وارد کنید و سپس به صورت پویا صفحه ای را براساس کلمات کلیدی که وارد می کنید ایجاد کنید.
در تمام این موارد، وب سرور به سادگی “نگاه کردن یک فایل” نیست. در واقع پردازش اطلاعات و تولید یک صفحه بر اساس مشخصات پرس و جو است. تقریبا در همه موارد، سرور وب برای انجام این کار استفاده از اسکریپت CGI نامیده می شود. اسکریپتهای CGI موضوعی برای خودشان هستند و در مقاله HowStuffWorks چگونه Ccripts کار می کنند.