فصل 3

هفته ۳ | شبکه به‌اندازه‌ای که نیاز داریم

یک اتفاق آشنا: کاربر می‌گوید «سایت بالا نمی‌آید» و شما نمی‌دانید از کجا شروع کنید. مشکل از DNS است؟ از خود سرور؟ از یک فایروال جایی در مسیر؟ بدون شناخت شبکه، این حدس‌زدن است؛ با شناخت شبکه، یک چک‌لیست ساده می‌شود. هفته‌ی سوم دقیقاً همین مسیر را می‌سازد.

قرار نیست در این هفته متخصص شبکه شویم — این تخصص خودش مدت‌ها زمان می‌طلبد. هدف واقع‌بینانه‌تر است: بفهمیم یک درخواست از مرورگر تا سرور و برگشت چه مسیری را طی می‌کند، و وقتی چیزی خراب شد، بدانیم مشکل را در کدام لایه دنبال کنیم.

اهداف این هفته:

  • لایه‌های شبکه — مدل OSI و TCP/IP، Encapsulation و جایگاه لایه‌ها در عیب‌یابی
  • IP، Subnet و Routing — آدرس‌دهی، محدوده‌های Private، NAT و پورت‌های پرکاربرد DevOps
  • DNS — انواع رکورد، فرایند Resolve و نقش TTL
  • TCP و HTTP — Handshake، ساختار Request/Response و کدهای وضعیت
  • TLS و HTTPS — گواهی(Certificate) و آنچه TLS تضمین می‌کند
  • وب‌سرور، Proxy و Load Balancing — سرو فایل‌های استاتیک با NGINX، قرار دادن Proxy در برابر Backend و توزیع بار
  • عیب‌یابی شبکه — کار عملی با ping، traceroute، mtr، dig، curl، ss و tcpdump

محیط کارمان همان VM آزمایشی هفته‌ی دوم است؛ همان‌جا دستورها را امتحان می‌کنیم و همان‌جا NGINX را بالا می‌آوریم. بخش‌هایی مثل Browser DevTools هم روی سیستم میزبان قابل انجام‌اند، بدون نیاز به VM.

درس‌های این هفته پشت‌سرِ هم ساخته شده‌اند: لایه‌ها و IP پایه‌ی همه‌چیزند، DNS و TCP/HTTP روی همان پایه سوارند، و از NGINX تا Load Balancing همگی از همان یک وب‌سرور استفاده می‌کنند که در درس ۶ راه می‌اندازید. بهتر است ترتیب را رعایت کنید و پیکربندی NGINX را از یک درس به درس بعد نگه دارید، چون هر درس به مباحث قبلی مرتبط است.

درس پایانی، عیب‌یابی شبکه، ابزارهای هفته را کنار هم می‌گذارد و چیزهایی که تا اینجا یاد گرفته‌اید را به یک روال ذهنی واحد تبدیل می‌کند. بهتر است اول درس‌های قبلی را کامل کرده باشید و بعد سراغش بروید.

پس از مطالعه‌ی درس‌ها، تمرین هفته را انجام دهید و نتیجه را در GitHub ثبت کنید.