جدول المحتويات
في المقابلة الفنية أو غير ذلك، من الأسئلة الشائعة ما الذي يحدث عندما تكتب عنوان URL في المتصفح؟ ماذا يحدث خلف الكواليس عندما تتصفح أحد المواقع؟ ما الذي يستلزمه دورة حياة اتصال HTTP النموذجية؟ سأجيب على هذه الأسئلة بقدر ما أعرف.
قبل الغوص في عملية الاتصال، دعنا نتعرف على نموذج OSI الأساسي (نموذج الاتصال البيني للأنظمة المفتوحة). نموذج OSI هو نموذج مفاهيمي يوحد الاتصال بين نظامين - أحدهما حيث ينشأ الطلب (العميل) والآخر يخدم الطلب ويرسل الاستجابة (الخادم). ويبين الجدول أدناه بعض الخصائص الهامة لكل طبقة.
لا | طبقة | الأجهزة | وظيفة | البروتوكولات/التطبيقات | الإضافات |
---|---|---|---|---|---|
7 | طلب | الخادم/الكمبيوتر | التطبيقات، واجهة المستخدم | HTTP، SMTP، DNS | رأس L7 |
6 | عرض تقديمي | الخادم/الكمبيوتر | يعالج التشفير وتغييرات بناء الجملة | جبيغ، MP3 | رأس L6 |
5 | حصة | الخادم/الكمبيوتر | المصادقة والأذونات والجلسات | SCP، جدولة نظام التشغيل | رأس L5 |
4 | ينقل | جدار الحماية | التسليم الشامل، والتحكم في الأخطاء | تكب، أودب | رأس L4 |
3 | شبكة | أجهزة التوجيه | معالجة الشبكة والتوجيه والتبديل | الملكية الفكرية | رأس L3 |
2 | رابط البيانات | مفاتيح | العنوان الفعلي، اكتشاف الأخطاء، التدفق | إيثرنت، تتابع الإطار | رأس/مقطورة L2 |
1 | بدني | الكابلات | يتم نقل البت عبر الشبكة الفعلية | تقييم الأثر البيئي/TIA | رأس L1 |
بمجرد كتابة عنوان URL في المتصفح والضغط على مفتاح الإدخال/الإرجاع، سيقوم المتصفح (أو أي عميل في هذا الشأن) بتحليل عنوان URL [1] لاستخراج المكونات المهمة منه. ويرد أدناه مثال لعنوان URL:
https://www.google.com/search?q=cats
نحن هنا نبحث فقط عن القطط على جوجل. من عنوان URL أعلاه، https://
هو البروتوكول، و google.com
هو المضيف على www
(الإنترنت)، و /search
هو معلمة المسار و ?q=cats
هي معلمة سلسلة استعلام تشير إلى أننا نقوم بالاستعلام عن Google للقطط [ 2].
الآن بما أن المتصفح لديه معرفة بالمضيف الذي يحاول الوصول إليه، في هذه الحالة google.com
، فإنه سيحاول الحصول على عناوين IP المقابلة له. تم إنشاء نطاقات مثل " .com" أو " .org" حتى نتمكن من تذكرها بسهولة. ولكن لكي يرسل المتصفح الطلب الفعلي إلى google.com، فإنه يحتاج إلى عنوان IP الخاص بالمضيف. يساعدنا تحليل DNS في الحصول على معلومات عنوان IP لاسم مجال معين. يوجد DNS على طبقة التطبيق (L7) من الجدول أعلاه.
خطوات حل DNS:
$ ipconfig /displaydns
على نظام التشغيل Windows أو $ log stream --predicate 'process == "mDNSResponder"' --info
على نظام التشغيل mac/linux..com
و .org
وما إلى ذلك هي أسماء نطاقات المستوى الأعلى. سيعيد اسم TLD بعد ذلك عنوان IP لخادم (خوادم) الاسم الرسمي.$ dig google.com
; << >> DiG 9.10.6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 180 IN A 172.217.164.174
;; AUTHORITY SECTION:
google.com. 60552 IN NS ns1.google.com.
google.com. 60552 IN NS ns2.google.com.
google.com. 60552 IN NS ns3.google.com.
google.com. 60552 IN NS ns4.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 60438 IN A 216.239.32.10
ns1.google.com. 58273 IN AAAA 2001:4860:4802:32::a
ns2.google.com. 60438 IN A 216.239.34.10
ns2.google.com. 131763 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 163770 IN A 216.239.36.10
ns3.google.com. 60541 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 75597 IN A 216.239.38.10
ns4.google.com. 60541 IN AAAA 2001:4860:4802:38::a
;; Query time: 13 msec
;; SERVER: 10.4.4.10#53(10.4.4.10)
;; WHEN: Mon Jun 24 12:20:50 PDT 2019
;; MSG SIZE rcvd: 303
في كل طبقة من نموذج OSI، تسمى المعلومات باسم PDU (وحدة بيانات الحزمة). لذلك تسمى المعلومات الموجودة في طبقة التطبيق باسم L7 PDU بينما تسمى المعلومات الموجودة في طبقة الشبكة باسم L3 PDU. في كل طبقة، تتم إضافة رأس الطبقة المقابلة. يسبق الرأس نصه ويحتوي على بيانات العنونة والبيانات الأخرى المطلوبة للوصول إلى الوجهة المقصودة. ومن ناحية أخرى، يتم تمرير البيانات من الطبقة العليا إلى الأسفل. يتم عرض رؤوس L4 وL3 وL2 أدناه:
قبل أن يتم إرسال الحزمة إلى الإنترنت للوصول أخيرًا إلى خادم مجال Google، يجب أولاً توجيهها عبر جهاز التوجيه. عندما يحتاج الجهاز إلى الاتصال بجهاز آخر (في هذه الحالة جهاز التوجيه المحلي) فعليًا، فإنه يحتاج إلى عنوان MAC (عنوان الجهاز) الخاص بهذا الجهاز. ولكن كيف يعرف الجهاز المحلي أن جهاز التوجيه هو المسار الافتراضي للخروج؟ يتم الحصول على هذه المعلومات من خلال المسار الافتراضي الذي تم إعداده على أساس كل واجهة داخل الجهاز المحلي. يمكنك التحقق من المسار الافتراضي باستخدام الأمر $ ifconfig
.
يتم استخدام عنوان IP لتحديد موقع جهاز على الشبكة بينما يتم استخدام عنوان MAC لتحديد الجهاز الفعلي. يتم استخدام بروتوكول ARP للحصول على عنوان MAC الخاص بالجهاز، مع العلم بعنوان IP. سنفترض هنا أن الجهاز الطالب قد تلقى بالفعل عنوان IP (إما بشكل ثابت أو من خلال بروتوكول DHCP).
يتواجد ARP على طبقة ارتباط البيانات لنموذج OSI. في هذه الحالة، سيتصل متصفح الويب الذي يعمل على الجهاز المحلي بجهاز التوجيه الذي يعد بوابة إلى الإنترنت.
arp -a
.ثم يتم توجيه الحزم إلى المسار الافتراضي. إذا لم يكن لديك مسار افتراضي محدد، فسيتم توجيهه إلى جهاز التوجيه. يمكنك التحقق من المسار الافتراضي باستخدام الأمر
route get default | grep gateway
أو netstat -rn
على نظام التشغيل Mac/linux أو ipconfig
على نظام التشغيل Windows.
على سبيل المثال، إذا كنت تستخدم شبكة 192.168.10.0/24 وتحاول الوصول إلى شبكة Google على 172.217.164.174/24، على سبيل المثال، عندما تصل الحزمة إلى جهاز التوجيه، سيتحقق جهاز التوجيه من جدول التوجيه ويقرر كيفية توجيه حركة المرور إلى الوصول إلى الشبكة الوجهة. ومن ثم سيتم إرسال الحزمة إلى البوابة المحددة للوصول إلى الوجهة 172.217.164.174/24
الاتصال بين العميل والخادم؛ في هذه الحالة، سيأخذ جهازك المحلي إلى خادم Google العديد من القفزات. كل قفزة هي في الأساس جهاز توجيه على طول المسار إلى الوجهة. يساعد جهاز التوجيه هنا على طلب الانتقال من شبكة إلى أخرى. كل جهاز في طريقه له عنوان MAC (عنوان الجهاز) وهو فريد عالميًا.
الآن يقوم الجهاز المحلي بإنشاء طلب باستخدام رأس L7 (HTTP)، ورأس L4 (TCP)، ورأس L3 (IP)، ورأس L2 (ARP، وعناوين MAC)، ومقطورة L2 (تسلسل فحص الإطار) والبيانات الفعلية. عندما يحصل جهاز التوجيه على الحزمة، فإنه يقوم بفك تغليفها وتعديل رأس/مقطورة L2 وتغليف الحزمة مرة أخرى.
يستلمها جهاز التوجيه الآن ويبدأ في إلغاء التغليف. إنه ينظر إلى رأس L2 ويرى أن جهاز Mac الوجهة خاص به. يقوم الآن بإزالة رأس L2 وينظر الآن إلى رأس L3 ويدرك أن الطلب ليس لنفسه بل لخادم Google. يقوم جهاز التوجيه بعد ذلك بتخفيض قيمة TTL الموجودة داخل رأس L3. يبحث جهاز التوجيه الآن في جدول التوجيه الخاص به عن جميع المسارات المحتملة التي كانت أجهزة التوجيه الأخرى قد أعلنت عنها لهذا الموجه (عبر RIP أو IGP) حول كيفية الوصول إلى الوجهة. يقوم أحد أجهزة التوجيه بعد ذلك بإجراء ARP للحصول على عنوان MAC الخاص بجهاز توجيه الخطوة التالي إذا لم يكن لديه عنوان MAC في ذاكرة التخزين المؤقت الخاصة به.
يقوم جهاز التوجيه أيضًا بإضافة CRC الذي ينتقل إلى المقطورة L2. يساعد هذا جهاز التوجيه التالي على معرفة عدم حدوث أي مشكلات على المسارات أدت إلى تلف الحزمة عبر السلك. إذا أصبح تالفًا، فسوف يسقط الإطار.
في هذه الحالة، قام جهاز التوجيه بتعديل رأس L2 ومقطورة L2 ولكنه لم يلمس رأس L3 وبالتالي لا يوجد رأس فوقه.
منفذ المصدر رقم سيكون رقم منفذ مؤقتًا وسيكون رقم منفذ الوجهة 80.
TCP - خدمة موثوقة ونفس الطلب. أول شيء ستفعله الآلة المحلية هو إنشاء اتصال ثلاثي مع خادم Google الآن لأنه يعرف الطريق إلى الخادم. يساعد إنشاء الاتصال في وضع اللمسات الأخيرة على بعض متغيرات الحالة مثل حجم MSS ورقم التسلسل الأولي ونوع ACK وحجم المخزن المؤقت وما إلى ذلك.
في هذه الحالة، يبلغ طول منفذ المصدر والوجهة في رأس TCP 16 بت، لذا فإن 2^16 هو 65535. يتم استخدام منفذ المصدر لتحديد تطبيق العميل بينما يتم استخدام منفذ الوجهة لتحديد الخدمة أو الشيطان الذي يعمل على خادم الويب.
يلتقط العميل (متصفح الويب) أي منفذ من 49152 إلى 65535. وهذا يضمن عدم استخدام أي تطبيقين لنفس المنفذ. يُطلق على عنوان المنفذ بالإضافة إلى عنوان IP اسم مقبس TCP. منفذ الوجهة هو المنفذ 80 في حزمة IP.
ابدأ التواصل:
من خلال الخطوات الثلاث المذكورة أعلاه، تكون مصافحة TCP ناجحة بين العميل والخادم وقد وافق كلاهما الآن على القواعد المشتركة لنقل البيانات.
بعد مصافحة TCP، تتم مصافحة TLS إذا كنت متصلاً بموقع ويب آمن. من خلال مصافحة TLS، يوافق العميل والخادم على الشروط العامة للاتصال الآمن.
من الآن فصاعدًا، تقوم جلسة TLS بنقل بيانات التطبيق (HTTP) المشفرة باستخدام المفتاح المتماثل المتفق عليه.
يعالج الخادم الطلبات ويرسل الرد المناسب. عندما يصل الطلب إلى الخادم على المنفذ 80 (HTTP) أو المنفذ 443 (HTTPS)، يستمع خادم الويب مثل Apache أو Nginx إلى المنفذ 443، ويتعامل مع اتصال الطلب ويوجهه إلى منفذ مؤقت آخر يتم تشغيل خدمة الويب عليه. جري.
يمكن لأي عميل أو خادم أو وكيل HTTP إغلاق اتصال نقل TCP في أي وقت. على سبيل المثال، عندما يكتشف العميل أن عملية نقل البيانات قد انتهت وأن قناة الاتصال المفتوحة لم تعد مطلوبة، فإنه يرسل طلب إغلاق الاتصال إلى الخادم. في المرة التالية التي يريد فيها العميل الاتصال بالخادم، يجب إنشاء اتصال جديد بين الجهازين.
[1] | معيار URL |
[2] | المكونات أو عنوان URL |