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 تعنى وجود خطأ من جانب السيرفر
مثال على 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
- 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
بالتوفيق ان شاء الله.











13 مارس, 2010 في الساعة 5:30 م
كلام جميل , موضوع فيه كمية معلومات فخمه
وفى إنتظار المزيد
13 مارس, 2010 في الساعة 5:44 م
منور ياأشرف
13 مارس, 2010 في الساعة 8:20 م
بصراحه موضوع البرتوكول والشبكات انا احب اعرف فيها المعلومات اللى تفيدنى
ماحبش اتعمق فيها اوى لانى بكره الكلام وللاسف انا ماشوفتش الحاجات دى عملى
وبما انى فى هندسه حاسبات ونظم فده فرع اكيد يهمنى
وبجد معلوما خفيفه جدا يابشمهندس
وياريت تبقى على الرتم ده على طول
جزاك الله خيراً
13 مارس, 2010 في الساعة 9:54 م
شكرا يابشمهندسة,
بالنسبة للعملى فهو فى الشبكات اصعب شوى عن البرمجة,
البرمجة اسهل لأن الواحد بيشوف قدامه نتيجة فى نفس الوقت ,
بالنسبة لـ http ممكن عن طريق التلنت نكتب HTTP , او فى برنامج
اسمه netcat.
بمعنى انى اتصل بويب سيرفر و أكلمه كأنى متصفح (وانا اللى بكتب http بإيدى)
و أعتقد ده شئ ممتع جداا
شكرا لحضرتك ,
و ان شاء الله الموضيع تبقى بالرتم ده.
13 مارس, 2010 في الساعة 11:08 م
مبدع يا فؤاااااااد
13 مارس, 2010 في الساعة 11:27 م
Thanks Gawish
14 مارس, 2010 في الساعة 7:01 ص
جزاكم الله خيرا علي المعلومات القيمة دي
ربنا يوفق حضرتك ويجعله في ميزان حسناتك ان شاء الله
في انتظار المزيد
14 مارس, 2010 في الساعة 7:13 ص
رااااااااائع جدا ياباشمهندس
معلومات جميلة جداااااا وفى انتظار المزيد ان شاء الله
جزاكم الله خيرا
14 مارس, 2010 في الساعة 3:40 م
@ زهرة الاسلام , @ M.G :
شكرا لحضراتكم,
جزاكم الله خيرا.
16 مارس, 2010 في الساعة 4:29 م
Nice Technical Story ,hope more info about more technologies
16 مارس, 2010 في الساعة 8:24 م
You are welcome
27 مايو, 2010 في الساعة 11:28 ص
جميل جدا الشرح
جزاءك الله خيرا
19 يوليو, 2010 في الساعة 2:17 ص
شكراا على
و نورت المدونة