13 مارس, 2010HTTP Protocol

السلام عليكم,

اليوم سأتحدث شئ عظيم جداا ,  شئ عزيز إلى قلبى.
سأتحدث عن حبى و إعتزازى , بالطبع ليست غسالة كريازى :)
و انما البروتوكول الرائع
HTTP أو Hypertext Transfer Protocol



كانت بداية ظهور برتوكول HTTP لأول مرة عندما نجح Tim Berners-Lee (مخترع WWW) فى انشاء اتصال بين HTTP Client و HTTP Server من خلال الانترنت.

يعمل HTTP بطريقة Client/Server  فمثلا المتصفح يسمى HTTP Client  و هو الذى يقوم بإرسال الطلبات requests  إلى السيرفر HTTP Server  و الذى بدوره يقوم بإرسال الرد response  إلى المتصفح.


النسخة الحالية من بروتوكول HTTP  هى HTTP/1.1 و التى تم الإعلان عنها عام 1997. تعتبر هذه النسخة أسرع من النسخة الأولى HTTP/1.0 , لأنه فى النسخة القديمة HTTP/1.0 كان يتم عمل اتصال منفصل لكل جزأ من الصفحة. مثلا تطلب صفحة تحتوى على خمس صور , سيتم عمل اتصال منفصل لكل صورة !!! و بالتالى هذا يسبب بطئ فى التحميل.

أما مع برتوكول HTTP/1.1 فيتم استخدام اتصال دائم , و عن طريق استخدام تكنيك Keep-Alive يمكن استخدام نفس الاتصال لتحميل الخمس صور , وبالتالى فإن HTTP/1.1 أسرع من HTTP/1.0 .


من المسؤل عن تطوير HTTP ؟
المسؤال عن تطوير بروتوكول  HTTP مؤسستين هما رابط الشبكة العالمية  W3C - World Wide Web Consortium و اللجنة الخاصة لنظام الانترنت IETF - Internet Engineering Task Force .
قامت المؤسستين بنشر التفاصيل الخاصة ب HTTP/1.1  فى
RFC2616.



كيف يتم الاتصال بين HTTP Client و HTTP Server  ؟
عندما تقوم بطلب صفحة ما من موقع و ليكن www.eng-mmf.com

يقوم المتصفح بإنشاء طلب HTTP Request

و عندما يصل هذا الطلب إلى السيرفر يقوم بالرد على المتصفح بـ HTTP Response.


