ماذا يحدث حين تفتح موقعًا؟
درس 6 من 6
6ماذا يحدث حين تفتح موقعًا؟
الصورة الكبيرةتكتب example.com وتضغط Enter، وبعد أقل من ثانية تظهر الصفحة. في تلك الثانية حصل جهازك على عنوان، ووجد البوابة، وسأل عن اسم، وصافح خادمًا، واتفق معه على مفاتيح تشفير، ثم طلب الصفحة. هذا هو سؤال المقابلات الأشهر في الشبكات، وبعد هذا الدرس تستطيع شرحه خطوة خطوة.
ماذا تشاهد في الرسم: ست محطات بالترتيب. كل محطة تحتاج نتيجة التي قبلها: لا DNS بلا عنوان، ولا TLS بلا اتصال TCP.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
تخيّل أنك وصلت مدينة جديدة وتريد زيارة صديق. أولًا تأخذ من الفندق غرفة ورقم هاتف (DHCP). تسأل موظف الاستقبال أين باب الخروج (ARP للبوابة). تتصل بدليل الهاتف لتعرف عنوان صديقك من اسمه (DNS). تطرق بابه ويرد عليك (TCP). تتفقان على كلمة سر بينكما حتى لا يفهم أحد حديثكما (TLS). ثم تقول طلبك: «أعطني الصفحة الرئيسية» (HTTP).
DHCP (UDP 67/68) بأربع رسائل DORA: Discover وOffer وRequest وAck، فيعطي العنوان والقناع والبوابة وخادم DNS ومدة الإيجار. ARP يحوّل IP البوابة إلى MAC. DNS يسأل المحلّل، والمحلّل يمشي من الجذر إلى TLD إلى الخادم الموثوق ويحفظ الجواب حسب TTL. TCP مصافحة ثلاثية إلى 443. TLS 1.3 (RFC 8446) رحلة واحدة: ClientHello مع SNI ومفتاح، ثم ServerHello مع الشهادة؛ المتصفح يتحقق من سلسلة الشهادة ومن الاسم. HTTP طلب GET / ورد 200 OK. مع HTTP/3 يندمج النقل والتشفير في QUIC فوق UDP.
قبل أن تبدأ
📦النقل
تعرف المصافحة الثلاثية والمنافذ.
🧭التوجيه
تعرف دور البوابة الافتراضية.
الفكرة الجوهرية
1الرحلة كاملة، محطة محطة
اضغط «التالي» لترى كل محطة وحدها، أو «الكل» لترى الرحلة كاملة. لاحظ أن أول أربع رسائل لا علاقة لها بالموقع أصلًا: جهازك يجهّز نفسه أولًا.
رحلة فتح موقع، رسالة برسالة
اختر مرحلة لتعزل رسائلها، أو امشِ عليها بالترتيب. كل سهم رسالة حقيقية تراها في Wireshark.
الصورة كاملة: ست مراحل وستة عشر سهمًا قبل أن ترى أول حرف من الصفحة، وكلها تحدث عادة في أقل من نصف ثانية. اضغط مرحلة لتعزلها.
DHCP: تأخذ رقمًا. جهازك ينضم للواي فاي بلا عنوان، فيبث «هل من يعطيني عنوانًا؟». الراوتر يعرض 192.168.1.20 مع القناع والبوابة وخادم DNS، وجهازك يقبل. أربع رسائل اسمها DORA على UDP 67 و68.
ARP: اعرف باب البوابة. كل ما يخرج من بيتك يمر بالبوابة، وجهازك يحتاج عنوانها MAC ليضعه على الإطار. يسأل الجميع مرة ويحفظ الجواب.
DNS: اسأل دليل الهاتف. جهازك يسأل المحلّل عن عنوان example.com، والمحلّل يعرفه من ذاكرته أو يسأل الجذر ثم .com ثم الخادم الموثوق. الرسالة UDP على المنفذ 53.
TCP: اطرق الباب. المصافحة الثلاثية تفتح اتصالًا موثوقًا بالمنفذ 443: SYN ثم SYN-ACK ثم ACK. رحلة ذهاب وإياب كاملة قبل أي بيانات.
TLS: اتفقا على لغة سرية. جهازك يعرض طرق التشفير، والخادم يختار ويرسل شهادته ليثبت أنه example.com فعلًا. في TLS 1.3 يكفي ذلك رحلة واحدة، ثم كل شيء مشفّر.
HTTP: اطلب الصفحة. أخيرًا يرسل المتصفح GET / داخل القناة المشفّرة، ويرجع 200 OK مع الصفحة. ثم يطلب الصور والخطوط على الاتصال نفسه.
2DHCP: من أين جاء عنوانك؟
حين يتصل جهازك لا يعرف شيئًا، فيصرخ في الشبكة كلها (بث): «هل من خادم DHCP؟». الراوتر يعرض عنوانًا، فيطلبه الجهاز، فيؤكده الراوتر. هذه هي DORA. العنوان مؤجّر لمدة محددة، ويجدده الجهاز قبل أن تنتهي.
169.254 ليس عنوانًا من الراوتر. معناه أن DHCP لم يرد، فاخترع الجهاز عنوانًا لنفسه لا يصل للإنترنت. ابحث عن المشكلة في الاتصال بالراوتر، لا في الموقع.3DNS: دليل هاتف الإنترنت
الأجهزة تتكلم بالأرقام، والبشر يتذكرون الأسماء. DNS يحوّل الاسم إلى عنوان. جهازك لا يبحث بنفسه: يسأل المحلّل (غالبًا عند مزوّد الخدمة أو مثل 1.1.1.1)، والمحلّل يسأل الخوادم من الأعلى للأسفل، ثم يحفظ الجواب حتى لا يكرر الرحلة.
| السجل | ماذا يحمل | مثال |
|---|---|---|
A | عنوان IPv4 | 203.0.113.10 |
AAAA | عنوان IPv6 | 2001:db8::10 |
CNAME | اسم بديل يشير لاسم آخر | www → example.com |
MX | خادم البريد للنطاق | 10 mail.example.com |
TXT | نص حر، يُستخدم للتحقق وسياسات البريد | v=spf1 … |
NS | الخوادم الموثوقة للنطاق | ns1.example.com |
لهذا لا يظهر تغيير DNS للجميع فورًا: كل محلّل ينتظر انتهاء TTL عنده.
# a resolver's cache in a few lines: answers live until their TTL runs out
cache = {}
def resolve(name, now):
hit = cache.get(name)
if hit and now < hit["expires"]:
return hit["ip"], "cache"
ip = "203.0.113.10" # pretend we walked root -> .com -> authoritative
cache[name] = {"ip": ip, "expires": now + 300} # TTL 300 seconds
return ip, "full lookup"
for t in (0, 10, 299, 301):
ip, how = resolve("example.com", t)
print(f"t={t:>3}s {ip} ({how})")4TLS وHTTP: القفل ثم الطلب
القفل في المتصفح يعني ثلاثة أشياء: ما بينك وبين الخادم مشفّر، ولا أحد عدّله في الطريق، والخادم أثبت أنه صاحب الاسم بشهادة وقّعتها جهة يثق بها جهازك. لا يعني أن الموقع نفسه أمين: موقع تصيّد يمكن أن يحمل قفلًا.
| الرمز | المعنى | من المسؤول غالبًا |
|---|---|---|
200 | تم بنجاح | لا أحد |
301 / 302 | انتقل لعنوان آخر | إعداد مقصود |
404 | الصفحة غير موجودة | الرابط أو المحتوى |
403 | ممنوع | الصلاحيات |
500 | خطأ داخل الخادم | التطبيق |
502 / 504 | البوابة لم تصل للخادم خلفها | الشبكة أو الخادم الخلفي |
كل جزء من الرابط تستخدمه محطة مختلفة من الرحلة.
from urllib.parse import urlsplit
url = "https://shop.example.com:8443/cart?item=42#top"
parts = urlsplit(url)
print("scheme :", parts.scheme, "-> TLS on top of TCP")
print("host :", parts.hostname, "-> asked of DNS")
print("port :", parts.port or 443)
print("path :", parts.path, "-> sent in the HTTP request")
print("query :", parts.query)
print("fragment:", parts.fragment, "-> never leaves the browser")مثال محلول
المسألة: زميلك يقول «الإنترنت لا يعمل». تكتب ping 1.1.1.1 فينجح، وتكتب ping example.com فيقول «unknown host». أين المشكلة؟ الحل: الوصول للإنترنت بالرقم يعمل، إذن DHCP وARP والتوجيه سليمة. الذي فشل هو تحويل الاسم: المشكلة في DNS. افحص خادم DNS في إعدادات الجهاز، أو جرّب nslookup example.com 1.1.1.1 لتسأل محلّلًا آخر مباشرة.
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| القفل يعني أن الموقع آمن وموثوق. | يعني أن الاتصال مشفّر ومع صاحب الاسم فقط؛ التصيّد يستخدم قفلًا أيضًا. |
| DNS يُستعمل مرة واحدة عند تسجيل الموقع. | يُسأل في كل زيارة ما لم يكن الجواب محفوظًا وصالحًا. |
| السرعة العالية تعني أن الصفحة تفتح أسرع دائمًا. | فتح الصفحة يتأثر بالتأخير وعدد الرحلات أكثر من عرض النطاق. |
أين تقابله في العمل
🎤المقابلات
«ماذا يحدث حين تكتب رابطًا؟» سؤال شبه ثابت في مقابلات الشبكات والأنظمة.
🛠️الدعم الفني
تحديد المحطة التي فشلت يوفر ساعات من التخمين.
⚡أداء المواقع
CDN وHTTP/3 وذاكرة DNS كلها لتقليل الرحلات.
اختبر فهمك
ما ترتيب رسائل DHCP؟
DORA: اكتشاف، عرض، طلب، تأكيد.
جهاز عنوانه 169.254.12.7. ما الأرجح؟
هذا عنوان يخترعه الجهاز لنفسه حين يفشل DHCP.
أي سجل DNS يحمل عنوان IPv6؟
A لـ IPv4، وAAAA لـ IPv6 لأنه أطول بأربع مرات.
ظهر لك الخطأ 502 Bad Gateway. أين تبحث أولًا؟
وصلت للبوابة ورد عليك HTTP، إذن مشكلتك خلفها.
ما ترتيب رسائل DHCP؟
DORA: اكتشاف، عرض، طلب، تأكيد.
أي سجل DNS يربط اسمًا بعنوان IPv4؟
AAAA لـ IPv6، وMX للبريد، وCNAME اسم مستعار.
بطاقات مراجعة سريعة
تحقق من فهمك
لماذا يأتي ARP قبل DNS في الرحلة؟
لأن سؤال DNS نفسه حزمة تخرج عبر البوابة، ويلزم معرفة MAC البوابة لإرساله.
ماذا يتحقق منه المتصفح في الشهادة؟
أن الاسم يطابق الموقع، وأنها سارية، وأن سلسلة التوقيع تنتهي بجهة يثق بها.
صديقك غيّر عنوان موقعه في DNS ولا يزال بعض الناس يصلون للقديم. لماذا؟
محلّلاتهم تحمل الجواب القديم حتى ينتهي TTL.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
توثيق رسمي2
مقالات2
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.