پروتکل HTTP چیست؟
پروتکلهای اینترنتی به عنوان مهمترین و پرکاربردترین استاندارد برای تبادل اطلاعات در شبکههای اینترنتی شناخته میشوند. پروتکل HTTP یا Hyper Text Transfer Protocol یکی از استانداردهای پرکاربرد تعریف شده برای شبکههای اینترنتی است که مدتی بعد از ساخت اولین سایتها ایجاد شد. این استاندارد به تدریج توسعه پیدا کرد و کنسرسیوم جهانی وب (W3C) وظیفه توسعه و نظارت این پروتکل را بر عهده گرفت. در ادامه این مطلب با این پروتکل بیشتر آشنا خواهیم شد.
پروتکل Http چیست؟
در گذشته روش استانداردی برای تبادل اطلاعات در شبکه اینترنت وجود نداشت. به همین دلیل تیم برنرز لی (Tim Berners-Lee) در سال 1991 پروتکل Http را با هدف پیاده سازی یک استاندارد برای تبادل اطلاعات در شبکه اینترنت ایجاد کرد. برنرز لی این پروتکل را به همراه ساختار اولیه HTML در یک وب سرور ساده و یک مرورگر مبتنی بر متن ارائه کرد.
Http مخفف عبارت Hyper Text Transfer Protocol است که به معنی پروتکلی برای انتقال ابرمتنها میباشد. بر اساس این پروتکل، امکان ایجاد صفحات وب و سایتهای اینترنتی فراهم شد. این پروتکل وظیفه برقراری ارتباط میان سرور و کلاینت را در یک شبکه کامپیوتری برعهده دارد. به عبارتی دیگر این پروتکل مسئولیت برقراری ارتباط بین سرویس دهندگان و سرویس گیرندگان وب را برعهده دارد.
منظور از Hypertext یا ابرمتن چیست؟
شاید برای شما سوال شود، که منظور از کلمه Hypertext چیست؟ منظور از Hypertext یا ابر متن، متنهای بزرگ و طولانی است که به صورت HTML نوشته میشوند. البته برخلاف اینکه کدهای نوشته شده فقط به صورت متنی هستند، بعد از پردازش توسط مرورگر کاربر الزاما به صورت متنی نخواهند بود. یک سند HTML میتواند دارای تصویر، ویدئو، جدول ، لینک و… باشد. اگر هنوز نتوانسته اید به خوبی این موضوع را درک کنید، بهتر است خودتان به یک ابر متن نگاه کنید!
برای مثال صفحه اول سایت سون لرن را در نظر بگیرید. آن چه میبینید یک صفحه شکیل با اجزای مختلف از جمله تصویر، متن، کادربندی و… است. اما اگر قصد دارید پشت صحنه این صفحه وب را ببینید، کافی است با مرورگر خود (مثلا مرورگر کروم) روی صفحه کلیک راست کنید و روی گزینه Inspect کلیک کنید. آنچه الان میبینید یک Hypertext است.
پروتکل Http چگونه کار میکند؟
پروتکل Http از Handshaking به منظور ارسال و دریافت اطلاعات استفاده میکند. در این روش برای شروع و پایان عملیات تبادل اطلاعات بین سرور و کلاینت، چندین درخواست و پاسخ رد و بدل میشود. تصور کنید که کلاینت (مرورگر) فردی است که قصد دارد اطلاعات مربوط به یک سایت را دریافت کند. در ابتدا باید درخواستی با این هدف به سرور آن سایت ارسال کند. سپس باید صبر کند، تا از طرف سرور پاسخی برای درخواستش دریافت کند. در صورتی که اطلاعات خواسته شده در سرور موجود باشند، پاسخی مبنی بر موافقت ارسال اطلاعات برای شخص ارسال میشود.
سپس بار دیگر از طرف کلاینت پیامی مبنی بر درخواست دادههای اطلاعاتی به سرور فرستاده میشود. در این مرحله سرور پیام را دریافت کرده و دادههای درخواست شده را در بستههای اطلاعاتی کوچکتری تقسیم میکند. در نهایت این بستهها توسط پروتکل Handshaking پشت سر هم و به ترتیب برای شخص ارسال میشوند. لازم به ذکر است که در این فرآیند از پروتکل های TCP/IP به منظور افزایش امنیت و تضمین ارسال دادهها استفاده میشود. ارتباط بین کلاینت و سرور در این پروتکل معمولا از طریق پورت 80 انجام میشود. همچنین به مجموعه اطلاعات تبادل شده بین دو کلاینت و سرور در این فذآیند، نشست یا session گفته میشود.
روشهای درخواست در پروتکل http
پروتکل Http روشهای مختلفی را برای درخواست اطلاعات در شبکه وب تعریف کرده است. هر کدام از این روشها با هدف خاصی در وب سرورها استفاده میشوند. اولین نسخه این پروتکل (نسخه ۱) فقط از روشهای درخواست GET, POST و HEAD پشتیبانی میکرد. اما در نسخه ۱٫۱ پنج روش جدید تحت عنوانهای OPTIONS, PUT, DELETE, TRACE و CONNECT اضافه شد. نحوه عملکرد هر کدام از این روشها به طور کامل برای مرورگرها تعریف شده است. بنابراین تمامی مرورگرها و سرورها به راحتی می توانند این روشها را پیاده سازی کنند. در ادامه به توضیح هر کدام از این روشها میپردازیم:
- GET : پیام هایی که در این روش ارسال میشوند تنها شامل یک URL هستند. البته در این پیامها میتوان تعدادی پارامتر دلخواه در انتهای URL اضافه کرد. پارامترهای دلخواه در این پیام ها، در URL ارسال شده، به راحتی قابل مشاهده هستند. این نوع پیامها پس از ارسال توسط سرور پردازش میشوند و در نهایت نتیجه آن به درخواست کننده یا همان مرورگر بر میگردد.
- POST : در این نوع پیام ها، پارامترهای دلخواهی که اضافه میشود، قابل مشاهده نمیباشند. زیرا در این روش به جای اضافه کردن پارامترها در انتهای URL، آنها در درون پیام درخواست شده قرار داده میشوند.
- HEAD : این درخواستها مشابه پیامهای GET هستند. تفاوت این دو درخواست در این است که در پیامهای Head به جای ارسال پاسخهای مربوط به محتوای URL، فقط دادههای مربوط به header سایت را ارسال میکنند. این دادهها همان اطلاعاتی هستند که در قسمت <head> یک سند html وجود دارند.
- PUT : در این روش داده هایی به همراه پیام درخواست به سرور ارسال میشود. سپس از سرور تقاضا می شود که این دادهها را در آدرس مشخص شده ذخیره کند. اگر در محلِ درخواست شده از قبل دادههای دیگری قرار ذخیره شده باشند، دادههای جدید جایگزین خواهند شد.
- TRACE : در این روش، سرور دادههای ارسال شده را دقیقا به کلاینت یا درخواست کننده باز می گرداند.
- OPTIONS : زمانی از این روش استفاده میشود که بخواهند، روشهای درخواست اطلاعات موجود برای یک آدرس را به دست آورند. این روش از سرور تقاضا می کند تا روشهای درخواست موجود برای آدرس فرستاده شده را اعلام کند.
- DELETE : از این روش برای حذف یک آدرس در سرور استفاده میشود.
- CONNECT : این روش اطلاعات و دادهها را در پروتکل http به یک تونل TCP/IP تبدیل می کند. این عمل معمولا برای برقراری ارتباط امن (HTTPS) بر روی یک پراکسی سرور ناامن استفاده می شود.
- PATCH : این روش در سال ۲۰۱۰ به پروتکل http اضافه شد. این روش برای ایجاد تغییرات جزیی بر روی دادهها مورد نظر در سرور استفاده می شود.
ساختار Responseها و Requestها در Http
فرمت پیامهای درخواست (Request) و پاسخ (Response) در پروتکل Http مشابه هم هستند. هر دو پیامها شامل اجزای زیر میباشند:
- خط شروع کننده : خط شروع کننده دارای 3 بخش است که با Space از یکدیگر جدا شده اند. بخش اول نشان دهنده نسخه HTTP در حال استفاده (Version) است. دومین و سومین بخش از خط شروع کننده، نشان دهنده کد و پیام مربوط به وضعیت ارسال درخواست یا پاسخ است.
- خطوط Header : خطوط Header اطلاعات لازم برای درخواست و یا پاسخ را آماده میکنند. هر Header در یک خط جدا تعریف میشود و ساختار آنها به صورت KEY:VALUE است. در این بخش اطلاعاتی شامل نام سرور، اطلاعات مربوط به بدنه و… ذکر میشود.
- یک خط خالی : پس خطوط Header یک خط خالی قرار میگیرد.
- بدنه : یک پیام HTTP ممکن است بعد از خطوط Header شامل یک بدنه باشد. در این بخش اطلاعاتی مانند دادههای وارد شده توسط کاربر، نتایج یک فرم و… ثبت و سپس به سرور فرستاده میشوند.