ماهى طرق عمل HTTP Request ؟
توجد ثمان طرق لإرسال الطلب من المتصفح (تحدد هذه الطرق مالذى ستفعله مع المصدر الذى تطلبه سواء كان ملف أو صورة ..
GET, HEAD, PUT, DELETE, POST, TRACE, CONNECT OPTIONS
أشهرهم على الإطلاق هى GET و التى تعنى أنك تتطلب مصدر (صفحة , صورة , ملف , …الخ) من السيرفر.


مثال على استخدام GET :

GET /icons/rss.png HTTP/1.1
Host: www.eng-mmf.com

و التى تعنى أنك تطلب الصورة الموجودة فى المسار التالى icons/rss.png و أنك تستعمل بروتوكول HTTP النسخة 1.1


السؤال هنا : لماذا تم كتابة اسم الدومين بدلا من الأى بى فى جزأ الـ Host ؟

ببساطة شديدة جداا, لأن السيرفر قد يحتوى على أكثر من موقع
و بالتالى يجب أن يقوم المتصفح بإرسال اسم الموقع الى السيرفر .

عندما يصل الطلب إلى السيرفر , يقوم السيرفر بعمل رد HTTP Response و يحتوى هذا الرد على كود الحالة Status Code

يحتوى كود الحالى على شكل رقمى و نصى للحالة مثلا :
  • 200 OK أكواد الحالة التى بتبدأ بـ 2 تعنى أنه تم استلام الطلب و تم فهمه و التعامل معه بنجاح
  • 304 Not Modifiedأكود الحالة التى تبدأ ب 3  تعنى أنه يجب على المتصفح عمل شيئا ما لإكمال الطلب
  • 404 Not Foundأكواد الحالة التى تبدأ ب 4 تعنى أنه هناك خطأ ما من جانب المتصفح
  • 500 Internal Server Errorأكواد الحالة التى تبدأ ب 5 تعنى وجود خطأ من جانب السيرفر
نفهم من السابق أنه يتم تقسيم أكواد الحالة إلى عدة أصناف بناءً على الرقم الأول على الشمال Xxx , و يمكنك مشاهدة المزيد عن أكواد الحالة و ماتعنيه من هذه الصفحة.

مثال على Server Response

HTTP/1.1 200 OK
Server: Apache/1.3.3.7 (Unix)  (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Content-Length: 438
مContent-Type: text/html; charset=UTF-8
الجدير بالذكر أن السيرفر لايمكنه معرفة معلومات سرية جدا عنك أثناء تصفح المواقع الموجودة عليه ,
مثلا يمكنه معرفه نوع المتصفح , نظام التشغيل , اللغة الافتراضية , IP  ولا يمكنه معرفه ماتحفظه على الهاردديسك.

مع ظهور HTTP/1.1 ظهرت عدة تقنيات لتحسين التعامل مع bandwidth , مثلا
  • Chunked Transfer Encoding و التى تعنى تقسيم رسائل HTTP  إلى عدة اقسام صغيرة ثم ارسالها.
  • HTTP Pipelining و التى تمكنك من ارسال أكثر من طلب لنفس السيرفر حتى قبل الحصول على الرد للطلب الأول.
  • Byte Serving امكانية طلب جزأ معين من الصفحة و ليس الصفحة بأكملها. (مفيد جدا فى حالة الملفات الكبيرة)

نظرا لأن HTTP يعتبر بروتوكول عديم الحالة Stateless  بمعنى أنه يتعامل مع كل طلب Request كأنه

طلب مستقل ولا يتعلق بأى طلب أخر . و كثير مايحتاج مبرمجوا المواقع تتبع حالة المستخدم من صفحة
لأخرى , لذا يتم استخدام احدى الطرق التالية:
  • HTTP Cookie , و قد تم التحدث عنها فى تدوينة سابقة
  • Server Side Session
  • Hiding Variables فى حالة التعامل مع HTML Forms
  • URL Encoded Parameters

كنتم مع دردشة سريعة عن بروتوكول الويب الأول HTTP , و ان شاء الله سيكون لنا حديث مفصل عن تقنيات HTTP  المهمة مثل :

HTTP Caching, HTTP Compression, HTTPS

بالتوفيق ان شاء الله.

سلام عليكم.

السلام عليكم ورحمة الله وبركاته :)

مقدمة :

بفرض انك عاوز تعمل شركة ,, و طبعا عاوز سيرفر ,, فطبعا هتشترى سيرفر و ليكن مثلا ب 100 ألف مواصفات كويسة  ,, و طبعا لازم مهندس System Engineer علشان

يتابع السيرفر . و طبعا عاوز تاخد نسخة احتاطى backup من الداتا اللى على السيرفر , فهتشترى سيرفر تانى . و طبعا السيرفر ده بيسحب كهربا كثير جداا ولازم نظام لتبريده , يعنى الفواتير هتبقى جامدة كل شهر سواء استعملت السيرفر ده طول الشهر او مثلا مرتين كل اسبوع ! , فأنت بتدفع بالشهر ده غير راتب المهندس و غيره . و طبعا لو عاوز تعمل upgrade للسيرفر هتبوظ كل اللى بنيته من الأول لانك مش عامل حسابك انه يبقى قابل للتوسيع و إلا كنت جبت سيرفر بمواصفات أعلى من الأول.

طيب , ايه رأيك بقى لو السيرفر ده اصلا موجود ع النت , و مش هتحتاج لمهندس , و لا هتحتاج لسيرفر تانى عشان الـ backups , و لا هتدفع كهربا و لا تبريد و لا مرتب للمهندس و لو عاوز تكبره فى اى وقت , سهل جداا انك توسعه , ده غير انك مش هتدفع غير بس وقت استعمالك للسيرفر , يعنى لما تشغله بس . و أنت مش هتوجع دماغك بقصة الصيانة و التطوير و الحماية , وبكده مفيش تكلفة ابتدائية , كل المطلوب منك انك تستخدم بس . ( هى دى فكرة الـ Cloud Computing )

ماهى الحوسبة السحابية  Cloud Computing

بكل بساطة , هى نقل تطبيقاتك و برامجك و حتى نظام التشغيل على الأنترنت , حيث تتم المعالجة و التشغيل على سيرفرات بعيدة  ذو مواصفات عالية جداا , و الهدف منها ابعاد مشاكل الصيانة والتطوير و الحماية عن المستخدم وبالتالى يصبح المطلوب من المستخدم فقط هو الأستخدام و تتحول برامج تكنولوجيا المعلومات من منتجات إلى خدمــات .

السحابة Cloud احدى مخططات الشبكة و التى تعبر عن الانترنت فى علم الشبكات Computer Networking

- كل المطلوب من المستخدم هو ان يستطيع الدخول على الأنترنت سواء كان من الموبايل او من الكمبيوتر او غيره .


عندما تسمع كلمة الحوسبة السحابية Cloud Computing  , يجب ان يتبادر إلى ذهنك ثلاث أشياء هامـة :

1) Software As a Service

