معرفی و بررسی و آشنایی با پروتکل HTTP – قسمت اول

قبل از شروع این مجموعه آموزشی، خوبه که یک سری اطلاعات پایه در زمینه های ، مفاهیم وب، مرورگرهای اینترنت، وب سرورها، و همچنین نرم افزار های سمت سرور و کاربر داشته باشیم.

مطالب این مقاله بر اساس خصوصیات RFC-2616 می باشد که به پروتکل HTTP/1.1 اشاره دارد.
تفاوت عمده بین HTTP 1.0 و HTTP1.1 در این است که HTTP1.0 برای هر یک از پروسه های درخواست و پاسخ (Request/Responsee) یک ارتباط جدید ایجاد می کند، در صورتی که در HTTP1.1 برای مبادلات یک یا چندین درخواست و پاسخ از یک ارتباط استفاده می کند و ارتباط جدیدی ایجاد نمی کند.

آخرین لایه از بین هفت لایه OSI لایه Application Layer می باشد، نکته ای که در مورد این لایه وجود دارد این است که این لایه بر خلاف اسمی که دارد هیچ گونه ارتباطی با نرم افزار های کاربردی ندارد، و تنها یک تشابه اسمی می باشد. در واقع این لایه محیطی را ایجاد میکند که نرم افزرا های کاربردی بتوانند با استفاده از آن با شبکه ارتباط برقرار کنند.
HTTP در این لایه مستقر است و از آن استفاده می کند، به طور کلی ، وظیفه و کاربرد HTTP توزیع و اشتراک اطلاعاتی ک به صورت ابر رسانه هستند می باشد.
ابر رسانه در واقع ، گسترش یافته ی ابر متن می باشد. یکسری اطلاعات معمولی غیر خطی شامل تصاویر، صدا، ویدئو ، متن ساده و ابر لینک ها می باشد.
HTTP پایه و اساسی برای ارتباط با صفحه ی جهان گستر(World Wide Web) می باشد.

HTTP یک پروتکل کاملا عمومی و مستقل است و شما می توانید از آن برای اهداف و مقاصد بسیار زیادی به غیر از وب نیز استفاده کنید ، علاوه بر این شما ازextension ها یا متعلقات این پروتکل مثل Request Method ها ( روش های درخواست) ، کدهای خطا یا Error Code ها و همچنین Header ها یا سرآیند هایی که در بسته های اطلاعاتی این پروتکل وجود دارد نیز می توانید استفاده کنید . برای مثال شما می توانید از طریق HTTP Header یک وب سایت، به نوع تکنولوژی مورد استفاده در آن پی ببرید.
مبنا و معماری پروتکل HTTP همچون پروتکل TCP/IP می باشد.HTTP سرویسی است که داده هایی همچون صفحات HTMLL ، تصاویر ، کوئری ها و… را برا روی صفحه ی جهان گستر (World Wide Web ) سرویس دهی می کند.
HTTP توانایی استفاده از پورت های مختلف را دارا می باشد، با این حال، پورت پیش فرضی که از آن استفاده می کند، پورت ۸۰ می باشد. یک راه استاندارد برای ارتباط کامپیوتر ها با یکدیگر استفاده از پورت HTTP می باشد.
ویژگی خاصی که HTTP دارد این است که، پس از دریافت درخواست از سمت Client بررسی می کند که چگونه این درخواست را قالب بندی وبه سمت Serverارسال کند، و همچنین نحوه ی پاسخ Server به در خواست Client را نیز مشخص می کند.

ویژگی های عمومی
سه ویژگی که باعث شده HTTP در عین سادگی قدرتمند باشد عبارت است از:
بدون اتصال بودن(Connectionless)
مستقل بودن(Independent)
بدون وضعیت بودن(Statelesss)

بدون اتصال بودن(Connectionless)
Client به وسیله ی مرورگر یک سرویس HTTP درخواست می کند ، Client به server وصل نیست، پس، منتظر پاسخ می ماند. Server درخواست Client را میبیند و پردازش می کند و برای ارسال پاسخ، دوباره یک ارتباط جدید با Client برقرار می کند.
مستقل بودن(Independent)
HTTP یک رسانه ی مستقل است، HTTP بر اساس نوع داده ای محتویات ارسالی توسط Client و همچنین نوع داده ای محتویاتی کهServerr به Client پاسخ میدهد، یک MIME مناسب درخواست میدهد، این بدان معناست که HTTP میتواند هر نوع داده ای که توسط Client و Server درخواست می شود، بدون هیچ مشکلی فراهم کند و محدود به داده های خاصی نمی باشد، پس کاملا مستقل است.
بدون وضعیت بودن(Stateless)
همان طور ک گفتیم HTTP بدون اتصال می باشد. Server و کاربر Client هر کدام تنها زمانی که آن دو با هم در ارتباط و تعامل هستند از یکدیگر با خبرند. بعد از آن هر دو آن ها، هر چیزی که بینشان بوده فراموش می کنند. با توجه به ماهیت این نوع پروتکل، نه Client و نه مرورگر نمی توانند اطلاعات بین درخواست های یک صفحه ی وب را نگه داری کنند.به همین دلیل است که میگوییم HTTP بدون وضعیت می باشد.

