سایت چگونه کار می کند
وقتی آدرس سایتی را می نویسید، مرورگر اول اسم دامنه را به یک نشانی عددی ترجمه می کند، بعد به کامپیوتری که پشت آن نشانی نشسته وصل می شود و یک متن HTML می گیرد و از روی آن متن صفحه را می سازد. سایت یعنی همین رفت و برگشت کوتاه، و هر مشکلی که می بینید در یکی از حلقه های همین زنجیره افتاده است.
- درس ۱ از ۱۲
- مقدماتی
- رایگان، بدون ثبت نام
دو طرف یک سایت، و چیزی که وسط می ایستد
مرورگر
روی دستگاه کاربر، و کاری که می کند ساختن است نه گرفتن عکس
- درخواست را می فرستد و جواب را می گیرد
- HTML و CSS را می خواند و صفحه را می سازد
- جاوااسکریپت را همان جا اجرا می کند
سرور
کامپیوتری که خاموش نمی شود و منتظر درخواست می ماند
- وب سرور: درخواست را می گیرد و جواب می دهد
- برنامه سایت: HTML را می سازد
- پایگاه داده: متن، کاربر و سفارش را نگه می دارد
چیزی که این دو را به هم می رساند، ترجمه اسم دامنه به یک نشانی عددی است
دامنه و DNS
دفترچه تلفن اینترنت: از اسم به نشانی
- دامنه فقط یک اسم اجاره ای است، نه فضای ذخیره سازی
- جواب DNS مدتی ذخیره می ماند، پس تغییرش فوری دیده نمی شود
- نشانی ای که می دهد ممکن است مال یک لایه میانی باشد
این شکل ساده شده است: در عمل بین مرورگر و سرور معمولا یک شبکه توزیع محتوا و چند لایه کش هم نشسته اند.
آخرین بررسی: فکت ها و نام ابزارهای این درس در همین تاریخ با منابعشان بازبینی شده اند.
آدرس را می نویسید و اینتر می زنید؛ بعد چه می شود؟
یک رفت و برگشت است، نه یک پخش زنده. مرورگر شما یک درخواست می فرستد، کامپیوتر دیگری جواب می دهد، و ارتباط همان جا تمام می شود. هر تصویر، هر فایل CSS و هر فونتی هم که صفحه لازم دارد درخواست جدای خودش را دارد، پس یک صفحه ساده معمولا ده ها رفت و برگشت پشتش دارد.
ترتیب کار ثابت است. اول اسم دامنه باید به یک نشانی عددی ترجمه شود. بعد یک ارتباط رمزگذاری شده بین مرورگر و آن نشانی باز می شود، همان چیزی که قفل کنار آدرس نشانش می دهد. بعد مرورگر می گوید کدام صفحه را می خواهد. و طرف مقابل یک متن پس می دهد.
آن چیزی که برمی گردد یک تصویر از صفحه نیست، یک متن است. همین متن روی گوشی یک شکل می شود و روی مانیتور شکل دیگری، و برای کسی که با صفحه خوان کار می کند اصلا شکلی ندارد و خوانده می شود. این تفاوت کوچک به نظر می رسد و در عمل کل کار طراحی سایت را توضیح می دهد: شما شکل نهایی را نمی فرستید، دستور ساختنش را می فرستید.
اگر می خواهید همین حالا ببینیدش، روی هر سایتی راست کلیک کنید و گزینه دیدن کد منبع یا view source را بزنید. چیزی که باز می شود دقیقا همان متنی است که مرورگر شما گرفته است.
یک بازدید، از اینتر تا اولین چیزی که می بینید
-
۱
ترجمه اسم
مرورگر می پرسد این دامنه کجاست و یک نشانی عددی می گیرد.
-
۲
باز شدن ارتباط امن
همان قفلی که کنار آدرس می بینید؛ بدون آن مرورگر هشدار می دهد.
-
۳
درخواست صفحه
مرورگر می گوید کدام آدرس را می خواهد و خودش را معرفی می کند.
-
۴
ساخته شدن جواب
یا فایل آماده تحویل می شود یا برنامه اجرا می شود و HTML می سازد.
-
۵
رسم صفحه
مرورگر متن را می خواند، فایل های لازم را می گیرد و صفحه را می سازد.
این پنج مرحله فقط برای اولین فایل است. تصویرها، فونت ها و اسکریپت ها هر کدام همین چرخه را دوباره طی می کنند.
دامنه اسم است و آی پی نشانی؛ ترجمه با کیست؟
کامپیوترها با اسم کار نمی کنند، با عدد کار می کنند. DNS همان دفترچه تلفن اینترنت است: می پرسید rgb.ir کجاست و یک نشانی عددی تحویل می گیرید. این پرسش و پاسخ در چند صدم ثانیه انجام می شود و جوابش هم مدتی روی کامپیوتر خودتان و روی سرورهای مسیر ذخیره می ماند، که دلیل اصلی آن جمله همیشگی است: «برای من باز می شود، برای تو نه.»
خودتان می توانید همین ترجمه را ببینید. در ترمینال لینوکس یا مک:
dig +short A rgb.ir
dig +short NS rgb.irدستور اول نشانی عددی را می دهد و دومی می گوید چه کسی مسئول جواب دادن درباره این دامنه است. در ویندوز همین کار با nslookup rgb.ir انجام می شود.
یک نکته که مبتدی ها را گیج می کند: نشانی ای که برمی گردد لزوما نشانی سرور اصلی نیست. خیلی از سایت ها پشت یک شبکه توزیع محتوا نشسته اند، پس چیزی که DNS به شما می دهد نشانی نزدیک ترین ایستگاه آن شبکه است و سرور واقعی یک لایه عقب تر می ماند. سایت خود ما هم دقیقا همین طور است و در بخش «کاری که خودمان کرده ایم» عددهایش را آورده ایم.
دامنه را هم با هاست اشتباه نگیرید: دامنه فقط اسم است و اجاره اش سالانه است، هاست جایی است که فایل ها آنجا زندگی می کنند. اگر این تفکیک هنوز برایتان جا نیفتاده، توضیح دامنه از همین جا شروع می کند.
آن طرف خط چه چیزی نشسته است؟
یک کامپیوتر که خاموش نمی شود. تفاوت سرور با لپ تاپ شما در نوع قطعات نیست، در این است که همیشه روشن است، به اینترنت پرسرعت وصل است و نرم افزاری روی آن نشسته که منتظر درخواست می ماند.
روی آن کامپیوتر معمولا سه چیز کنار هم کار می کنند. اول وب سرور، برنامه ای مثل nginx یا Apache که درخواست را می گیرد و جواب را پس می دهد. دوم برنامه سایت، که ممکن است PHP باشد یا هر زبان دیگری و کارش ساختن HTML است. سوم پایگاه داده، جایی که متن نوشته ها، کاربران و سفارش ها نگه داشته می شود.
یک صفحه ساده که فقط چند خط متن است می تواند بدون دو مورد آخر هم کار کند. اما همین که سایت بخواهد فرم بگیرد، کاربر داشته باشد یا محتوایش از پنل مدیریت عوض شود، پای برنامه و پایگاه داده وسط می آید. وردپرس دقیقا همین است: یک برنامه PHP که محتوا را از پایگاه داده می خواند و از رویش HTML می سازد.
وقتی جایی می خوانید هاست اشتراکی، سرور مجازی یا سرور اختصاصی، بحث سر همین کامپیوتر است: چند سایت روی یک ماشین بنشینند و منابعش را چطور تقسیم کنند. ما این را در صفحه هاست با قیمت و مشخصات آورده ایم، ولی برای فهمیدن این درس لازم نیست الان تصمیم بگیرید.
چرا بعضی صفحه ها آماده اند و بعضی هر بار ساخته می شوند؟
دو مدل وجود دارد و هر دو درست اند. در مدل اول فایل HTML از قبل روی سرور آماده است و وب سرور فقط تحویلش می دهد؛ سریع، ارزان و بی دردسر. در مدل دوم صفحه در همان لحظه ساخته می شود: برنامه اجرا می شود، از پایگاه داده می پرسد، HTML را می سازد و می فرستد. وردپرس، فروشگاه ها و هر چیزی که برای هر کاربر جواب متفاوتی دارد در این دسته است.
مدل دوم انعطاف می دهد و هزینه دارد. هر بازدید یعنی چند پرس و جو از پایگاه داده و چند صد میلی ثانیه کار برای پردازنده. راه حل قدیمی و ساده اش کش است: نتیجه یک بار ساخته می شود، به شکل یک فایل آماده ذخیره می ماند و بازدید بعدی همان فایل را می گیرد. یعنی سایت داینامیک را موقتا به سایت استاتیک تبدیل می کنیم.
همین است که آن سوال همیشگی را جواب می دهد: چرا تغییری که در پنل دادم روی سایت دیده نمی شود؟ چون بازدیدکننده هنوز دارد نسخه ذخیره شده قبلی را می گیرد. تا وقتی آن نسخه پاک یا منقضی نشود، تغییر شما فقط برای خودتان که وارد حساب هستید دیده می شود.
و یک لایه دیگر هم بالای سر همه اینها هست: شبکه توزیع محتوا نسخه ای از صفحه را در نزدیکی کاربر نگه می دارد، پس گاهی درخواست اصلا به سرور شما نمی رسد. برای کسی که سایت را می سازد این خبر خوبی است، تا روزی که بخواهد بفهمد چرا نسخه قدیمی هنوز نمایش داده می شود.
فایل آماده یا صفحه ای که در لحظه ساخته می شود
استاتیک: فایل از قبل آماده
- وب سرور فقط تحویلش می دهد و چیزی اجرا نمی شود
- سریع ترین و کم هزینه ترین حالت ممکن
- هر تغییر یعنی دوباره ساختن و بالا فرستادن فایل
- برای فرم، حساب کاربری و سبد خرید به تنهایی کافی نیست
داینامیک: ساخته شدن در لحظه
- برنامه اجرا می شود و از پایگاه داده می پرسد
- محتوا از پنل مدیریت عوض می شود، بدون کدنویسی
- برای هر کاربر می تواند جواب متفاوتی بدهد
- هر بازدید کار پردازنده دارد، پس معمولا کش لازم می شود
هیچ کدام از این دو بهتر از دیگری نیست. انتخاب به این بستگی دارد که محتوا هر چند وقت عوض می شود و چند نفر باید بتوانند عوضش کنند.
این زنجیره کجا پاره می شود و شما کدام تکه را می بینید؟
خبر خوب این است که پیام خطا معمولا می گوید کدام حلقه پاره شده، فقط باید بلد باشید بخوانیدش.
اگر مرورگر می گوید سایت پیدا نشد یا نام سرور یافت نشد، کار به سرور شما نرسیده و مشکل در ترجمه اسم است: رکورد DNS اشتباه است یا دامنه منقضی شده. اگر هشدار امنیتی می بینید، ترجمه درست بوده و ارتباط باز شده ولی گواهی SSL خراب یا منقضی است. اگر صفحه سفید یا خطای ۵۰۰ می آید، درخواست به مقصد رسیده و برنامه سایت وسط کار به مشکل خورده؛ اینجا باید لاگ خطای سرور را نگاه کنید نه مرورگر را. و اگر همه چیز باز می شود ولی محتوا قدیمی است، هیچ چیز خراب نیست: کش دارد نسخه قبلی را تحویل می دهد.
یک دسته دیگر هم هست که خرابی نیست و مثل خرابی به نظر می رسد: سایت باز می شود اما کند. آنجا زنجیره پاره نشده، فقط یکی از حلقه ها وقت می برد، و پیدا کردنش کار دیگری است که مسیر افزایش سرعت سایت به آن می پردازد.
عادتی که کار را ساده می کند: قبل از حدس زدن، هدرهای پاسخ را نگاه کنید. یک دستور کوتاه به شما می گوید جواب از کجا آمده، چه کدی داشته و کش دخالت کرده یا نه:
curl -I https://example.com/همین یک خط، فرق بین «سایت خرابه» و «سایت سالم است و کش دارد نسخه دیروز را می دهد» را روشن می کند.
هوش مصنوعی در این کار
برای کسی که تازه شروع کرده، بهترین استفاده از مدل زبانی این نیست که به جای شما سایت بسازد؛ این است که پیام خطایی را که نمی فهمید ترجمه کند. متن دقیق خطا را کپی کنید، بگویید کجا دیدیدش و چه کاری قبلش کرده اید، و بخواهید فهرست چیزهایی را بدهد که باید چک کنید. این کار همان چیزی است که قبلا یک ساعت جستجو در انجمن ها لازم داشت.
ابزارهایی که واقعا کمک می کنند
- Claude برای توضیح خطا و خواندن یک تکه لاگ خوب جواب می دهد. ایران در فهرست کشورهای پشتیبانی شده انتروپیک نیست؛ این را از صفحه خود انتروپیک خوانده ایم و نه از تست شبکه.
- Gemini فارسی را خوب می فهمد و برای سوال های پایه ای درباره دامنه و هاست کافی است. صفحه خود گوگل می گوید اپ وب جمنای در بیش از دویست و سی کشور و منطقه کار می کند و ایران در آن فهرست نیست.
- ChatGPT رایج ترین انتخاب و برای همین کار قابل قبول است. ما هنوز صفحه ای برایش در بخش هوش مصنوعی نداریم، پس درباره دسترسی و قیمتش اینجا ادعایی نمی کنیم.
کجا نتیجه معکوس می دهد
خطر این کار مشخص است و کم هم پیش نمی آید: مدل درباره سرور شما با همان لحن مطمئن چیزی می سازد که وجود ندارد. مسیر یک فایل پیکربندی، اسم یک صفحه در کنترل پنل، یا دستوری که روی هاست شما اصلا فعال نیست. خود انتروپیک این حالت را در مستنداتش توهم می نامد و راه های کم کردنش را توضیح می دهد، که یعنی سازنده هم آن را یک ضعف واقعی می داند نه شایعه. قاعده ساده است: هر چیزی که مدل درباره سرور شما می گوید باید با خروجی واقعی سنجیده شود، یعنی لاگ خطا، صفحه هاست، یا همان curl -I. توضیح دادن خطا کار مدل است؛ تایید کردن واقعیت کار شماست. برای اینکه بدانید هر کدام از این ابزارها از ایران چطور قابل پرداخت است، راهنمای خرید را ببینید.
منبع ها: Anthropic: reduce hallucinations Anthropic: supported countries Google: where Gemini Apps are available
حد این توصیه
این مدل عمدا ساده شده است. یک درخواست واقعی امروز معمولا از چند لایه دیگر هم رد می شود که اینجا نیامده اند: شبکه توزیع محتوا، توزیع کننده بار، پروتکل های جدیدتر انتقال، و کدی که داخل خود مرورگر ذخیره می شود. مهم تر از آن، فهمیدن این زنجیره چیزی را تعمیر نمی کند؛ فقط کاری می کند که وقت درست کردن، جای درست را نگاه کنید. برای هر حلقه ابزار و دانش خودش لازم است.
از تجربه خود ما
روزی که این درس بررسی شد، همین چند دستور را روی دامنه خودمان اجرا کردیم. dig +short NS rgb.ir دو نام سرور کلادفلر برمی گرداند و dig +short A rgb.ir دو نشانی می دهد که هیچ کدام نشانی سرور ما نیست؛ یعنی چیزی که DNS به مرورگر شما می دهد، آدرس نزدیک ترین ایستگاه شبکه است و سرور اصلی یک لایه عقب تر می ماند. بعد curl -I https://rgb.ir/ جوابی داد که در آن هم cf-cache-status: HIT بود و هم یک هدر age با عددی برحسب ثانیه، یعنی نسخه ای که ما گرفتیم از حافظه لبه شبکه آمده بود و همان قدر ثانیه آنجا مانده بود. جالب ترین تکه اش این است که در همان جواب x-flying-press-source: PHP هم دیده می شود: یعنی نسخه ذخیره شده را روزی PHP ساخته، ولی درخواست امروز اصلا به PHP نرسیده است. هر سه دستور را خودتان هم می توانید روی همین دامنه تکرار کنید.
سوال هایی که واقعا پرسیده می شوند
فرق دامنه و هاست دقیقا چیست؟
دامنه اسم است و هاست جا. اسم را سالانه اجاره می کنید و جا را ماهانه یا سالانه؛ دامنه بدون هاست به جایی وصل نیست و هاست بدون دامنه فقط با یک نشانی عددی باز می شود. هر دو را هم می توانید از دو شرکت متفاوت بگیرید.
چرا سایت برای من باز می شود ولی برای یکی دیگر نه؟
در بیشتر موارد جواب DNS است: نشانی قدیمی هنوز روی دستگاه یا شبکه طرف مقابل ذخیره مانده و تا منقضی نشود همان را می گیرد. دلیل های بعدی هم کش مرورگر، نسخه ذخیره شده روی شبکه توزیع محتوا، و فیلتر شدن مسیر در شبکه ای خاص است. اولین کار تست کردن سایت روی یک شبکه دیگر است، مثلا اینترنت موبایل.
برای ساختن یک سایت باید همه این ها را بلد باشم؟
نه. با یک سرویس هاست و وردپرس، بدون دانستن هیچ کدام از این ها می شود سایت راه انداخت. این درس برای روزی است که چیزی کار نکند: آن وقت کسی که این زنجیره را می شناسد در چند دقیقه می فهمد باید سراغ کدام شرکت یا کدام تنظیم برود.