recent
أخبار ساخنة

شرح HTTP ? و ماهو HTTP?! و علاقته بالنت المجاني؟!

شرح قديم معايا بس هيفيد الناس الي عايزه تتعلم بجد ..

ما هو برتوكول HTTP ؟:

HTTP  هو أختصار لـ"Hypertext Transfer Protocol" ,  وهذا البرتوكول الذي تستخدمه عن تصفح للأنترنت كقرأتك لهذا الموضوع , هذا البرتوكول من أكثر البرتوكولات أستخدما عند التعامل من شبكة الأنترنت العالمية أو "World Wide Web" .

 ماذا سيفيدني تعلم برتوكول "HTTP" ؟ :
تعلم هذا البرتوكول سيساعدك على فهم كيفية عمل المواقع و كذلك الحصول على معلومات هامة من الموقع , كما سيسهل عليك برمجة برامج و سكريبت لتعامل مع المواقع المعتدمة على HTTP .

ماذا أحتاج لتطبيق أوامر "HTTP" ؟:
برتوكول "HTTP" يعتمد على أوامر تكتب بنص بصغية "ASCI" , أي أن الأمر سيكون مقروأ بالنسبة لك , لذا كل ما تحتاج له هو برنامج لأنشاء الأتصال و أرسال الأوامر وقد أعتمدت في شرحي للبرتوكول على الأداة "Netcat" قم بكتابة  الامر كالتالي لأنشاء أتصال مع سيرفر "HTTP" على المنفذ الأفتراضي 80 :
nc example.com 80

ما هو صيغة أوامر 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
خطأ من جانب السيرفر
5x

و هذا هو شرح المعلومات التي ترسل مع الأستجابة أو "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

  .
google-playkhamsatmostaqltradent