ویرگول
ورودثبت نام
Mahdi Karamzadegan
Mahdi KaramzadeganInterested in teaching, web app security and network
Mahdi Karamzadegan
Mahdi Karamzadegan
خواندن ۵ دقیقه·۲ سال پیش

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 را منتقل کنند.


httpشبکهتکنولوژیاینترنتاپلیکیشن
۱
۳
Mahdi Karamzadegan
Mahdi Karamzadegan
Interested in teaching, web app security and network
شاید از این پست‌ها خوشتان بیاید