ساختار کلی

شکل زیر نموداری از ساختار کلی یک برنامه تحت وب و جایگاه HTTP در آن را به تصویر کشیده است:

پروتکل HTTP یک پروتکل درخواست و پاسخ می باشد که تحت معماری Client / Server ، بر روی مرورگرهای وب، ربات ها و موتور های جستجو و ..، پیاده سازی شده است، Clients عملیات های مر بوط به سمت کاربر و Web Servers عملیات مربوط به سمت سرور را در سرویس HTTP بر عهده دارند.

کاربر(Client)
در سرویس HTTP Client از طریق یک متد یا روش درخواست، درخواستی را به Server ارسال می کند، آدرس و نسخه ی پروتکل(Ipv6/Ipv4) و همچنین اصلاح محتویات پیام درخواستی ، اطلاعات کاربر و صحت بدنه و محتویات، به وسیله ی MIME بررسی می شود،
سرور(Server)
پاسخ های سرور در سرویس HTTP ، با یک خط وضعیت که شامل ورژن پروتکل پیام(Ipv6/Ipv4) موفقیت یا عدم موفقیت ارسال پیام که با یکسری کدهای خطا مشخص می شود، اطلاعات خاص مانند اطلاعات سرور و محتویات مجاز در داخل بدنه ی پیام تشریح می شود که همه ی این ها به وسیله ی استاندارد MIMEبررسی می شود.
در ادامه می خواهیم چند تا از مهم ترین پارامتر های HTTP و ساختار دستوری و راه های استفاده از آن ها مانند فرمت داده ها، فرمت آدرس ها و … را در هر ارتباط بیان کنیم. این اطلاعات به شما این امکان را می دهد که بتوانید، با ساختار و روش درخواست و پاسخ، پیام ها و اطلاعاتی که به وسیله ی HTTP ارسال و دریافت می کنید، بیشتر آشنا شوید. همچنین با برنامه ها و پروسه هایی که در روند ارسال و درخواست نقش دارند نیز بیشتر آشنا می شوید.
ورژن HTTP Version) HTTP)
HTTP از یک فرمول عددی برای نشان دادن ورژن پروتکل خود استفاده می کند، این روند یا فرمول بدین شکل می باشد که عدد بزرگتر یا Major با یک “.” از یک عدد کوچک تر یا Minor جدا می شود. ورژن پیام و اطلاعات HTTP با فیلدی تحت عنوان HTTP-Version در همان ابتدای ارسال مشخص می شود. ساختار کلی ورژن عددی HTTP به شکل زیر می باشد.

HTTP-Version=   “HTTP” “/” 1*DIGIT “.” 1*DIGIT

به عنوان مثال
HTTP/1.0
یا
HTTP/1.1
 
 

معرفی منابع یکسان(Uniform Resource Identifiers)

URI) Uniform Resource Identifiers) ، ساختار و فرمت بسیار ساده ای دارد، به طور مثال، حساس به متن نیست بدین معنا که نسبت به حروف کوچک و بزرگ حساس نیست و فرقی نمی کند که آدرس وب سایت یا وب سرویس شما با حروف کوچک ثبت شده باشد یا حروف بزرگ ، به مضمون و محتوای رشته ای که وارد می کنیم حساس نیست و… .
ازدیگر خصوصیات URI ، شناسایی و پیدا کردن یک منبع می باشد. مانند وب سرویس ها و وب سایت ها و … .
یک ساختار کلی از URI در اینجا ذکر شده:

URI = “http:” “//” host [ “:” port ] [ abs_path [ “?” query ]]

