خیلی ها هستند که در مورد این موضوع اطلاعات چندانی ندارند و طرز کار مرورگر را نمی دانند. در این مطلب سعی دارم به شکلی ساده توضیح دهم که یک مرورگر چطور با سرور ارتباط برقرار می کند. البته سادگی این مطلب نشان از سطح پایین بودن آن ندارد. این مطلب اطلاعات شایانی را در اختیار شما قرار می دهد.
تعریف مرورگر: نرم افزاری برای ایجاد ارتباط با سرور و ارسال درخواست و دریافت پاسخ برای دریافت محتوای یک فایل. این فایل می تواند فایل html , css , javascript یا هر نوع فایل دیگری باشد.
تعریف سرور: کامپیوتری است که توانایی ایجاد ارتباط با سیستم های دیگر را به صورت خودکار دارد.
سمت سرور (server side): سمت سرور دقیقا همان معنی لغوی خود را می دهد و منظور برنامه ، کد و یا ... است که در سرور به کار می افتد.
سمت کاربر (user side): سمت کاربر هم دقیقا همان معنی لغوی خود را می دهد و منظور برنامه ، کد و یا ... است که در مروگر به کار می افتد.
کمی درباره ی سرور
سرور چیز خیلی پیچیده ای نیست. یک سرور در اصل یک سیستم است که به شبکه (یا اینترنت یا هر شبکه ی دیگری) متصل است و می تواند به صورت خودکار با دیگر سیستم های متصل به شبکه ارتباط برقرار کند.
هر چه فعالیت های سرور سنگین تر و پر تعداد تر باشد ، سرور باید از توانایی سخت افزاری بالا تری برخوردار باشد تا بتواند آن فعالیت ها را بدون این که در کارش وقفه ای (هنگ کردن) ایجاد شود ، انجام دهد. (موضوع امنیتی جالبی در این باره هست که می توانید در این مطلب مطالعه کنید)
وقتی ما صفحه ای از یک سایت را می بینیم ، در اصل داریم یک فایل اچ تی ام ال را که از سمت یک سرور ارسال شده است ، مشاهده می کنیم.
کمی درباره ی مرورگر
مرورگر ها توانایی این را دارند که درخواست هایی را به سمت سرور ارسال کنند. این درخواست ها در سرور بررسی می شوند و جوابی از آن به سمت کاربر باز می گردد. این پاسخ ممکن است هر چیزی را در بر داشته باشد که مرورگر با بررسی آن نتیجه را به شما نشان می دهد.
مرورگر ها کد ها و پاسخ های غیرقابل فهم برای انسان را به صورتی قابل فهم و عینی در می آورند تا ما به راحتی در وب کار کنیم.
چگونه یک صفحه را در اینترنت می بینیم
امروزه کار با صفحات وب آنقدر راحت شده است که حتی یک کودک هم می تواند یک صفحه از اینترنت را باز کند و به انجام بازی مورد علاقه اش در اینترنت بپردازد. این راحتی در مرحله ی اول از آنجایی ایجاد می شود که تمام درخواست ها و پاسخ هایی که بین مرورگر و سرور رد و بدل می شود ، کاملا خودکار است و شما لازم نیست هیچ کاری در این باره بکنید. در مرحله ی بعدی کار شما از آنجا راحت می شود که کد هایی به نام Javascript و Css در دنیای اینترنت در کنار Html با هم کار می کنند و امکان طراحی و گسترش دادن صفحات وب را برای طراحان ایجاد می کنند. اما شما هیچ اثری از این کد ها در یک صفحه نمی بینید. مرورگر تمام این کد ها را به شکلی تبدیل می کند که شما بتوانید در آن به راحتی کار کنید و نیازی به دانستن کد ها نداشته باشید. برای این که ببینید ، مرورگر چه کار پیچیده ای را در یک لحظه انجام می دهد ، متن را ادامه دهید.
قبل از این که وب به این سطح از پیشرفت خود برسد ، وسایل ارتباط برقرار کردن با سرور ها بسیار ابتدایی و در حد کد های بسیار پیچیده بودند که هر کسی از آن ها سر در نمی آورد. یک سرور برای این که بتواند تشخیص بدهد شما دقیقا چه چیزی را از او می خواهید ، باید اطلاعات زیادی را در قالب یک در خواست از سمت کاربر دریافت کند. این اطلاعات می تواند شامل نوع فایل درخواستی ، آدرس فایل ، کوکی ها و ... باشد (کوکی ها اطلاعاتی هستند که به صورت زمان دار در مرورگر ذخیره می شوند و سرور هم می تواند از آن ها برای انجام فعالیت هایی استفاده کند.) . پیشنهاد می کنم برای این که دقیقا ببینید در مشاهده ی یک صفحه ی وب چقدر درخواست و پاسخ بین مرورگر و سرور رد و بدل می شود از افزونه ی live HTTP headers مرورگر فایرفاکس استفاده کنید. این افزونه ، هر بار که مرورگر درخواستی را ارسال کند یا پاسخی دریافت کند ، اطلاعات منتقل شده را نمایش می دهد.
یک مثال:
وقتی شما می خواهید صفحه ی اصلی سایت ابزارها قالب را ببینید ، ابتدا مرورگر شما این درخواست را به صورت زیر برای سرور ارسال می کند:
درخواست مرورگر:
- نوع درخواست ارسالی (get یا post): در ارسال درخواست به صورت get تمام اطلاعات در آدرس بالای صفحه ی مرورگر ارسال می شود ، اما در حالت post ، اطلاعات ارسالی در پس زمینه ی فعالیت های مرورگر و در header (یا همان درخواست ارسالی) به سرور فرستاده می شود.
- آدرس هاست (میزبان): سرور ها به بخش های کوچک تری به نام هاست تقسیم می شوند. برای این که شما بتوانید با این بخش ها ارتباط داشته باشید باید نام آن را در مرورگر ارسال کنید. (البته این کار خودکار انجام می شود)
- اطلاعات میهمان: وقتی شما با یک سرور ارتباط برقرار می کنید به عنوان یک کاربر میهمان شناخته می شوید. هر کاربر میهمانی قبل از ورود باید خود را معرفی کند. اطلاعاتی که معرف کاربران هستند در پس زمینه ی کار مرورگر (headers) به سرور ارسال می شوند. این اطلاعات شامل نام مرورگر و نسخه ی آن ، نام سیستم عامل و نسخه ی آن و اطلاعات دیگری می تواند باشد.
- نوع فایل درخواستی: همان طور که می دانید ، انواع فایل ها می تواند در یک سیستم ذخیره شود. سرور هم یک سیستم است و می تواند انواع فایل ها را داشته باشد. پس مرورگر باید نوع فایلی که مدنظر ماست را از سرور درخواست کند ، نه هر نوع فایلی را. مثلا وقتی می خواهیم یک صفحه ی وب را ببینیم ، نوع فایل html است.
- زبان درخواستی: مرورگر می تواند زبان انگلیسی ، فارسی یا هر زبان دیگری را از سرور درخواست کند. این اطلاعات می تواند در بعضی از سرور ها به کار بیاید.
- نوع فشرده سازی: پیشنهاد می کنم در باره ی فشرده سازی gzip در وب مطالعه کنید. این موضوع ، مبحث بسیاری گسترده ای است که جای آن در این مطلب نیست. فقط در همین حد بدانید که فشرده سازی برای کم حجم کردن فایل ها قبل از رد و بدل شدن بین مرورگر و سرور به کار می رود تا اطلاعات سریع تر منتقل شوند.
- آدرس زیر مجموعه ی مورد نظر: همان طور که گفتم ، این فایل ها هستند که در دیدن یک صفحه وب منتقل می شوند. حال اگر مرورگر شما فایلی به غیر از فایل صفحه ی اصلی را بخواهد ، باید آن را به گونه ای برای سرور تعریف کند تا سرور همان فایل مورد نظر را برگرداند.
- کوکی ها: اطلاعات مدت دار ذخیره ای در مرورگر. در این باره بیشتر مطالعه کنید.
- نوع ارتباط: در ارتباطات معمولی این مقدار برابر keep-alive است که یعنی ارتباط را زنده نگه دار.
پاسخ بازگشتی از طرف سرور: هر سروری به خواست خود می تواند اطلاعات مختلفی را به مرورگر باز گرداند ولی معمولا اطلاعات زیر هستند که در اکثر سرور ها برگشت داده می شوند.
- اولین پاسخ ، پاسخ تایید یا عدم تایید است. اگر درخواست شما قابل قبول نباشد ، سرور اجازه ی دسترسی به شما نخواهد داد.
- نوع فایل بازگشتی
- نوع فشرده سازی
- حجم اطلاعات بازگشتی که همان حجم فایل درخواست شده است. (بر حسب بایت)
در نهایت این درخواست و پاسخ ها در کنار فایلی که از سمت سرور باز می گردد ، یک صفحه ی وب را تشکلی می دهند و شما می توانید یک صفحه ، بله فقط یک صفحه از اینترنت را ببینید.