پروتکل HTTP قسمت دوم

در قسمت اول، گفتیم HTTP ، پروتکل ارتباط بین Client و Server است که با استفاده از اون، این دو میتوانند با هم تبادل داده داشته باشند و تبادل داده هم در HTTP با Request و Response اتفاق می افته. HTTP یک رکوئست از کلاینت میگیره، اون رو درشبکه حمل میکنه، به سرور میده و در ازاش از سرور یک ریسپانس دریافت میکنه و مجدد به کلاینت برمیگردونه.اما قبل از اینکه بیشتر وارد این پروتکل بشیم باید چند تا مفهوم برامون روشن باشه.شاید بدیهی به نظر میاد ولی بهتره که باز هم بهشون اشاره ای بکنیم:1- مرورگر یا Browser : یک نرم افزاره که به ما امکان دسترسی به صفحات HTML و اطلاعات وب رو میده.2- عامل کاربر یا User agent : وقتی مرورگره کلاینت، یک درخواست به سمت سرور میفرسته، همراه باهاش، یک سری اطلاعات هم از کاربر به سرور میده. مثل اینکه خودش چه مرورگری هست، روی چه سیستم عاملی داره استفاده میشه، ورژن HTTP که داره ازش استفاده میکنه چیه و غیره. این اطلاعات مخصوصا در سایت های آمارگیر استفاده میشه و برای برنامه نویسان هم ارزش بالایی داره. البته چون داره از سمت کلاینت میاد، قابل دستکاری هم هست. برای همین خیلی قابل استناد و مطمئن نیست.3- پروتکل TCP و UDP : گفتیم خود HTTP یک پروتکله. در این پروتکل، برای ارتباط بین سرور و کلاینت، از پروتکل های انتقال داده استفاده کرده که مهمترین این پروتکل ها TCP/IP است. از HTTP 3 به اینور، از پروتکل UDP استفاده شده.حالا فرق این دو در چیه؟ پروتکل TCP بین دو کامپیوتر در یک شبکه، به این شکل عمل میکنه که درخواست یا Request رو به بسته های استاندارد خودش میشکنه و این بسته ها رو به شکل ترتیبی، و پشت سره هم میفرسته.منتها در ازای هر بسته منتظر یک پاسخ از سمت سرور هم هست. یعنی ارسال بسته ی بعدی،منوط به تاییدیه دریافت بسته ی قبلیه. این یک حسن داره و اینکه این پروتکل تضمین میکنه که درخواست کامل ارسال میشه. اما یک عیب داره و اون اینکه اگر بسته ای بنا به هر دلیل گم شد وسط راه یا نرسید، نمیاد مابقی بسته ها رو بفرسته و ارسال همونجا متوقف میشه. پروتکل UDP فرقش با TCP در همین قسمته که UDP اگر بسته ای مفقود شد،کماکان ارسال رو ادامه میده و این ترتیبی پشت سرهم ارسال رو رعایت نمیکنه و در نهایت، دوباره بسته های مفقود شده رو ارسال میکنه. این حسنش همینه که سرعت به شدت میره بالا، مخصوصا در ارتباطاتی مثل لایو های اینستاگرام که سرعت بسیار مهمه، خیلی اثر داره. ولی بدیش اینه که تضمینی دیگه برای ارسال همه ی اطلاعات نداره. 4- آی پی یا IP : هر کامپیوتری در شبکه اینترنت، چه Router یا مسیریاب باشه، چه سرور، چه کلاینت، چه پروکسی،فرقی نمیکنه، هر کامپیوتری در وب دارای یک شناسه ی منحصر به فرده که از بقیه متمایزش میکنه.5- آدرس یا URL : هر فایل یا محتوایی که در اینترنت قرار داره، حتما باید دارای یک URL یا آدرس منحصر به فرد باشه. 6- ریسورس یا Resource : به هر محتوایی که ما از طریق URL بهش دسترسی داریم، Resource گفته می شود.7- فضای نام یا DNS : گفتیم کامپیوتر ها در وب دارای IP یکتا هستند. اما میشه یک نام و یک دامنه رو به شکل یک آدرس یا URL به یک IP نسبت داد که خوانایی دسترسی بهش بیشتر بشه. یعنی آدرس IP مثل X.X.X.X رو میشه گفت معادل MyWebSiteName.Com است.این به چه شکله؟ یک سری سرورها هستند که کارشون مثل دفترچه تلفنه!. در واقع یک دیتابیس عظیم از نام ها و آی پی ها دارند که میگه هر آی پی معادل چه نامیه. از این دست سرورها در تمامی جهان زیاده و اینها بهمدیگه هم متصل هستند. وقتی شما در یک شرکت هاستینگ فضای نامی رو که خریداری کردید رو، ثبت میکنید، بعد از مدتی تقریبا در تمامی این DNS سرورها، در سرتاسر جهان این نام در دیتابیس هاشون ثبت میشه و اینطوریه که IP خاصی،معرف یک نام مشخص میشه که دیگه کسی نمیتونه اون نام رو برای خودش بزنه.وقتی هم که شما در یک مرورگر، ادرسی رو میزنید، مرورگر هم برای رفتن به اون آدرس بعد از اینکه Cache خودش رو چک کرد که اگر قبلا رفته، زودتر سایت رو لود کنه، اگر پیدا نکرد میره سر وقت همین DNS سرورها. البته سلسله مراتبی داره که در بحث نمیگنجه.8 - آی آی اس یا IIS : راه ارتباطی کاربر کلاینت با اینترنت از طریق نرم افزاریه به اسم مرورگر. از اون سمت هم یک اپلیکیشنی روی سرورها نصبه که بهش میگن IIS و این میشه راه ارتباطی سرور و اصلا سرور کردن یک کامپیوتر!. اگر کامپیوتری IIS نداشته باشه، پس نمیتونه نقش سرور رو ایفا کنه.قبلا هم اشاره کردیم که کامپیوتر کلاینت دروازه ارتباطیش با HTTP از طریق مرورگر باز میشه و برای سرور از طریق IIS.9- پروکسی یا Proxy : سرورهای واسطی هستند که سره راه سرور و کلاینت قرار میگیرند و هدف از قرار گیریشون هم یا احراز هویت برای کاربرانه یا تغییر هویت اونها برای دور زدن فیلترینگ.10- درخواست و پاسخ یا به عبارتی Request و Response : پروتکل HTTP، ارتباط بین سرور و کلاینت رو با استفاده از Request و Response هندل میکنه. به درخواست های سمت کلاینت میگن Request و به پاسخ از سمت سرور به کلاینت میگن Response. هر دوتاشونم یک بخش Header دارند که اطلاعات بسیار مهمی درباره اینکه چی هستند و چی میخوان و چی کاری قراره انجام بگیره به طرفین میرسونه.11- کوکی یا Cookie : که هم سمت سروره و هم سمت کلاینت و هدفشم تسریع در مراجعات بعدیه. به این شکل وقتی کاربر از سایتی بازدید میکنه، فایل متنی به اسم کوکی حاوی یک سری اطلاعات از اون بازدید رو در خودش نگه میداره و در دفعات بعدی و رکوئست های بعدی اون اطلاعات رو هم میفرسته.برای همینه که گاهی به سایتی که لاگین میکنید، میبیند که حتی اگر مرورگرتون رو ببندید و مجدد باز کنید، هنوز هم لاگین هستید.نکته ی مهم اینه که نباید کوکی با Caching فایل های CSS و JS در سمت کاربر اشتباه گرفت.