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 در مرورگر ، می بایست به ارتباط ایجاد شده توسط سرویس گیرنده خاتمه داده شود
آشنائی با پروتکل 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: www.google.ca |
به سرویس دهنده وب ، نوع نرم افزار سرویس گیرنده ( در این مورد خاص Mozilla version 5.0 ) و نوع سیستم عامل نصب شده بر روی کامپیوتر ( در این مورد خاص Windows version NT 5.1 و یا همان ویندوز XP ) اعلام می گردد. | User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; |
نوع character set استفاده شده به سرویس دهنده اعلام می گردد ( در این مورد خاص از en:us و نسخه شماره 10 . 7 . 1 استفاده شده است ) . | en-US; rv: 1.7.10) |
نام مرورگر استفاده شده توسط سرویس گیرنده به سرویس دهنده وب اعلام می گردد ( در این مورد خاص از مرورگر FireFox استفاده شده است ) . | Gecko/20050716 Firefox/1.0.6 |
سرویس گیرنده به سرویس دهنده وب فرمت اطلاعاتی را که می تواند دریافت نماید ، اعلام می نماید ( در این مورد خاص هم برای متن و هم برای application از فرمت xml استفاده می گردد ) . | Accept: text/xml, application/xml, application/xhtml+xml |
سرویس گیرنده به سرویس دهنده نوع فرمت متن دریافتی را اعلام می نماید ( در این مورد خاص 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: ISO-8859-1, utf-8; q=0.7, *;q=0/7 |
به سرویس دهنده وب مدت زمان نگهداری session اعلام می گردد ( در این مورد خاص 300 ثانیه ) . | Keep-Alive: 300 Connection: keep-alive |
cookie و مقدار مربوطه به آن اعلام می گردد. کوکی یک متن اسکی فلت می باشد که اطلاعات متفاوتی را در خود نگهداری می نماید . | Cookie: PREF=ID=01a0822454acb293: LD=en:TM=1121638094�.. |
User agent نوع مرورگر و سیستم عامل سرویس گیرنده را مشخص می نماید و این موضوع می تواند مواد اولیه لازم برای تدارک برخی حملات توسط مهاجمان را تامین نماید