پروتکل http

BirHosting http index
توسط

پروتکل HTTP متداول‌ترین شکل ارتباط میان مرورگرهای وب و سرویس‌دهندگان وب مانند Apache و IIS است و برای انتقال اطلاعات از کدهای متنی و قابل مشاهده برای سرورهای میانی استفاده می‌کند. تمامی وب سایت های موجود در اینترنت از پروتکل HTTP استفاده می نمایند.

BirHosting http

HTTP یک پروتکل لایه‌ی ۷ شبکه، یعنی لایه‌ی Application است که برای برقراری ارتباط بین Web Client و وب‌سرور استفاده می‌شود. این پروتکل، با هر دو پروتکل اصلی لایه‌ی Transport، یعنی TCP و UDP سازگار است و می‌تواند بر پایه‌ی آن‌ها اتصال خود را ایجاد کند.

در نسخه‌های اولیه‌ی HTTP، برای ارسال هر منبع یا پاسخ‌گویی به هر درخواست، اتصال جداگانه‌ای ایجاد می‌شد و پس از ارسال Response یا منبع موردنظر کاربر، اتصال بسته می‌شد. در نسخه‌های جدید‌تر HTTP، این امکان وجود دارد که چندین منبع، تنها در یک اتصال برای یک کاربر خاص ارسال شوند که این اصلاح باعث شده تا کاربران، متوجه تاخیر کم‌تری در دریافت منابع شوند.

عملکرد پروتکل HTTP

شیوه‌ی کار پروتکل HTTP به این شکل است که کاربر، برای نمونه یک مرورگر، درخواستی را برای سرور (برنامه‌ای در حال اجرا) در قالب این پروتکل ارسال می‌کند. این درخواست می‌تواند یک Request برای یک فایل HTML، تصویر یا حتی یک کد باشد.

پس از دریافت Request، سرور آن را بررسی می‌کند و براساس پارامتر‌هایی مانند در دسترس بودن Resource مورد نظر کاربر و درست بودن درخواست ارسال شده، کدی را برای کاربر ارسال می‌کند. اگر این کد، نشان‌‌دهنده‌ی آن باشد که هیچ مشکلی در درخواست ارسال شده، وجود منبع و دسترسی به آن وجود ندارد، سرور منبع مورد نظر Client را نیز ارسال می‌کند.

روش‌های درخواست در پروتکل http

GET : پیام هایی که در این روش ارسال می‌شوند تنها شامل یک URL هستند. البته در این پیام‌ها می‌توان تعدادی پارامتر دلخواه در انتهای URL اضافه کرد. پارامترهای دلخواه در این پیام ها، در URL ارسال شده، به راحتی قابل مشاهده هستند. این نوع پیام‌ها پس از ارسال توسط سرور پردازش می‌شوند و در نهایت نتیجه آن به درخواست کننده یا همان مرورگر بر می‌گردد.
POST : در این نوع پیام ها، پارامترهای دلخواهی که اضافه می‌شود، قابل مشاهده نمی‌باشند. زیرا در این روش به جای اضافه کردن پارامترها در انتهای URL، آن‌ها در درون پیام درخواست شده قرار داده می‌شوند.
HEAD : این درخواست‌ها مشابه پیام‌های GET هستند. تفاوت این دو درخواست در این است که در پیام‌های Head به جای ارسال پاسخ‌های مربوط به محتوای URL، فقط داده‌های مربوط به header سایت را ارسال می‌کنند. این داده‌ها همان اطلاعاتی هستند که در قسمت <head> یک سند html وجود دارند.
PUT : در این روش داده هایی به همراه پیام درخواست به سرور ارسال می‌شود. سپس از سرور تقاضا می‌ شود که این داده‌ها را در آدرس مشخص شده ذخیره کند. اگر در محلِ درخواست شده از قبل داده‌های دیگری قرار ذخیره شده باشند، داده‌های جدید جایگزین خواهند شد.

TRACE : در این روش، سرور داده‌های ارسال شده را دقیقا به کلاینت یا درخواست کننده باز می‌ گرداند.
OPTIONS : این روش از سرور تقاضا می‌ کند تا روش‌‌های درخواست موجود برای آدرس فرستاده شده را اعلام کند.
DELETE : از این روش برای حذف یک آدرس در سرور استفاده می‌شود.
CONNECT : این روش اطلاعات و داده‌ها را در پروتکل http به یک تونل TCP/IP تبدیل می‌ کند. این عمل معمولا برای برقراری ارتباط امن (HTTPS) بر روی یک پراکسی سرور ناامن استفاده می‌ شود.
PATCH : این روش در سال ۲۰۱۰ به پروتکل http اضافه شد. این روش برای ایجاد تغییرات جزیی بر روی داده‌ها مورد نظر در سرور استفاده می‌ شود.

