آشنائی با پروتکل HTTP ( بخش اول )
در اینترنت همانند سایر شبکه های کامپیوتری از پروتکل های متعدد و با اهداف مختلف استفاده می گردد. هر پروتکل از یک ساختار خاص برای ارسال و دریافت اطلاعات (بسته های اطلاعاتی ) استفاده نموده و ترافیک مختص به خود را در شبکه ایجاد می نماید . HTTP ( برگرفته از Hyper Text Transfer Protocol ) ، یکی از متداولترین پروتکل های لایه application است که مسئولیت ارتباط بین سرویس گیرندگان و سرویس دهندگان وب را برعهده دارد .
در ادامه با پروتکل فوق بیشتر آشنا خواهیم شد.
پروتکل HTTP چیست ؟
دنیای شبکه های کامپیوتری دارای عمری چند ساله است و بسیاری از کاربران ، ضرورت استفاده از شبکه را همزمان با متداول شدن اینترنت در اوایل سال ۱۹۹۰ دریافتند . عمومیت اینترنت، رشد و گسترش شبکه های کامپیوتری را به دنبال داشته است . اینترنت نیز با سرعتی باورنکردنی رشد و امروزه شاهد ایجاد ده ها میلیون وب سایت در طی یک سال در این عرصه می باشیم .
تمامی وب سایت های موجود بر روی اینترنت از پروتکل HTTP استفاده می نمایند . با این که پروتکل HTTP با استفاده از پروتکل های دیگری نظیر IP و TCP ماموریت خود را انجام می دهد ، ولی این پروتکل HTTP است که به عنوان زبان مشترک ارتباطی بین سرویس گیرنده و سرویس دهنده وب به رسمیت شناخته شده و از آن استفاده می گردد . در واقع مرورگر وب صدای خود را با استفاده از پروتکل HTTP به گوش سرویس دهنده وب رسانده و از وی درخواست یک صفحه وب را می نماید.
به منظور انجام یک تراکنش موفقیت آمیز بین سرویس گیرندگان وب ( نظیر IE ) و سرویس دهندگان وب ( نظیر IIS ) ، به اطلاعات زیادی نیاز خواهد بود . پس از handshake پروتکل TCP/IP ، مرورگر اطلاعات گسترده ای را برای سرویس دهنده وب ارسال می نماید .
یک بسته اطلاعاتی نمونه در شکل زیر نشان داده شده است :
توضیحات :
داده مربوط به پروتکل لایه application ( در این مورد خاص پروتکل HTTP ) ، پس از هدر TCP/IP قرار می گیرد . جدول زیر برخی اطلاعات مبادله شده بین سرویس گیرنده و سرویس دهنده وب را نشان می دهد .
در بخش اول با جایگاه پروتکل HTTP به منظور مبادله اطلاعات بین سرویس گیرندگان و سرویس دهندگان وب اشاره و در ادامه با نوع و ماهیت اطلاعات ارسالی سرویس گیرندگان وب به منظور دریافت خدمات از سرویس دهندگان ، آشنا شدیم .
در این بخش با نوع و ماهیت اطلاعات ارسالی سرویس دهندگان وب به منظور پاسخ به درخواست سرویس گیرندگان آشنا خواهیم شد.
مرورگر وب ، صدای خود را با استفاده از پروتکل HTTP به گوش سرویس دهنده وب می رساند و از وی درخواست یک صفحه وب را می نماید.
سرویس دهنده وب علاوه بر این که با این صدا آشنا است خود نیز برای پاسخ به مرورگر وب از مجموعه قوانین آن تبعیت می کند .
پروتکل HTTP : یک معماری سرویس گیرنده و سرویس دهنده
سرویس گیرنده وب ، مقادیر خاصی را با اهداف کاملا” مشخص شده برای سرویس دهنده وب ارسال می نماید ( حصول اطمینان از وجود یک زبان مشترک برای گفتگو بین سرویس گیرنده و سرویس دهنده وب ) . سرویس دهنده پس از بررسی اطلاعات ارسالی ، آنان را تفسیر و متناسب با آن اطلاعاتی را برای سرویس گیرنده ارسال می نماید . در معماری فوق یک نرم افزار در سمت سرویس گیرنده و به عنوان یک سرویس گیرنده وب ( نظیر IE و یا Mozilla Firefox ) ایفای وظیفه می نماید و در سمت سرویس دهنده یک نرم افزار به عنوان سرویس دهنده وب ( نظیر : IIS و یا Apache ) وظایف تعریف شده خود را انجام می دهد.
سناریوی فوق مدل و یا معماری سرویس گیرنده – سرویس دهنده را در ذهن تداعی می نماید ( معماری مبتنی بر درخواست و پاسخ ) .
پاسخ سرویس دهنده
شکل زیر یک بسته اطلاعاتی HTTP از مبداء یک سرویس دهنده به مقصد یک سرویس گیرنده را نشان می دهد ( پاسخ سرویس دهنده ).
توضیحات :
جدول زیر برخی اطلاعات ارسالی توسط سرویس دهنده را نشان می دهد .
عملکرد نوع اطلاعات
به سرویس گیرنده اعلام می گردد که :
• سرویس دهنده وب از پروتکل HTTP نسخه ۱ .۱ استفاده می نماید.
• فایل درخواستی وی توسط سرویس دهنده پیدا شده است .
۲۰۰ ، یک کد وضعیت است که وضعیت پاسخ به درخواست را مشخص می نماید . HTTP/1.1 200 OK
مستند و یا فایل درخواستی سرویس گیرنده توسط یک پراکسی cache نخواهد شد و هدف آن صرفا” برای کاربر متقاضی فایل است . Cache-Control:
private
فرمت ارسال فایل و یا مستند درخواستی به سرویس گیرنده وب اعلام می شود . در این مورد خاص ، اطلاعات با فرمت text/html ارسال می گردند .
سرویس گیرنده وب دارای دانش لازم به منظور بررسی و نمایش اطلاعات با فرمت اشاره شده می باشد . Content-type:
text/html
نوع سرویس دهنده و یا نرم افزار سرویس دهنده ( سرویس دهنده وب ) مشخص می گردد .
در این مورد خاص ، سرویس دهنده وب Google نمایش داده شده است . Server:
GWS/2.1
پروتکل HTTP نسخه شماره ۱ .۱ از ارسال اطلاعات به صورت chuncked حمایت می نماید. در روش فوق ، بدنه یک پیام به منظور ارسال مجموعه ای از ماژول ها اصلاح می گردد . مسولیت مشخص کردن اندازه هر ماژول ارسالی بر عهده یکی از فیلدهای موجود در این ساختار گذاشته می شود .
در صورت ارسال معمولی اطلاعات توسط پروتکل HTTP ، از یک فیلد با نام “Content-Length” به منظور مشخص نمودن حجم داده ارسالی،استفاده می گردد . Transfer-Encoding: chunked
زمان و تاریخ سرویس دهنده وب مشخص می گردد. Date:
Sat 30 Jul 2005 14:14:50 GMT
تگ های HTML ارسالی توسط سرویس دهنده وب به مقصد سرویس گیرنده وب می باشند که توسط سرویس گیرندگان وب ( نظیر IE ) تفسیر و نمایش داده می شوند .
با استفاده از گزینه view موجود در برنامه های مرورگر ، می توان تگ های HTML یک صفحه وب را مشاهده نمود . <meta.http-equiv=”content-type”
آشنائی با پروتکل HTTP ( بخش سوم )
در بخش اول و دوم با جایگاه پروتکل HTTP به منظور مبادله اطلاعات بین سرویس گیرندگان و سرویس دهندگان وب آشنا شدیم . همچنین به این موضوع اشاره گردید که پروتکل فوق ، همانند اغلب پروتکل های لایه application ، از معماری سرویس گیرنده – سرویس دهنده استفاده می نماید .
در این بخش به بررسی برخی پتانسل های ارائه شده توسط پروتکل HTTP خواهیم پرداخت .
HTTP یک پروتکل با قابلیت های فراوان
HTTP ، پروتکلی با قابلیت های فراوان است که علیرغم برخی محدودیت ها ، دارای سابقه درخشانی در عرصه شبکه های کامپیوتری ( اینترانت ، اینترنت ) است .
HTTP پروتکلی است که امکان ارتباط بین سرویس گیرندگان و سرویس دهندگان وب را فراهم می نماید .
یک سرویس دهنده وب در واقع به عنوان یک سرویس دهنده HTTP نیز ایفای وظیفه می نماید .
زمانی که مرورگر وب درخواست یک صفحه را از سرویس دهنده وب می نماید، در واقع یک HTTP request را ارسال و سرویس دهنده وب نیز پاسخ آن را با یک HTTP response خواهد داد . یک پیام HTTP ، یک درخواست ( request ) و یا پاسخ ( response ) است که از یک ساختار خاص تبعیت می نماید .
HTTP به یک پروتکل خاص لایه حمل وابستگی نداشته و عموما” از پروتکل TCP استفاده می نماید (پورت شناخته شده ۸۰ ) .
کدهای وضعیت
همانند بسیاری از پروتکل ها ، پروتکل HTTP بر اساس یک مدل سرویس گیرنده – سرویس دهنده کار می کند . کدهای وضعیت توسط تعداد زیادی از پروتکل های لایه application استفاده می گردد و می توان آنان را به پنج گروه عمده تقسیم نمود . جدول زیر گروه های پنج گانه کدهای وضعیت را در ارتباط با پروتکل HTTP نشان می دهد .
عملکرد کد
اطلاع رسانی برای استفاده در آینده ۱XX
انجام موفقیت آمیز تراکنش ۲XX
راهنمائی مجدد ۳XX
بروز خطاء سمت سرویس گیرنده ۴XX
بروز خطاء سمت سرویس دهنده ۵XX
هر یک از پنج گروه فوق، دارای کدهای وضعیت زیر مجموعه ای می باشند که بیانگر جزئیات عملیات است . جدول زیر برخی از کدهای وضعیت هر یک از گروه های پنج گانه فوق را در ارتباط با پروتکل HTTP نشان می دهد .
عملکرد کد وضعیت
تراکنش با موفقیت انجام شده است ۲۰۰
دستور POST با موفقیت انجام شده است ۲۰۱
درخواست ارسالی دریافت گردید. ۲۰۲
منبع درخواستی در مکان های مختلفی پیدا شده است ۳۰۰
منبع درخواستی به صورت دائم منتقل شده است ۳۰۱
منبع درخواستی به صورت موقت منتقل شده است ۳۰۲
درخواست نامناسب از جانب سرویس گیرنده ۴۰۰
درخواست غیرمجاز ۴۰۱
منبع درخواستی پیدا نگردید ۴۰۴
بروز خطاء بر روی سرویس دهنده ۵۰۰
متد استفاده شده ، پیاده سازی نشده است ۵۰۱
درخواست های سرویس گیرندگان و دستورات
سرویس گیرندگان وب به منظور استفاده از خدمات سرویس دهندگان وب از مجموعه پتانسیل های ارائه شده ( دستورات ) توسط پروتکل HTTP استفاده می نمایند :
• GET : سرویس گیرنده وب درخواست یک منبع موجود بر روی سرویس دهنده وب را می نماید .
• POST : سرویس گیرنده وب اطلاعاتی را برای سرویس دهنده وب ارسال می نماید .
• PUT : سرویس گیرنده وب یک مستند جایگزین را برای سرویس دهنده وب ارسال می نماید .
• HEAD : سرویس گیرنده وب اطلاعات خاصی را در ارتباط با یک منبع موجود بر روی سرویس دهنده درخواست می نماید ( عدم نیاز به خود منبع )
• DELETE : سرویس گیرنده وب درخواست حذف یک سند موجود بر روی سرویس دهنده را می نماید .
• TRACE : سرویس گیرندگان وب ، پراکسی مربوط به خود را تعریف می نمایند . از متد فوق اغلب در موارد اشکال زدائی استفاده می گردد .
• OPTIONS : سایر پتانسیل های موجود به منظور کار بر روی یک سند توسط یک سرویس گیرنده وب درخواست می گردد .
• CONNECT : سرویس گیرنده وب به عنوان یک پراکسی به یک سرویس دهنده HTTPS متصل می گردد .
در اغلب موارد صرفا” از متد GET و در برخی موارد از HEAD استفاده می گردد ( در صورت اشکال زدائی یک برنامه وب از تمامی امکانات فوق استفاده می شود ) .
مراحل ایجاد یک تراکنش
یک سرویس گیرنده وب قبل از این که بتواند با یک سرویس دهنده وب داده ئی را مبادله نماید ، می بایست با آن ارتباط برقرار نماید . بدین منظور از پروتکل TCP/IP استفاده می گردد . همانگونه که اشاره گردید سرویس گیرنده و سرویس دهنده وب برای ارسال یک درخواست و پاسخ به آن از پروتکل HTTP استفاده نموده و ارتباط ایجاد شده بین خود را صرفا” برای یک تراکنش نگهداری می نمایند ( HTTP یک پروتکل Stateless است ) .
فرآیند ایجاد یک تراکنش بین سرویس گیرنده و سرویس دهنده وب را می توان در چهار مرحله زیر خلاصه نمود:
• مرحله اول ، برقراری ارتباط : در ابتدا می بایست یک ارتباط و یا اتصال مبتنی بر پروتکل TCP/IP بین یک سرویس دهنده و یک سرویس گیرنده وب ایجاد گردد . به منظور تشخیص نوع پروتکل استفاده شده ، برنامه ها از یک عدد منحصر بفرد با نام شماره پورت استفاده می نمایند .( پروتکل FTP از پورت ۲۱ ، پروتکل Telnet از پورت ۳۲ ، پروتکل SMTP از پورت ۲۵ ، پروتکل HTTP از پورت ۸۰ ) .
• مرحله دوم : ایحاد و یا صدور یک درخواست توسط سرویس گیرنده
• مرحله سوم : پاسخ سرویس دهنده به درخواست سرویس گیرنده
• مرحله چهارم ، خاتمه و یا توقف ارتباط : سرویس دهنده مسئولیت خاتمه ارتباط TCP با سرویس گیرنده وب را پس از پاسخ به درخواست سرویس گیرنده برعهده دارد . به منظور برخورد با مسائل غیرقابل پیش بینی ، هم سرویس گیرنده و هم سرویس دهنده می بایست قادر به مدیریت یک ارتباط باشند . مثلا” پس از فعال نمودن دکمه stop در مرورگر ، می بایست به ارتباط ایجاد شده توسط سرویس گیرنده خاتمه داده شود .