آشنائی با پروتكل HTTP
تاریخ:۱۳۹۴/۰۳/۰۳
در اينترنت همانند ساير شبكه های كامپيوتری از پروتكل های متعدد و با اهداف مختلف استفاده می گردد. هر پروتكل از يك ساختار خاص برای ارسال و دريافت اطلاعات (بسته های
اطلاعاتی ) استفاده نموده و ترافيك مختص به خود را در شبكه ايجاد می نمايد . HTTP ( برگرفته از Hyper Text Transfer Protocol ) ، يكی از متداولترين پروتكل های لايه
application است كه مسئوليت ارتباط بين سرويس گيرندگان و سرويس دهندگان وب را برعهده دارد .
پروتكل HTTP چيست ؟
دنيای شبكه های كامپيوتری دارای عمری چند ساله است و بسياری از كاربران ، ضرورت استفاده از شبكه را همزمان با متداول شدن اينترنت در اوايل سال 1990 دريافتند .
عموميت اينترنت، رشد و گسترش شبكه های كامپيوتری را به دنبال داشته است . اينترنت نيز با سرعتی باورنكردنی رشد و امروزه شاهد ايجاد ده ها ميليون وب سايت در طی يك سال
در اين عرصه می باشيم .
تمامی وب سايت های موجود بر روی اينترنت از پروتكل HTTP استفاده می نمايند . با اين كه پروتكل HTTP با استفاده از پروتكل های ديگری نظير IP و TCP ماموريت خود را
انجام می دهد ، ولی اين پروتكل HTTP است كه به عنوان زبان مشترك ارتباطی بين سرويس گيرنده و سرويس دهنده وب به رسميت شناخته شده و از آن استفاده می گردد .
در واقع مرورگر وب صدای خود را با استفاده از پروتكل HTTP به گوش سرويس دهنده وب رسانده و از وی درخواست يك صفحه وب را می نمايد.
به منظور انجام يك تراكنش موفقيت آميز بين سرويس گيرندگان وب ( نظير IE ) و سرويس دهندگان وب ( نظير IIS ) ، به اطلاعات زيادی نياز خواهد بود .
پس از handshake پروتكل TCP/IP ، مرورگر اطلاعات گسترده ای را برای سرويس دهنده وب ارسال می نمايد .
توضيحات :
داده مربوط به پروتكل لايه application ( در اين مورد خاص پروتكل HTTP ) ، پس از هدر TCP/IP قرار می گيرد . جدول زير برخی اطلاعات مبادله شده بين سرويس گيرنده
و سرويس دهنده وب را نشان می دهد .
عملكرد |
نوع اطلاعات |
سرويس گيرنده وب يك درخواست GET را برای سرويس دهنده وب ارسال و از وی درخواست اطلاعاتی را با استفاده از پروتكل HTTP 1.1 می نمايد. |
GET /HTTP/1.1 |
وب سايتی است كه سرويس گيرنده قصد ارتباط با آن را دارد . |
Host: |
به سرويس دهنده وب ، نوع نرم افزار سرويس گيرنده ( در اين مورد خاص Mozilla version 5.0 ) و نوع سيستم عامل نصب شده بر روی كامپيوتر ( در اين مورد خاص Windows version NT 5.1 و يا همان ويندوز XP ) اعلام می گردد. |
User-agent: |
نوع character set استفاده شده به سرويس دهنده اعلام می گردد ( در اين مورد خاص از en:us و نسخه شماره 10 . 7 . 1 استفاده شده است ) . |
en-US; rv: 1.7.10) |
نام مرورگر استفاده شده توسط سرويس گيرنده به سرويس دهنده وب اعلام می گردد ( در اين مورد خاص از مرورگر FireFox استفاده شده است ) . |
Gecko/20050716 Firefox/1.0.6 |
سرويس گيرنده به سرويس دهنده وب فرمت اطلاعاتی را كه می تواند دريافت نمايد ، اعلام می نمايد ( در اين مورد خاص هم برای متن و هم برای application از فرمت xml استفاده می گردد ) . |
Accept: |
سرويس گيرنده به سرويس دهنده نوع فرمت متن دريافتی را اعلام می نمايد ( در اين مورد خاص html و يا plain text ) . |
text/html; q=0.9, text/plain; q=0.8, image/png, */*;q=0.5 |
ليست character set كه سرويس گيرنده وب قادر به فهم آنان است، اعلام می گردد ( در اين مورد خاص ISO-8859 , و يا utf-8 ) . |
Accept-Charset: |
به سرويس دهنده وب مدت زمان نگهداری session اعلام می گردد ( در اين مورد خاص 300 ثانيه ) . |
Keep-Alive: |
cookie و مقدار مربوطه به آن اعلام می گردد. كوكی يك متن اسكی فلت می باشد كه اطلاعات متفاوتی را در خود نگهداری می نمايد . |
Cookie: PREF=ID=01a0822454acb293: LD=en:TM=1121638094�.. |
در قسمت نخست با جايگاه پروتكل HTTP به منظور مبادله اطلاعات بين سرويس گيرندگان و سرويس دهندگان وب اشاره و در ادامه با نوع و ماهيت اطلاعات ارسالی سرويس گيرندگان
وب به منظور دريافت خدمات از سرويس دهندگان ، آشنا شديم .
در اين بخش با نوع و ماهيت اطلاعات ارسالی سرويس دهندگان وب به منظور پاسخ به درخواست سرويس گيرندگان آشنا خواهيم شد.
مرورگر وب ، صدای خود را با استفاده از پروتكل HTTP به گوش سرويس دهنده وب می رساند و از وی درخواست يك صفحه وب را می نمايد. |
پروتكل HTTP : يك معماری سرويس گيرنده و سرويس دهنده
سرويس گيرنده وب ، مقادير خاصی را با اهداف كاملا" مشخص شده برای سرويس دهنده وب ارسال می نمايد ( حصول اطمينان از وجود يك زبان مشترك برای گفتگو بين سرويس گيرنده
و سرويس دهنده وب ) . سرويس دهنده پس از بررسی اطلاعات ارسالی ، آنان را تفسير و متناسب با آن اطلاعاتی را برای سرويس گيرنده ارسال می نمايد . در معماری فوق يك نرم افزار
در سمت سرويس گيرنده و به عنوان يك سرويس گيرنده وب ( نظير IE و يا Mozilla Firefox ) ايفای وظيفه می نمايد و در سمت سرويس دهنده يك نرم افزار به عنوان سرويس دهنده
وب ( نظير : IIS و يا Apache ) وظايف تعريف شده خود را انجام می دهد.
سناريوی فوق مدل و يا معماری سرويس گيرنده - سرويس دهنده را در ذهن تداعی می نمايد ( معماری مبتنی بر درخواست و پاسخ ) .
HTTP يك پروتكل با قابليت های فراوان
HTTP ، پروتكلی با قابليت های فراوان است كه عليرغم برخی محدوديت ها ، دارای سابقه درخشانی در عرصه شبكه های كامپيوتری ( اينترانت ، اينترنت ) است .
HTTP پروتكلی است كه امكان ارتباط بين سرويس گيرندگان و سرويس دهندگان وب را فراهم می نمايد . |
زمانی كه مرورگر وب درخواست يك صفحه را از سرويس دهنده وب می نمايد، در واقع يك HTTP request را ارسال و سرويس دهنده وب نيز پاسخ آن را با يك HTTP response
خواهد داد . يك پيام HTTP ، يك درخواست ( request ) و يا پاسخ ( response ) است كه از يك ساختار خاص تبعيت می نمايد .
HTTP به يك پروتكل خاص لايه حمل وابستگی نداشته و عموما" از پروتكل TCP استفاده می نمايد (پورت شناخته شده 80 ) .
كدهای وضعيت
همانند بسياری از پروتكل ها ، پروتكل HTTP بر اساس يك مدل سرويس گيرنده - سرويس دهنده كار می كند . كدهای وضعيت توسط تعداد زيادی از پروتكل های لايه application
استفاده می گردد و می توان آنان را به پنج گروه عمده تقسيم نمود . جدول زير گروه های پنج گانه كدهای وضعيت را در ارتباط با پروتكل HTTP نشان می دهد .
عملكرد |
كد |
اطلاع رسانی برای استفاده در آينده |
1XX |
انجام موفقيت آميز تراكنش |
2XX |
راهنمائی مجدد |
3XX |
بروز خطاء سمت سرويس گيرنده |
4XX |
بروز خطاء سمت سرويس دهنده |
5XX |
هر يك از پنج گروه فوق، دارای كدهای وضعيت زير مجموعه ای می باشند كه بيانگر جزئيات عمليات است . جدول زير برخی از كدهای وضعيت هر يك از گروه های پنج گانه فوق را
در ارتباط با پروتكل HTTP نشان می دهد .
عملكرد |
كد وضعيت |
تراكنش با موفقيت انجام شده است |
200 |
دستور POST با موفقيت انجام شده است |
201 |
درخواست ارسالی دريافت گرديد. |
202 |
منبع درخواستی در مكان های مختلفی پيدا شده است |
300 |
منبع درخواستی به صورت دائم منتقل شده است |
301 |
منبع درخواستی به صورت موقت منتقل شده است |
302 |
درخواست نامناسب از جانب سرويس گيرنده |
400 |
درخواست غيرمجاز |
401 |
منبع درخواستی پيدا نگرديد |
404 |
بروز خطاء بر روی سرويس دهنده |
500 |
متد استفاده شده ، پياده سازی نشده است |
501 |
درخواست های سرويس گيرندگان و دستورات
سرويس گيرندگان وب به منظور استفاده از خدمات سرويس دهندگان وب از مجموعه پتانسيل های ارائه شده ( دستورات ) توسط پروتكل HTTP استفاده می نمايند :
- GET : سرويس گيرنده وب درخواست يك منبع موجود بر روی سرويس دهنده وب را می نمايد .
- POST : سرويس گيرنده وب اطلاعاتی را برای سرويس دهنده وب ارسال می نمايد .
- PUT : سرويس گيرنده وب يك مستند جايگزين را برای سرويس دهنده وب ارسال می نمايد .
- HEAD : سرويس گيرنده وب اطلاعات خاصی را در ارتباط با يك منبع موجود بر روی سرويس دهنده درخواست می نمايد ( عدم نياز به خود منبع )
- DELETE : سرويس گيرنده وب درخواست حذف يك سند موجود بر روی سرويس دهنده را می نمايد .
- TRACE : سرويس گيرندگان وب ، پراكسی مربوط به خود را تعريف می نمايند . از متد فوق اغلب در موارد اشكال زدائی استفاده می گردد .
- OPTIONS : ساير پتانسيل های موجود به منظور كار بر روی يك سند توسط يك سرويس گيرنده وب درخواست می گردد .
- CONNECT : سرويس گيرنده وب به عنوان يك پراكسی به يك سرويس دهنده HTTPS متصل می گردد .
در اغلب موارد صرفا" از متد GET و در برخی موارد از HEAD استفاده می گردد ( در صورت اشكال زدائی يك برنامه وب از تمامی امكانات فوق استفاده می شود ) .
مراحل ايجاد يك تراكنش
يك سرويس گيرنده وب قبل از اين كه بتواند با يك سرويس دهنده وب داده ئی را مبادله نمايد ، می بايست با آن ارتباط برقرار نمايد . بدين منظور از پروتكل TCP/IP استفاده می گردد .
همانگونه كه اشاره گرديد سرويس گيرنده و سرويس دهنده وب برای ارسال يك درخواست و پاسخ به آن از پروتكل HTTP استفاده نموده و ارتباط ايجاد شده بين خود را صرفا" برای
يك تراكنش نگهداری می نمايند ( HTTP يك پروتكل Stateless است ) .
فرآيند ايجاد يك تراكنش بين سرويس گيرنده و سرويس دهنده وب را می توان در چهار مرحله زير خلاصه نمود:
- مرحله اول ، برقراری ارتباط : در ابتدا می بايست يك ارتباط و يا اتصال مبتنی بر پروتكل TCP/IP بين يك سرويس دهنده و يك سرويس گيرنده وب ايجاد گردد . به منظور تشخيص نوع پروتكل استفاده شده ، برنامه ها از يك عدد منحصر بفرد با نام شماره پورت استفاده می نمايند .( پروتكل FTP از پورت 21 ، پروتكل Telnet از پورت 32 ، پروتكل SMTP از پورت 25 ، پروتكل HTTP از پورت 80 ) .
- مرحله دوم : ايحاد و يا صدور يك درخواست توسط سرويس گيرنده
- مرحله سوم : پاسخ سرويس دهنده به درخواست سرويس گيرنده
- مرحله چهارم ، خاتمه و يا توقف ارتباط : سرويس دهنده مسئوليت خاتمه ارتباط TCP با سرويس گيرنده وب را پس از پاسخ به درخواست سرويس گيرنده برعهده دارد . به منظور برخورد با مسائل غيرقابل پيش بينی ، هم سرويس گيرنده و هم سرويس دهنده می بايست قادر به مديريت يك ارتباط باشند . مثلا" پس از فعال نمودن دكمه stop در مرورگر ، می بايست به ارتباط ايجاد شده توسط سرويس گيرنده خاتمه داده شود .