وقتی آدرس یک سایت را باز میکنیم، چه اتفاقی میافتد؟
از نوشتن نام دامنه در مرورگر تا دریافت پاسخ از سرور؛ مسیر واقعی یک درخواست وب را قدمبهقدم دنبال کنیم.
از یک آدرس ساده تا صفحه وب
فرض کنید در مرورگر مینویسیم https://example.com. مرورگر فقط نام سایت را میبیند، اما برای برقراری ارتباط باید بداند به کدام سرور یا سرویس متصل شود. اینجا 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 میفرستد.