BirHosting http2

انواع Server Responseها

کد‌های HTTP ارسال شده از سمت سرور را می‌توان به ۵ دسته‌ی کلی تقسیم کرد. تمامی این کد‌ها، به‌شکل یک عدد سه رقمی ارسال می‌شوند که رقم اول، نشان‌دهنده‌ی آن است که این خطا به کدام یک از پنج دسته‌ی زیر تعلق دارد.

۱- Informational Responses: این کد‌ها نشان‌دهنده‌ی آن هستند که درخواست دریافت شده است و سرور می‌تواند آن را تشخیص دهد.  عدد مشخص کننده‌ی این پاسخ‌ها، عدد ۱ است و کد‌های ارسال شده به صورت ۱xx هستند.

۲- Successful Responses: ارسال این کد از سمت سرور به این معنی است که درخواست کاربر با موفقیت انجام شده است. کد‌های مشخص کننده‌ی این پیام به‌شکل ۲xx هستند. معروف‌ترین این کد‌ها، کد ۲۰۰ است که نشان می‌دهد درخواست کاربر کاملا با موفقیت انجام شده است و اگر درخواست برای دسترسی به منبعی باشد، منبع مورد نظر هم برای کاربر ارسال می‌شود.

۳- Redirects: گاهی اتفاق می‌افتد که درخواست ارسال شده از سمت Client درست است و منبع خواسته شده هم وجود دارد، ولی نام، مسیر یا مشخصاتی از آن تغییر کرده است. در این هنگام سرور با ارسال این کد و در ادامه با ارسال شکل تصحیح شده‌ی نام یا مسیر، به Client می‌گوید که چگونه این درخواست را بازنویسی کند تا به منبع مورد نظر دست پیدا کند. کد این پیام به‌شکل ۳xx است.

۴- Client Error Responses: هر خطایی در ارسال درخواست از سمت Client وجود داشته باشد، با این کد مشخص می‌شود. نمونه‌ای از این خطا‌ها، زمانی است که کاربر درخواست اشتباهی ارسال می‌کند یا کاربر منبعی را درخواست می‌کند که وجود ندارد. یا برای نمونه، زمانی که کاربر فایل یا منبعی را درخواست می‌کند که اجازه‌ی دسترسی به آن‌ را ندارد )به اصطلاح، Unauthorized است(. کد‌های این خطا به‌شکل ۴xx هستند و پرکاربرد‌ترین آن‌ها، کد‌های ۴۰۰، ۴۰۳ و ۴۰۴ هستند.

۵- Server Error Responses: هر زمان سرور در بررسی درخواست ارسال شده یا پاسخ دادن به آن دچار مشکل می‌شود، این خطا را ارسال می‌کند. مثلا فرض کنید Client برای ارسال Request، از روشی استفاده می‌کند که سرور آن را پشتیبانی نمی‌کند. سرور بعد از دریافت Request، با درخواستی ناشناخته مواجه شده است. از دیگر زمان‌هایی که سرور این کد را ارسال می‌کند، زمانی است که درخواست‌های همزمان زیادی برای سرور ارسال شده است و سرور برای مدتی نمی‌تواند به درخواست جدیدی پاسخ بدهد. این خطا‌ها با کد‌هایی به شکل ۵xx ارسال می‌شوند.

ساختار Response‌ها و Request‌ها در Http

خط شروع کننده : خط شروع کننده دارای ۳ بخش است که با Space از یکدیگر جدا شده اند. بخش اول نشان دهنده نسخه HTTP در حال استفاده (Version) است. دومین و سومین بخش از خط شروع کننده، نشان دهنده کد و پیام مربوط به وضعیت ارسال درخواست یا پاسخ است.
خطوط Header : خطوط Header اطلاعات لازم برای درخواست و یا پاسخ را آماده می‌کنند. هر Header در یک خط جدا تعریف می‌شود و ساختار آن‌ها به صورت KEY:VALUE است. در این بخش اطلاعاتی شامل نام سرور، اطلاعات مربوط به بدنه و… ذکر می‌شود.
یک خط خالی : پس خطوط Header یک خط خالی قرار می‌گیرد.
بدنه : یک پیام HTTP ممکن است بعد از خطوط Header شامل یک بدنه باشد. در این بخش اطلاعاتی مانند داده‌های وارد شده توسط کاربر، نتایج یک فرم و… ثبت و سپس به سرور فرستاده می‌شوند.


پست های توصیه شده