HTTP یا Hypertext Transfer Protocol چیست؟
Hypertext Transfer Protocol که در اختصار به HTTP معروف است یک برنامه برای ایجاد برقراری ارتباط بین سیستمها ساخته شده است. HTTPS بدست Sir Tim Berners Lee طراحی شده است و در حال حاضر بدست W3C مدیریت میشود. برای درک بیشتر این پروتکل به مثالی که در ادامه برای شما بازگو میکنیم توجه کنید:
زمانی که شما در مرورگر خود آدرس www.Netran.net را وارد میکنید در خواستی از سوی مرورگر شما به سرور سایت ارسال خواهد شد و این سرور جوابی برای شما ارسال خواهد کرد تا صفحهی سایت نتران را مشاهده کنید. همهی این ارتباطات از طریق این پروتکل صورت خواهد گرفت.
HTTP چگونه کار میکند؟
همانطور که گفته شد این پروتکل برای انتقال منابع در سطح اینترنت استفاده میشود. HTTP از درگاه (Port) استفاده میکند. درخواستهایی که از این درگاه به سرور ارسال میشود مورد پذیرش قرار خواهند گرفت و به آنان پاسخ داده میشود.منابعی که از طریق HTTP انتقال میابند شامل عکسها نوشتهها و حتی خروجی کدهای اسکریپت است.
زمانی که شما مرورگر خود را باز میکنید؛ درواقع یک نشست HTTP را باز کردهاید. در همین زمان درخواست برقراری ارتباط از سوی مرورگر شما به سرور سایت خواهد رسید. پس از ارسال پاسخ از سرور و اتمام کار این ارتباط قطع خواهد شد برای همین به این نوع از ارتباط Stateless گفته میشود.
درخواستی که از سوی مرورگر شما فرستاده میشود؛ “Client Request” نام دارد. که شامل موارد زیر است:
- خط شروع (start line): در ابتدای هر پیام درخواستی که از سوی کاربر ارسال میشود؛ سه بخش بدست مرورگر نوشته خواهد شد. این سه بخش شامل HTTP method ، هدف درخواست (request target) و نسخه پروتکل (HTTP version) است.
- هدر (headers): ساختارهایی برای تشخیص HTTP هستند.
- خط جداکننده: همانطور که از اسم این بخش معلوم است خطی است که بین هدر و body فاصله میاندازد.
- body: پخش پایانی هر درخواست شامل این قسمت هست. بیشتر برای درخواستهای آپلود و ارسال داده به سوی سرور صورت میگیرد.
تصویر پایین جایگاه موارد بالا را به شما نان میدهد:
کدهای مشخص کننده وضعیت HTTP
پاسخی که از سوی سرور به مرورگر ارسال میشود شامل کدها مشخص کنند وضعیت است. این کدها نشان دهده وضعیت منبعی هستند که ما خواهان دسترسی به آن هستیم.
این کدها شامل زیر است:
- کدهای 1xx: انتقال پیام اطلاعات
- کدهای 2xx: ارسال پیام موفقیت بطور مثال کد 200 نشان دهنده پیدا شدن فایل مورد نظر است.
- کدهای 3xx: مشکل از URL است. بطور مثال کد 301 نشان دهنده تغییر لینک مورد نظر است.
- کدهای 4xx: این کدها نشاندهنده وضعیتی درباره کاربر هستند. بطور مثال کد 404 به معنی پیدانشدن فایل مورد نظر است.
- کدهای 5xx: این کدها نشان دهنده مشکل از سوی سرور هستند . بطور مثال کد 500 به معنی ارور از سوی سرور است.
تصویر پایین نمونه کدهای مشخص کننده وضعیت هستند:
در تصویر بالا با یکسری از کدهای مشخص کننده وضعیت HTTP مواجه شدید.
توضیحی درباره کدهای مشخص کننده وضعیت HTTP
در پایین برای شما این کدها را تعریف خواهیم کرد:
- کد 200: این کد نشان دهنده موفقیت آمیز بودن درخواست HTTP در متد Get و پاسخ در متد Post است.
- کد 201: این کد به معنی ساخته شدن منبع جدیدی در سرور است زمانی که این منبع هنوز ساخته نشده با کد 202 روبرو خواهید شد.
- کد 202: این کد به معنی موافقت درخواست شما برای ساختی منبی در سرور است. این کد معمولا قبل از کد 201 ظاهر میشود.
- کد 301: این کد به معنی انتقال همیشگی URL مورد نظر به آدرس دیگری است.
- کد 303: این کد به معنی استفاده درخواست از متد Get است. آدرسی که کاربر در آن قرار دارد و آدرسی که منتقل میشود هر دو از این متد انجام میشوند.
- کد 304: زمانی است که مرورگر برای برسی تغییر آنی یک منبع در سرور انجام میشود. اگر تغییری صورت نگرفته باشد این کد برای کاربر ارسال میشود.
- کد 307: این کد برای مواردی است که آدرس اصلی منبع موقتا به آدرسی دیگر انتقال یافته است.
- کد 400: این کد برای موقعیتهایی است درخواست HTTP ارسال شده درست نوشته نشده باشد و سرور نتواند آن را تشخیص دهد.
- کد 401: این کد برای زمانی است که دسترسی به سایتی محدود شده و نیاز به وارد کردن رمز عبور و نام کاربری است.
- کد 403: این کد به معنی محدودیت برای دسترسی به سایت مورد نظر است. تفاوت این نوع کد با کد 401 در این است که شما حتی با وارد کردن رمز عبور و نام کاربری ام نمیتوانید وارد سایت شوید.
- کد 404: این کد نشان دهنده پیدا نشدن منبع مورد نظر است.
- کد 410: این کد پاک شدن منبع مورد نظر را بیان میکند.
- کد 500: زمانی که سرور مشکل داخلی دارد و نمیتواند به درخواست شما پاسخ دهد این کد ظاهر میشود.
- کد 503: این کد زمانی ظاهر میشود که درخواستهای ارسال شده به سرور زیاد است. در این موارد سرور قادر به پاسخگویی نیست.
موارد بالا توضیحی درباره نمونه کدهای مشخص کننده وضعیت HTTP است. در مقاله بعد شما را با تفاوتهای HTTPS با HTTP آشنا خواهیم کرد.