خانه / وب و اینترنت
وب و اینترنتزمان مطالعه: ۶ دقیقه

وقتی آدرس یک سایت را باز می‌کنیم، چه اتفاقی می‌افتد؟

از نوشتن نام دامنه در مرورگر تا دریافت پاسخ از سرور؛ مسیر واقعی یک درخواست وب را قدم‌به‌قدم دنبال کنیم.

از یک آدرس ساده تا صفحه وب

فرض کنید در مرورگر می‌نویسیم https://example.com. مرورگر فقط نام سایت را می‌بیند، اما برای برقراری ارتباط باید بداند به کدام سرور یا سرویس متصل شود. اینجا DNS وارد ماجرا می‌شود.

مرورگر←DNS: یافتن مقصد←اتصال به سرویس وب

ابتدا مرورگر و سیستم‌عامل، اطلاعات ذخیره‌شده را بررسی می‌کنند؛ اگر آدرس مقصد در دسترس نباشد، درخواست DNS ارسال می‌شود. پس از دریافت IP، مرورگر می‌تواند با مقصد ارتباط برقرار کند. DNS بخشی از مسیر عبور هر درخواست HTTP نیست؛ کار DNS پیدا کردن نشانی مقصد است.

مرحله دوم: اتصال امن با HTTPS

اگر آدرس با https:// آغاز شود، مرورگر و مقصد یک ارتباط TLS برقرار می‌کنند. در این مرحله گواهی بررسی می‌شود تا نام دامنه، اعتبار زمانی و زنجیره اعتماد آن درست باشد. سپس درخواست HTTP در کانال رمزگذاری‌شده جابه‌جا می‌شود.

اگر گواهی برای نام دیگری صادر شده باشد، ممکن است مرورگر هشدار «Not Secure» یا خطای تطابق نام نشان دهد. این با خطاهای HTTP مانند 403 و 404 یکسان نیست.

مرحله سوم: درخواست و پاسخ

مرورگر درخواستی مثل GET / می‌فرستد. سرور یا سرویس واسط آن را بررسی می‌کند و در نهایت پاسخ HTTP برمی‌گرداند. پاسخ شامل کد وضعیت، هدرها و معمولاً محتوای صفحه است.

GET /articles/how-web-works.html HTTP/1.1
Host: example.com
User-Agent: Browser

برای نمایش کامل یک صفحه، مرورگر معمولاً درخواست‌های دیگری برای CSS، تصاویر و فایل‌های JavaScript ارسال می‌کند. بنابراین یک بار باز کردن صفحه می‌تواند چندین درخواست ایجاد کند.

مرورگر چرا چندین فایل دریافت می‌کند؟

یک صفحه معمولاً فقط HTML نیست. مرورگر پس از دریافت سند اصلی، فایل‌های CSS برای ظاهر صفحه و گاهی تصویر و JavaScript را نیز می‌خواهد. بخشی از این فایل‌ها ممکن است برای سرعت بیشتر در حافظه نهان (Cache) مرورگر ذخیره شوند.

اگر تغییر ظاهری صفحه را نمی‌بینید، علاوه بر بررسی نسخه فایل روی سرور، حافظه نهان مرورگر و نشانی دقیق فایل را هم در نظر بگیرید.

یک آزمایش ساده

curl -I https://example.com
curl -I https://example.com/articles/how-web-works.html

خروجی هدرهای پاسخ را بررسی کنید. اگر هدف دیدن محتوای صفحه است، گزینه -I را حذف کنید؛ زیرا این گزینه درخواست HEAD می‌فرستد.