HTTP Basics

پروتکل HTTP چیست ? ؟ محتوای وب بر پایه وب سرور ها اجرا می شود .وب سرور از طریق پروتکل HTTP صحبت می کند .برای همین به وب سرور ها ,HTTP server هم می گویند .وب سرور ها داده های اینترنت را ذخیره می کنند و زمانی که یک کلاینت از آنها درخواست کند به آن پاسخ می دهند .برای نمونه : مرورگر های وب یک HTTP client هستند .وب سرور ها میزبان web resource ها هستند . وب ریسورس در واقع منابع محتوای موجود در وب هستند . مثل : HTML ,Text file , JPEG image , etcوب ریسورس ها می توانند استاتیک باشند که شکل ثابت و بدون تغییری دارند مانند مواردی که در بالا عنوان شد. می توانند داینامیک باشند که بر اساس هویت یا شرایط در لحظه تغییر بکند . مثل : تصویر لایو یک دوربین, نرخ ارزها در بازار های معاملاتی و موجودی کالا ها در یک فروشگاه آنلاین…در HTTP ,هر فایلی که انتقال پیدا میکنه با دیتا فرمتی به نام MIME نشانه گذاری میشه.در بخش header یک پیام HTTP ما میتوانیم این نشانه گذاری رو ببینیم .روبروی خط content-type نوع عنصر مورد نظر قبل از (/) به صورت عام و بعد از اون به صورت خاص اومده .در تصویر بالا, ما با فایلی از گروه text و به صورت جزئی تر با یک فایل html روبرو هستیم .آدرس URI : مثل آدرس پستی برای یک محتوا در بستر وب انحصاری هستند .آدرس URL : به صورت خاص با تعریف 1 - نوع پروتکل, 2- سرور, 3- لوکال ریسورس نحوه دسترسی به اون ریسورس را مشخص میکند .آدرس URN : یک نام منحصر به فرد برای بخشی از محتواست, جدا از اینکه در کجا قرار دارد یا ازش استفاده میشه . بخش اول یک URL ,نامش scheme است که نوع پروتکل برای دسترسی به محتوا را بیان میکند .دومین بخش آدرس اینترنتی سرور است و باقی هم نام محتوا هایی هستند که در وب سرور قرار دارند. متود ها ?: پروتکل HTTP از ریکوئست های زیادی استفاده میکند که به آن HTTP ریکوئست گفته میشود . متود GET : ریسورس را از سرور به کلاینت ارسال میکند .متود PUT : داده را به سرور ارسال میکند , معمولا برای بروزرسانی یک رکورد خاص از آن استفاده میکنیم .متود Post : داده را در سرور ایجاد میکند , معمولا برای ایجاد یک رکورد خاص از آن استفاده میکنیم .متود Delete : یک ریسورس را در سرور حذف میکند .برای نمایش یک صفحه ممکن است ,چندین ریکوئست ارسال شود . مثلا اول HTML را دریافت کند بعد CSS و بعدی کد های JS باشد .کد های وضعیت و پیام ها ? :ریسپانس های HTTP با یک عدد سه رقمی وضعیت ریکوئست را مشخص میکنند .404 Code : محتوا در سرور پیدا نشد302 Code : ریدایرکت200 Code : OKپیام های HTTP به دلیل خط به خط و دنباله دار بودن بسیار ساده نوشته شده‌‌‌‌‌‌اند و خواندنش برای انسان ها راحت است .به پیام هایی که از سمت کلاینت به سرور ارسال میشوند , Request گفته میشود .به پیام هایی که از سرور به کلاینت ارسال میشوند , Response می گویند .پیام های HTTP سه قسمت اصلی دارند :۱ - بخش Start line : خط اول پیام که مشخص میکند چه کاری باید انجام شود یا وضعیت ریسپانس چگونه است .۲ - بخش Header : یک پیام میتواند صفر یا تعدادی هدر داشته باشد ,که فرمت آن به شکل Value است.در پایان هدر یک خط خالی قرار میگیرد که هدر را از بادی جدا میکند .۳ - بخش Body : یک بخش اختیاری که که بعد از خط صاف قرار دارد ,میتواند شامل انواع دیتا از جمله فرمت باینری باشد ,برخلاف بخش استارت و هدر .مدل TCP/IP ? : پروتکل HTTP یک پروتکل لایه اپلیکیشن است .اینترنت بر اساس مدل TCP/IP بنا شده است .ارتباط TCP سه چیز را فراهم میکند :1 - انتقال بدون خطا داده ها2 - انتقال به ترتیب داده ها3 - انتقال هر حجمی از داده هادر انتقال TCP , داده ها بین کلاینت و سرور منتقل میشوند بدون اینکه در مسیر گم شوند یا آسیب ببینند .قبل از اینکه ارتباطی بین کلاینت و سرور برقرار شود ,باید یک کانکشن TCP/IP به وسیله IP و Port ایجاد شود .از آنجایی که URL ها آدرس ریسورس ها هستند ,میتوانند IP سیستمی که که ریسورس موردنظر بر روی آن قرار دارد را به ما بدهد .ممکن است URL به صورت مستقیم IP عددی را دارا باشد .هم میتواند از hostname به جای IP عددی استفاده بکند .اگر در URL ,جلوی hostname یا IP پورتی نوشته نشده باشد .پورت آن به صورت پیش فرض 80 است .که پورت پروتکل HTTP است .با استفاده از ابزار های Telnet و Netcat میتوانیم به صورت مستقیم با وب سرور ارتباط برقرار کنیم .در این حالت وب سرور گمان میکند که ما یک HTTP client هستیم.پروکسی ها ? :برای اهداف امنیتی ,ادغام اپلیکیشن ها و کارایی بهتر از Proxy Server ها استفاده میشود .پروکسی ها اغلب بخشی از Firewall در نظر گرفته میشوند .آن ها بین کلاینت و سرور قرار میگیرند ,همانند یک واسطه با بررسی Request و Response ها از دسترسی و اتصالات غیرمجاز و خطرناک جلوگیری میکنند .مثلا ویروس ها را شناسایی میکنند و با فیلتر کردن از انتقال آن ها جلوگیری میکنند .مورد دیگر Web cache ها هستند که نوعی از پروکسی هستند. آن‌ها یک کپی از فایل ها یا وبسایت هایی که زیاد استفاده میشوند را در خود ذخیره میکند . این کار باعث میشود فرد سریعتر به محتوا دسترسی پیدا کند و همچنین پهنای باند اینترنت برای کار دیگری آزاد شود .در نهایت شاید به صورت عادی متوجه نشویم که اطلاعات را از سرور اصلی دریافت کرده‌ایم یا از یک کش سرور … .موارد دیگر ? :وقتی دو شبکه از پروتکل های انتقال متفاوتی استفاده میکنند ما از یک سرور واسطه که Gateway نامیده می شود استفاده میکنیم .بین دو شبکه Gateway ها اغلب کار تبدیل پروتکل ها را انجام می‌دهند . مثلا HTTP را به FTP تبدیل میکنند .تونل ها یا HTTP tunnels بدون اطلاع از محتوای داده ها, آن ها را انتقال می‌دهند .تونل ها معمولا اطلاعات و داده های غیر HTTP را به وسیله یک یا چندین ارتباط HTTP منتقل میکنند .مثلا می‌توانند اطلاعات SSL را منتقل کنند.