پروتکل HTTP چیست؟
دنيای شبكه های كامپيوتری دارای عمری چند ساله است و بسياری از كاربران ، ضرورت استفاده از شبكه را همزمان با متداول شدن اينترنت در اوايل سال 1990 دريافتند. عموميت اينترنت، رشد و گسترش شبكه های كامپيوتری را به دنبال داشته است. اينترنت نيز با سرعتی باورنكردنی رشد و امروزه شاهد ايجاد ده ها ميليون وب سايت در طی يك سال در اين عرصه می باشيم.
در اينترنت همانند ساير شبكه های كامپيوتری از پروتكل های متعدد و با اهداف مختلف استفاده می گردد. هر پروتكل از يك ساختار خاص برای ارسال و دريافت اطلاعات (بسته های اطلاعاتی ) استفاده نموده و ترافيك مختص به خود را در شبكه ايجاد می نمايد. HTTP (برگرفته از Hyper Text Transfer Protocol)، يكی از متداولترين پروتكل های لايه application است كه مسئوليت ارتباط بين سرويس گيرندگان و سرويس دهندگان وب را برعهده دارد.
از پروتکل HTTP یا Hyper Text Transfer Protocol برای ایجاد ارتباط، دریافت، و ارسال داده ها بین سرور و کلاینت استفاده می شود. این پروتکل از پروتکل TCP/IP برای بستن پلی میان سرور و کلاینت استفاده می کند. طریقه کار ارتباط کلاینت با سرور، با استفاده از پروتکل HTTP به این ترتیب است که داده ها، از طریق بسته های اطلاعاتی، بین سرور و کلاینت رد و بدل می شود. به این ترتیب که برای برای ارسال داده ای به سمت مقصد، در ابتدا، داده، به بخش های کوچکتری شکسته می شود و سپس از هر کدام به سمت مقصد و با ترتیب مشخص ارسال می شوند.
تمامی وب سايت های موجود بر روی اينترنت از پروتكل HTTP استفاده می نمايند. با اين كه پروتكل HTTP با استفاده از پروتكل های ديگری نظير IP و TCP ماموريت خود را انجام می دهد، ولی اين پروتكل HTTP است كه به عنوان زبان مشترك ارتباطی بين سرويس گيرنده و سرويس دهنده وب به رسميت شناخته شده و از آن استفاده می گردد. در واقع مرورگر وب صدای خود را با استفاده از پروتكل HTTP به گوش سرويس دهنده وب رسانده و از وی درخواست يك صفحه وب را می نمايد.
این پروتکل از Handshaking برای ارسال و دریافت داده ها استفاده می کند. در Handshaking برای شروع و پایان عملیات دریافت و ارسال بسته های اطلاعاتی بین سرور و کلاینت، سوالاتی از مقصد پرسیده می شود.
بعنوان مثال فرض کنید کلاینت A می خواهد از سرور B داده هایی را دریافت نماید. برای این منظور A در ابتدا درخواستی را به B می فرستد تا آمادگی B را برای ارسال پرسوجو نماید. در اینحالت A صبر خواهد کرد تا B جوابی را به این پرسش ارسال نماید. پس از آنکه B آمادگی را خود اعلام کرد، A پیامی را سمت B می فرستد و از او می خواهد تا داده های اطلاعاتی را بفرستد. B پیام را دریافت می کند و اطلاعات را آماده می کند و آن را به بسته های کوچکتری تقسیم می کند و توسط پروتکل Handshaking آنها را پشت سر هم و به ترتیب ارسال می کند.
به منظور انجام يك تراكنش موفقيت آميز بين سرويس گيرندگان وب (نظير مرورگرهایی نظیر Chrome, IE و …) و سرويس دهندگان وب (نظير IIS) ، به اطلاعات زيادی نياز خواهد بود . پس از handshake پروتكل TCP/IP، مرورگر اطلاعات گسترده ای را برای سرويس دهنده وب ارسال می نمايد.
لازم به ذکر است که پروتکل TCP/IP که در پروتکل HTTP مورد استفاده قرار می گیرد، امنیت داده ها و تضمین ارسال آنها را تماما بر عهده گرفته است. این پروتکل بر روی لایه هایی قرار دارد و معماری این پروتکل بصورت چند لایه است.
داده مربوط به پروتكل لايه 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 نوع مرورگر و سيستم عامل سرويس گيرنده را مشخص می نمايد و اين موضوع می تواند مواد اوليه لازم برای تدارك برخی حملات توسط مهاجمان را تامين نمايد .