ما هو برتوكول HTTP ؟:
HTTP هو أختصار لـ"Hypertext Transfer Protocol" , وهذا البرتوكول الذي تستخدمه عن تصفح للأنترنت كقرأتك لهذا الموضوع , هذا البرتوكول من أكثر البرتوكولات أستخدما عند التعامل من شبكة الأنترنت العالمية أو "World Wide Web" .
ماذا سيفيدني تعلم برتوكول "HTTP" ؟ :
تعلم هذا البرتوكول سيساعدك على فهم كيفية عمل المواقع و كذلك الحصول على معلومات هامة من الموقع , كما سيسهل عليك برمجة برامج و سكريبت لتعامل مع المواقع المعتدمة على HTTP .
ماذا أحتاج لتطبيق أوامر "HTTP" ؟:
برتوكول "HTTP" يعتمد على أوامر تكتب بنص بصغية "ASCI" , أي أن الأمر سيكون مقروأ بالنسبة لك , لذا كل ما تحتاج له هو برنامج لأنشاء الأتصال و أرسال الأوامر وقد أعتمدت في شرحي للبرتوكول على الأداة "Netcat" قم بكتابة الامر كالتالي لأنشاء أتصال مع سيرفر "HTTP" على المنفذ الأفتراضي 80 :
nc example.com 80
ثم قم بكتابة الأمر كما سأوضح في الشرح (لكي تتعرف أكثر على الأداة Netcat أقرأ هذا الموضوع).
ما هو صيغة أوامر HTTP ؟ :
تقسم أوامر "HTTP" ألى طلبات "Request" التي تستخدم من قبل برنامج المتصفح لطلب الصفحات و الموارد من على السيرفر , و "response" و هو الرد من قبل السيرفر .
شرح أوامر المتصفح "Request":
الصيغة الأساسية لطلبات المتصفح تكون كالتالي :
الأمر
معلومات التحكم
<خط فارغ يخبر السيرفر بأنتهاء الأمر>
و هذا الجدول يحتوي على أوامر HTTP مع الشرح كما سأتطرق لى كيفية أستعمالها بأستخدام برنامج netcat .
الأمر
|
الشرح
|
GET
|
طلب الصفحة أو الملف الموضوح في الرابط URL
|
HEAD
|
طلب معلومات السيرفر أو ما يسمى “header”
|
POST
|
أرسال معلومات ألى السيرفر
|
PUT
|
يقوم هذا الأمر بأنشاء ملف بأسم مختار من المتصفح و أرسال البيانات أليه
|
DELETE
|
يقوم هذا الأمر بحذف الصفحة أو الملف المطلوب
|
OPTIONS
|
عرض الأوامر المسموح بها على السيرفر
|
كما يحتوي الطلب على معلومات ترسل أيضا ألى السيرفر و تسمى "Header" و هنا قائمة بالتعليمات المستخدمة في جانب المتصفح
أسم التعليمة
|
الشرح
|
Accept
|
نوع البيانات التي يستطيع المتصفح التعامل معها
|
Accept-Charset
|
نوع ترميز الحروف المقبول من المتصفح مثل “utf-8”
|
Accept-Encoding
|
ترميز البيانات المقبول من المتصفح
|
Accept-Language
|
اللغات التي يتعامل معها المتصفح القيمة الأفتراضية هي الأنجليزي
|
Authorization
|
معرف المتصفح
|
Content-Encoding
|
نوع الترميز المستخدم في الطلب
|
Content-Language
|
نوع اللغة المستخدمة في الطلب
|
Content-Length
|
طول البيانات المرسلة في الطلب
|
Content-Type
|
نوع البيانات المرسلة كمثال (html/text) أي أن نوع البيانات هو نصي لصفحة HTML
|
Date
|
التاريخ في جهازك
|
Forwarded
|
يستخدم هذا الحقل في حالة أستخدام بروكسي ويحتوي على العنوان الخاص بجهازك
|
From
|
يظهر البريد الألكتروني للمستخدم هذا الحقل لا يستخدم عادة
|
From
|
تستطيع أستخدام الحقل From أيضا للأستقبال المستند أذا تم تعديله في التاريخ المعين
|
Orig-URL
|
الموقع الذي تم تحويل المستخدم منه
|
Referer
|
هنالك شبه بينه و بين الأمر السابق و الفرق أنه يظهر الرابط الكامل
|
User-Agent
|
يظهر أصدارة المتصفح كما تحتوي على أصدارة نظام التشغيل
|
HOST
|
أسم الموقع تستخدم هذه التعليمة تستخدم هذه التعليمة لتسهيل أستضافة أكثر من موقع على سيرفر واحد
|
الأستجابة "response" من قبل السيرفر :
يكون رد السيرفر بالصيغة التالية :
(أصدارة برتوكول HTTP) (رقم الأستجابة) (شرح رقم الأستجابة)
المعلومات الخاصة بالسيرفر
<سطر خالي يخبر المتصفح بأنتهاء التعليمات >
المعلومات المطلوبة من قبل المتصفح .
و أليك مثال عملي على رد السيرفر على طلب المتصفح .
HTTP/1.1 200 OK Date: Sat, 15 Jan 2008 14:37:12 GMT Server: Microsoft-IIS/2.0 Content-Type: text/HTML Content-Length: 1245 Last-Modified: Fri, 14 Jan 2008 08:25:13 GMT
Information you requested
و هذا جدول بأرقام الأستجابة (قم بأستبدال الرمز xx بالأرقام من 1 ألى 99):
الشرح
|
رقم الأستجابة
|
تدل على أن السيرفر أرسال رسالة معلومات فقط
|
1xx
|
تدل على نجاح الأمر
|
2xx
|
تحويل المستخدم ألى رابط أخر
|
3xx
|
خطأ من جانب المتصفح
|
4xx
|
خطأ من جانب السيرفر
|
5xx
|
و هذا هو شرح المعلومات التي ترسل مع الأستجابة أو "Headers":
الشرح | أسم التعليمة |
الترميز الستخدم في البيانات المرسلة | Content-Encoding |
اللغة المستخدمة في البيانات المرسلة | Content-Language |
طول البيانات المرسلة | Content-Length |
نوع البيانات المرسلة كمثال text في حالة كانت البيانات نصية | Content-Type |
التاريخ و الوقت الذي أرسلت فيه البيانات | Date |
هذا التاريخ الذي سيقوم فيه المتصفح بحذف الصفحة من ملف التخزين الخاص به | Expires |
هذه التعليمة تستخدم في حالة أستخدام بروكسي حيث تحتوي على عنوان جهازك | Forwarded |
تحتوي على الرابط الذي سيقوم السيرفر بتوجيه متصفح له | Location |
أصدارة السيرفر و نوع النظام | Server |
الأمر "GET":
أنظر ألى المثال التالي :
GET /index.html HTTP/1.1
HOST:Example.com
<NEW LINE>
شرح الأمر :
GET: هذا الأمر يعيني جلب على المصدر المعين
index.html/:أسم الصفحة المطلوب جلبها من الموقع
HTTP/1.1: هذا هو أصدار البرتوكول 1.1
HOST:هذه التعليمة تستخدم للأخبار السيرفر عن الموقع المراد الأتصال به و تم أضافة هذه الخاصية للسماح للموقع بأستضافة أكثر من موقع واحد على نفس الأي بي (IP) .
<NEW LINE>: يخبر السطر الجديد بأن المتصفح أنتهى من كتابة الأمر .
لتجربة أي من الأوامر قم بأستخدام الأداة "NETCAT" كما في المثال التالي:
nc example.com 80
بعد ذلك قم بكتابة الأمر "GET" كما في الصيغة السابقة في مترجم الأوامر و أضغط <ENTER> مرتين .
الأمر "POST":
يستخدم الأمر "POST" لأرسال المعلومات لبرنامج على السيرفر كما يحدث في حالة تسجيل الدخول على موقع أو البحث في محرك البحث كما في المثال التالي حيث سأرسل بيانات ألى الصفحة login.asp :
POST /login.asp HTTP/1.1
HOST:www.example.com
User-agent:Mozilla/4.0
Content-Length:27
Content-type:application/octet-stream
username=abgoor&password=test
الفرق بين الأمر GET و POST هو وجود التعليمتن "Content-Length" التي تحدد طول البيانات المرسلة من قبل المتصفح و التعليمة "Content-type" التي تحدد نوع البيانات , بعد أنتهاء الأمر نفصل بينه وبين البيانات بخط فارغ
الأمر "HEAD":
هذا الأمر يستخدم لعرض معلومات السيرفر تستطيع أستخدامه كالتالي بعد الأمر "nc www.example.com 80" :
HEAD / HTTP/1.1
Host:www.example.com
سيقوم الأمر بعرض معلومات السيرفر فقط بدون أي معلومات أخرى .
الأمر "PUT":
يقوم هذا الأمر بأنشاء ملف على السيرفر و أستقبال المعلومات من قبل المتصفح و حفظها على السيرفر كما في المثال التالي :
PUT hack.txt HTTP/1.1
Host:Example.com
Content-Type:text
Content-Length:21
abgoor.blogspot.com
الأمر "DELETE":
هذا الأمر يقوم بمسح ملف على السيرفر كما يدل أسمه و لكن لا تحاول أستخدامه لأن معظم السيرفرات تقوم بتعطليه ألا في حالة خاصة فقط .
DELETE /hack.txt HTTP/1.1
Host:example.com
الأمر "OPTIONS":
يقوم هذا الأمر بعرض الأوامر المسموح بها على برنامج السيرفر كما في التالي :
OPTIONS * HTTP/1.1
HOST:example.com
سيكون رد السيرفر كالتالي حيث سيعرض الأوامر التي تستطيع تطبيقها (بعض السيرفرات تعطل أمر OPTIONS):
HTTP/1.1 200 OK
Allow:GET,POST,OPTIONS
Content-Length:0
أذا أردت أن تكتشف أذا كان السيرفر يقدم الدعم للأمر معين كالأمر "POST" تستطيع كتابة الأمر كالتالي :
OPTIONS POST HTTP/1.1
Host:example.com
في حالة أن الأمر مدعوم من قبل السيرفر ستكون الأستجابة كالتالي :
HTTP/1.1 200 OK
Allow:POST
Content-Length:0
الأمر "TRACE":
يعرض هذا الأمر عنوان البروكسي الذي يقوم بربط بينك و بين السيرفر المحتوي على الموقع تستطيع أستخدام الأمر كالتالي :
TRACE /index.html HTTP/1.1
HOST:example.com
في حالة تواجد بروكسي سيكون رد السيرفر كالتالي :
HTTP/1.1 200 OK
Content-Type:text/html
Content-Length:22
Via:proxy1.company.com
كتلاحظ التعليمة "Via" التي تحتوي على عنوان البروكسي المستخدم في ربطك بالموقع .
المصادر :
الملف الخاص ببرتوكول HTTP الأصدار 1.1
الملف الخاص ببرتوكول HTTP الأصدار 1.0
في نهاية هذا الموضوع البسيط , أسأل الله تعالى ان يكون وفقني ألى شرح برتوكول HTTP بشكل مبسط و سهل الفهم .
الله يعطيك العافيه ياصاحبي ستمتعت بالقراءة
ردحذفبس بترفلك شي مصدر باللغة العربية مستفيض بالشرح اكتر
للإسف ما بتحصل موضوع يشرح البرتوكول HTTP باللغة العربية و أذا حصلت بيكون الموضوع مختصر و ما يحتوي على شرح كامل و مفصل .
ردحذففما لك غير المصادر الأنجليزية فقط
يسلم إيديك
ردحذف:)
ردحذفتقرير مبتذل عن البروتوكول سلمت يداك حتى لو شرح قصير وبسيط لكن رائع كانطلاقة وك تنويه أنا كنت قادر اعمل wcf مع كلاينت وكل الكونفيجريشنز وماكنت عارف إنو هدول الميثودس اللي كنت عم استخدمهم هم خاصين بالبروتوكول لأن كتير أحيان من سرعة الحياة وضغط التعلم عليك بتصير تمشي ورا الهدف لتحققو وبتتجاهل تفهم الجذور وهاد الشي كتير بيعزبك ازا صار معك مشكلة بمنتصف الطريق
ردحذفشكرااا الشرح رائع
ردحذفما المقصود بالhttp1.1 features
ردحذفشكرا جزيلا
ردحذففي ميزان حسناتك
شكرا شرح جميل جدا
ردحذفوفيت و كفيت