و هى عملية تحويل منتجات الكمبيوتر من برامج و غيره إلى خدمات على الانترنت , و بالتالى لايحمل المستخدم هم الشراء و الصيانة والتطوير و انما الشئ الوحيد المطلوب منه هو أن يستخدم تلك المنتجات

2) Utility Computing

الدفع مقابل الإنتفاع من الخدمة , مثل الخدمات العامة كالكهرباء و المياة والغاز ,, ولكن هنا لاتدفع إلا عندما تنتفع و هذه ميزة أخرى

3) Virtualization

تتكون البنية التحتيه للحوسبة السحابية Cloud Computing من أنظمة وهمية يمكن الأستفادة منها فى الخدمة , فمثلا يمكنك ان تختار نظام التشغل الخاص بالسيرفر الخاص بك على السحابة , و يمكن ان تختار البرامج الخاصة بك علي النظام نفسه  و يمكنك ان تغير النظام فى اى وقت مع بقاء البرامج تعمل على النظام الجديد.

كيف تعمل الحوسبة السحابية Cloud Computing

بكل بساطة , يطلب العميل من مزود الخدمة  سيرفر مثلا و يدخل الاعدادت و يختار نظام التشغيل و ليكن مثلا لينكس ثم يحدد المساحة و غيرها من الأعدادت , وبعد ذلك يحصل على سيرفر خاص به فى السحابة , و مثلا بعد فترة احتاج مساحة اكبر , يدخل على حسابه فى السحابة و يزود المساحة و فى ثوان يحصل على مساحة اكبر .


المميزات :

1) امكانية التوسيع والتطوير , فبدلا من ان تشترى سيرفر جديد بمساحة عالية ومواصفات أعلى , كل ماعليك هو ان تدخل و تغير الاعدادت فقط و فى ثوان تحصل على ماتريد .

2) التكلفة , فلن تدفع إلا فى مقابل خدمة . لايوجد نظام دفع شهرى , فقط أدفع مقابل الخدمة .

3) عدم الإعتماد على المكان أو الأداة فيمكنك ان تدخل على السحابة من أى مكان فى العالم ( فقط تحتاج انترنت ) , و يمكن ان تستخدم اى جهاز يستطيع تصفح الأنترنت سواء أكان كمبيوتر او موبايل أو غيره , تخيل معى الأن يمكنك برمجة الجافا من على موبايلك و رؤية النتائج (فقط ارفع برامج للسحابة و دع الباقى عليها ) .

