باز کردن منو اصلی

تغییرات

جز
اصلاح فاصله مجازی + اصلاح نویسه با استفاده از AWB
== تاریخچه ==
[[پرونده:Tim Berners-Lee CP 2.jpg|بندانگشتی|چپ|150px|[[تیم برنرز لی]]، به وجود آورندهٔ [[وب جهانی]]]]
[[تیم برنرز لی]]، طراح و پیشنهاد دهنده [[وب جهانی]] که اکنون تحت عنوان WWW شناخته می‌شود، برای اولین بار پروتکل انتقال ابرمتن را به همراه ساختار اولیهٔ [[اچ‌تی‌ام‌ال|زبان نشانه گذارینشانه‌گذاری ابرمتن (HTML)]] در یک [[وب سرور]] ساده و یک [[مرورگر]] مبتنی بر متن ارائه داد. در این نسخهٔ اولیه تنها روش درخواست (Request Method) موجود GET و تمامی پاسخ هاپاسخ‌ها به زبان HTML بودند.<ref name="first_http">{{یادکرد وب |نویسنده = |نشانی= http://www.w3.org/Protocols/HTTP/AsImplemented.html |عنوان= نسخهٔ اولیهٔ HTTP| ناشر = [[کنسرسیوم وب جهان‌شمول|کنسرسیوم وب]]|تاریخ = |تاریخ بازبینی=}}</ref>
 
اولین نسخهٔ مستند پروتکل انتقال ابرمتن نسخهٔ ۰٫۹ آن بود که در سال ۱۹۹۱ منتشر شد.<ref name="first_http"/> [[دیو راگت]]، که در سال ۱۹۹۵ [[گروه کاری پروتکل انتقال ابرمتن]] (HTTP Working Group) را رهبری می‌کرد، خواستار گسترش این پروتکل شد و نهایتاً نسخه ۱٫۰ تحت عنوان «HTTP/1.0» در سال ۱۹۹۶ به صورت رسمی معرفی شد.<ref>{{یادکرد وب |نویسنده = |نشانی= http://www.w3.org/People/Raggett/profile.html|عنوان= زندگینامهٔ دیو راگر | ناشر = |تاریخ = |تاریخ بازبینی=}}</ref><ref>{{یادکرد وب |نویسنده = |نشانی= http://www.w3.org/Arena/webworld/httpwgplans.html|عنوان= برنامه‌ریزی گروه کاری HTTP در سال ۱۹۹۵ | ناشر = |تاریخ = |تاریخ بازبینی=}}</ref>
پروتکل انتقال ابرمتن یک پروتکل درخواست و پاسخ در مدل [[مدل کارخواه-کارساز|کلاینت–سرور]] می‌باشد. برای مثال یک [[مرورگر وب]] می‌تواند یک ''کلاینت'' و نرم‌افزار موجود بر روی سرویس‌دهندهٔ وبسایت، یک ''سرور'' باشد. شروع این پروتکل از طرف کلاینت است که با ارسال یک درخواست HTTP به سمت سرور گفتگو را آغاز می‌کند. سرور بر اساس درخواست ارسالی یا منبعی مانند یک فایل را در اختیار کلاینت می‌گذارد یا عملیات خاصی را انجام می‌دهد. نتیجهٔ این عملِ سرور در بستهٔ پاسخ HTTP برای کلاینت ارسال می‌شود. بستهٔ پاسخ شامل اطلاعات وضعیت و احتمالاً محتویات منبع درخواست شده می‌باشد.
 
مرورگر وب یک نمونه از [[عامل کاربر]] {{به انگلیسی|User Agent}} است. از دیگر عوامل کاربر می‌توان به [[خزنده‌یخزندهٔ وب|خزندهٔ وب]]، نرم‌افزار هاینرم‌افزارهای [[تلفن همراه|تلفن‌های همراه]] و نرم‌افزار هاینرم‌افزارهای دیگری که به وب متصل شده و از اطلاعات آن استفاده یا صفحه‌ای را نمایش می‌دهند، اشاره کرد.
 
پروتکل انتقال ابرمتن یک پروتکل [[لایهٔ کاربرد]] است که در [[مجموعه پروتکل اینترنت]] طراحی شده و مورد استفاده قرار می‌گیرد. این پروتکل با فرض اینکه [[لایه حمل|لایهٔ حمل (Transport Layer)]] زیرین آن قابل اعتماد است طراحی شده و معمولاً از [[قرارداد هدایت انتقال|پروتکل هدایت انتقال (TCP)]] به عنوان لایهٔ زیرین استفاده می‌کند. با این حال از این پروتکل بر روی لایه‌های غیرقابل اطمینان نیز استفاده می‌شود. مثلاً در پروتکل SSDP، پروتکل انتقال ابرمتن بر روی [[قرارداد داده‌نگار کاربر|پروتکل داده‌نگار کاربر]] (یک پروتکل غیر امن) مورد استفاده قرار می‌گیرد.
 
منابع HTTP همگی با یک [[یوآرآی|شناسانهٔ یکنواخت منبع (URI)]] یا به طوربه‌طور مشخص‌تر با یک [[نشانی وب|نشانی وب (URL)]] آدرس‌دهی و مشخص می‌شوند. تمامی این آدرس‌ها با نشانهٔ http یا https آغاز می‌گردد. از این آدرس‌ها در [[زبان نشانه‌گذاری ابرمتنی|زبان نشانه‌گذاری ابرمتن]] به صورت گسترده برای انتقال بین صفحات مختلف استفاده می‌گردد و از آن تحت عنوان [[ابرپیوند|پیوند یا لینک]] یاد می‌شود.
 
نسخهٔ ۱٫۱ این پروتکل برخلاف نسخهٔ ۱٫۰ قابلیت استفاده از یک اتصال {{به انگلیسی|Connection}} برای چندین درخواست را دارد. مثلاً می‌تواند عکس‌ها، فایل‌های اسکریپت و … موجود در یک صفحه را با همان اتصال اولیه دریافت کند. لذا سرعت آن به دلیل حذف شدن برقراری ارتباط مجدد TCP نسبت به نسخهٔ ۱٫۰ افزایش یافته استیافته‌است.
 
== جلسه ==
 
=== روش‌های درخواست ===
پروتکل انتقال ابرمتن روش‌هایی را برای درخواست تعریف کرده استکرده‌است {{به انگلیسی|Request Method}}که هر کدام از آن‌ها باعث انجام عمل خاص در سمت سرور می‌شوند. نسخهٔ ۱٫۰ روش‌های درخواست GET، POST و HEAD را دارا بود.<ref name="rfc_1945">{{یادکرد وب |نویسنده = |نشانی= http://tools.ietf.org/html/rfc1945|عنوان= RFC 1945 - HTTP/1.0| ناشر = [[نیروی ضربت مهندسی اینترنت]]}}</ref><sup>[بخش ۸]</sup>
در نسخهٔ ۱٫۱ پنج روش جدید افزوده شد<ref name="rfc_2616"/><sup>[بخش ۹]</sup>: OPTIONS، PUT، DELETE، TRACE و CONNECT. از آنجایی که عملکرد این روش‌ها به طوربه‌طور کامل تعریف و شرح داده شده است، لذا تمامی [[مرورگر|مرورگر ها]] و سرور هاسرورها به راحتی می‌توانند این روش‌ها را پیاده‌سازی و استفاده نمایند. اگر روشی برای سرور تعریف نشده باشد، با آن به عنوان یک روش غیرِامن برخورد خواهد کرد. در تعداد روش‌ها هیچ محدودیتی وجود ندارد. این نکته باعث می‌شود که گسترش احتمالی این پروتکل در آینده به زیرساخت‌ها فعلی آن آسیبی نرساند و آن‌ها را تغییر ندهد. برای مثال در حال حاضر [[پروتکل WebDAV]] هفت روش جدید درخواست را تعریف کرده استکرده‌است.<ref name="rfc_5789">{{یادکرد وب |نویسنده = |نشانی= http://tools.ietf.org/html/rfc5789|عنوان= RFC 5789 | ناشر = [[نیروی ضربت مهندسی اینترنت]]| تاریخ= مارچ ۲۰۱۰}}</ref>
 
; '''GET''': درخواست نمایش منبعِ درخواست‌داده‌شده را می‌دهد. (این منبع معمولاً یک [[پرونده (رایانه)|فایل یا پرونده]] می‌باشد.) این روش فقط اطلاعات را از سرور دریافت می‌کند و نباید هیچ تاثیریتأثیری بر روی منابع سرور بگذارد.
; '''HEAD''': این روش دقیقاً مانند روش GET عمل می‌کند ''با این تفاوت که بدنه پاسخ را نمی‌خواهد''. از این روش برای به‌دست‌آوردن [[فراداده|فراداده‌های]] موجود در سرآیند {{به انگلیسی|Header}} استفاده می‌شود. یکی از استفاده‌های رایج این نوع درخواست، بررسی تغییر یافتن یک منبع است.
; '''POST''': در این روش به همراه بستهٔ درخواست اطلاعاتی نیز فرستاده می‌شود. سرور با توجه به [[نشانی وب|نشانی وب (URL)]] درخواست شده و اطلاعات ارسال شده، منبع مورد نظر را در بستهٔ پاسخ برمی‌گرداند. این اطلاعات ارسالی می‌تواند نامِ‌کاربری و کلمهٔ‌عبور، یک نظر بر روی یک مطلب یا اطلاعات هر فرم دیگری که توسط کاربر وارد شده است، باشد.<ref name="rfc_2616"/><sup>[بخش ۹٫۵]</sup>
 
=== وضعیت جلسه ===
پروتکل انتقال ابرمتن یک پروتکل Stateless می‌باشد. بدین معنی که سرور در یک جلسه هیچ ردی از کاربر ذخیره نمی‌کند. به طوربه‌طور مثال، ''سرور وب هیچگاه نمی‌تواند به یاد بیاورد که شما در این وبسایت لاگین کرده‌اید یا نه!'' اما به دلیل نیاز شدید نرم‌افزار هاینرم‌افزارهای تحت وب به ثبت وضعیت، با استفاده از تکنیک‌ها زیر این عمل انجام می‌گیرد:
* [[کوکی اچ‌تی‌تی‌پی|کوکی]]
* استفاده از متغیر هایمتغیرهای پنهان در فرم‌های وب
* استفاده از متغیر هایمتغیرهای موجود در رشتهٔ درخواست. مانند: index.php?session_id=some_unique_id
 
== کدهای وضعیت ==
از نسخهٔ ۱٫۰ پروتکل انتقال ابرمتن به بعد، خطِ اولِ پاسخِ سرور تحت عنوان ''خط وضعیت'' شناخته شده استشده‌است. این خط حاوی یک کد عددی (مانند ۴۰۴) که به عنوان ''کد وضعیت'' شناخته می‌شود و یک پیام متنی (مانند "یافت نشد" یا "Not Found") که با عنوان ''علت وضعیت'' شناخته می‌شود، می‌باشد. نحوهٔ برخورد [[عامل کاربر]] با پاسخ، بستگی کامل به کد وضعیت و فیلدهای سرآیند بستهٔ پاسخ دارد. با این حال استفاده از کدهای سفارشی (که در پروتکل اصلی موجود نیستند) نیز بلامانع می‌باشد. زیرا عوامل کاربر در برخورد با کدهای تعریف نشده، از رقم اول عدد آن‌ها برای شناسایی نوع کلی کد استفاده می‌کنند.<ref name="rfc_2616"/><sup>[بخش ۶٫۱]</sup>
 
کدهای وضعیت پروتکل انتقال ابرمتن به ۵ دستهٔ کلی تقسیم می‌شوند:
* کدهای 5xx یا خطای سرور: این کدها با عدد ۵ آغاز می‌شوند. با این مفهوم که «''سرور در انجام عملیات مربوط به یک بستهٔ درخواستِ ظاهراً صحیح، ناموفق بوده و با خطا مواجه شده است''».
 
''علت وضعیت'' هایی‌هایی که در متن تعریف پروتکل آمده‌اند پیشنهادی بوده و می‌توانند با متون دیگر، به صلاحِ دید [[توسعه دهنده]]، تغییر پیدا کنند. این عبارت می‌تواند توسط [[عامل کاربر]] به عنوان توضیحات اضافی به کاربر نمایش داده شود.
 
== مثال ==
در زیر مثالی از یک [[#جلسه|جلسه]] بین یک کلاینت HTTP و یک سرور HTTP که بر روی www.wikipedia.com قرار دارد، ارائه شده استشده‌است.
=== درخواست کلاینت ===
{{چپ‌چین}}
۱۳۳٬۲۴۲

ویرایش