در این ساختار، اگر به جای Port مقداری تعریف نشده باشد و یا یک مقدار ناشناخته تعریف شده باشد، URI به صورت پیش فرض مقدار ۸۰ را قرار می دهد. همچنین اگر به جای abs_path یک مقدار خالی و یا ناشناخته تعریف شده باشد، URI به صورت پیش فرض کاراکتر “//” را جایگزین می کند. سایر کاراکتر هایی که در ساختار بالا وجود دارند ، اگر مقداری خالی یا ناشناخته در آن ها قرا گرفته شده باشد، URI به صورت پیش فرض مقادیر % و Hex جایگزین می کند. در اینجا مثال هایی از حالت هایی که ذکر شد بیان شده است.

http://ABC.com/%7Esmith/home.html

http://ABC.com:/%7esmith/home.html

فرمت های تاریخ و زمان(Data/Time Formats)
تمامی نشانه های تاریخ و زمان در HTTP باید بر اساس تاریخ و ساعت گرینویچ نمایش داده شود (GMT) . برنامه و Application های HTTPP تنها مجاز هستند که از این سه فرمت و ساختاری که در اینجا ذکر شده استفاده کنند.

Sun, 06 Nov 1994 08:49:37 GMT
Sunday, 06-Nov-94 08:49:37 GMT
Sun Nov 6 08:49:37 1994

 

مجموعه ی کاراکترها(Character Sets)
کاراکتر هایی که کاربر انتخاب می کند، ممکن است که نامشخص و ناخوانا باشد، HTTP آن ها را به صورت مجموعه ای از کاراکتر ها نمایش می دهد. بدین شکل که چندین کاراکتر که به هم چسبیده و پشت سر هم می آیند، با استفاده از کاما از یکدیگر جدا می کند. در اینجا مثالی از این حالت آورده ایم:

US-ASCII
ISO-8859-1
ISO-8859-7

 

رمزگذاری های محتوا(Content Encoding)
قبل از اینکه محتویات و داده ها به روی شبکه فرستاده شوند، HTTP ابتدا آن ها را رمز گذاری کرده و سپس به روی شبکه ارسال می کند. برای از بین نرفتن و حفظ هویت محتوای ارسالی ، باید حتما محتویات و داداه های ارسالی رمزگذاری شوند.HTTP داده ها را به صورت فشرده شده رمز گذاری می کند.
تمامی مقادیر محتویاتی که به صورت رمز شده درآمده اند، به صورت case- insensitive می باشد. ینی حساس به حروف نیستند.
در بخش های بعدی، استفاده از محتویات کد شده، و همچنین رمز گذاری فایل های سرآیند را توضیح خواهیم داد.
در زیر ساختار های معتبری از رمزگذاری محتویات نمایش داده شده است.

Accept-encoding: gzip
Accept-encoding: compress
Accept-encoding: deflate

 

انواع رسانه (Media Types)
HTTP انواع رسانه های اینترنتی، همچون تصاویر، صدا، ویدئو، و متن را درون محتوای خود بدون هیچ محدودیتی می پذیرد، مقادیر تمامی رسانه های مختلفی کهHTTP از آن ها استفاده می کند به صورت یک کد مشخص در IAN ثبت شده است. ساختار کلی رسانه های مختلف (Media Type) به شکل زیر می باشد.

media-type     = type “/” subtype *( “;” parameter )

 

در این ساختار Type ، SubType و Parameter همگی از نوع Case-Insensitive هستند.
مثال

Accept: image/gif

علائم زبان ها (Language Tags)
HTTP از علائم زبان ها برای نشان دادن زبان محتوا و همچنین بیان زبان قابل پذیرش توسط Application استفاده می کند.
یک علامت زبان (Language Tagg) از یک یا چندین بخش تشکیل شده است .ساختار کلی یک علامت بدین ترتیب می باشد که یک علامت از زبان اصلی مانند (en) ، و همچنین یک سری علامت ک از علامت اصلی مشتق شده اند مثل (en-US) تشکیل شده اند، که علائم مشتق شده میتوانند وجود داشته باشند یا اصلا وجود نداشته باشند.

language-tag  = primary-tag *( “-” subtag )

مابین علامت ها نباید فضای خالی وجود داشته باشد، و همچنین همه ی علامت ها Case-Insensitive هستند.
مثال

en, en-US, en-cockney, i-cherokee, x-pig-latin

در این بخش ما با ساختار کلی HTTP و بعضی مفاهیم اصلی آشنا شدیم و همچنین با مبحاث HTTP Version ، URI ، Data/Time Format ، Character Sets ، Content Encoding ، Media Type و Language Tags آشنا شدیم.
در بخش های بعدی با مفهوم HTTP Messagess و اجزای آن آشنا خواهیم شد.

منبع

 

bojar
ارسال دیدگاه