4) ابعاد المستخدم عن المشاكل التقنية او الصيانة والتطوير الخاصة بالنظام , كل ماعليك هو الأستخدام فقط.

5) الدوام لان الداتا الخاصة بك تحفظ فى اكثر من مكان على مستوى العالم و بالتالى لاخوف عليها من الضياع .

6) الأستفادة من المواصفات العالية للجهاز البعيد فى السحابة , فمثلا إذا كنت مهتم بالجرافيك والماكس و تريد عمل ريندر rendering  ستحتاج الى وقت كبير جدااا , ولكن مع السحابة فقط ارفع ملفاتك لها سواء على سيرفر واحد او اكثر و بالتالى تستفيد من الامكانيات العالية و بعد عمل ريندر يمكنك ان تحفظ الفيلم مرة اخرى عندك.


العيوب :

1) امكانية الوصولفمثلا المهندس المسئول عن السيرفر فى السحابة يمكن ان يصل إلى بياناتك ويراها .

2) مكان الداتابمعنى انك لاتعرف اين تحفظ معلومات , فمن الممكن ان تكون مثلا فى سيرفر خاص بالسحابة فى إسرائيل مثلا , وبالتالى تدخل المشاكل السياسية هنا , و لكن مع السحابة يمكنك ان تختار اماكن لحفظ الداتا و تحاول الشركات المزودة جاهدة فى هذا المجال , لتجنب هذا العيب.

3) الاعتماديةماذا يحدث لو ضاعت الملفات مثلا بسب عطل ما , من يضمن امكانية استعادتها سليمة ؟ !

4) الأمــان هل يتم تشفير البيانات فى كل محطات التخزين , ام انها تبقى غير مشفرة ؟!

5) الموثوقية من يضمن لى انه عندما امسح ملفاتى , انها ليست موجودة على السيرفر بعد المسح ؟!!

6) سرعة الأنترنتو هذه مشكلة تواجها الحوسبة السحابية مع الدول النامية.

مكونات الحوسبة السحابية Cloud Computing

1 ) Applications

وهى البرامج ووالخدمات التى يمكن ان يشغلها العميل فى السحابة  , ومع خدمة Software As a Service تم تخفيف عبئ الصيانة والتطوير عن المستخدم.

2) Client

و هو المستخدم , حيث يستخدم جهازه ( سواء كان موبايل او كمبيوتر ) للإستفادة من الخدمة , و من الممكن ان يمتلك نظام تشغيل يدعم السحابة أو يستخدم المتصفح فقط .

3) Infrastructure

و هى البنية التحتية للسحابة ,و التى تقدم كخدمة Instastructure As a Service

4) Platform

و هى المنصة التى تستخدمها فى السحابة , مثل Python Django , Java Google Web Toolkit فى جوجل.

5) Service

وهى الخدمة التى تستخدمها على السحابة و يتعلق الموضوع أكثر بمصطلح Software as a Service و هى عملية تحويل منتجات الحاسب إلى خدمـات.

أمثلة للشركــات التى تقدم الخدمة :

Google MicrosoftSunAmazon, ….  الخ

الحوسبة السحابية Cloud Computing  فى تطور مستمر , فمعظم الشركات تحاول و تطور جاهدة لتقديم خدمة افضل , فمثلا شركة مايكروسوفت أعلنت قريبا أنها ستنقل تطبيقها المشهور , مايكروسوفت أوفيس إلى السحابة (مصدر الخبر).

# فبكل بساطة يمكننا القول بأن الحوسبة السحابية مفيدة جداا فى مجال الـ Business  و خصوصا المشاريع الصغيرة Small business .

# يمكن تلخيص الموضوع بأكمله فى الفيديوهات التالية :

المصادر بتصرف منى :

http://en.wikipedia.org/wiki/Cloud_computing

http://knol.google.com/k/sam-johnston/cloud-computing/1ndljz4ypn6xa/2#

بالتوفيق ان شاء الرحمــن



© M.M.F Blog | تصميم TextNData | تعريب قياسي | يستخدم وورد بريس