# فصل نهم: شبکه در لینوکس

## Linux Networking Basics

شبکه یکی از مهم‌ترین بخش‌های سیستم‌عامل لینوکس است.

امروزه تقریباً تمام سیستم‌های کامپیوتری به شبکه وابسته هستند؛ از کامپیوترهای شخصی گرفته تا سرورها، زیرساخت‌های ابری، سیستم‌های امنیتی و تجهیزات اینترنتی.

لینوکس به دلیل استفاده گسترده در سرورها و محیط‌های حرفه‌ای، ابزارهای قدرتمندی برای مدیریت، بررسی و تحلیل شبکه ارائه می‌دهد.

هدف این فصل، آشنایی با مفاهیم پایه شبکه در لینوکس و یادگیری ابزارهایی است که هر کاربر حرفه‌ای لینوکس باید با آن‌ها آشنا باشد.

---

# شبکه چیست؟

شبکه مجموعه‌ای از دستگاه‌ها است که برای تبادل اطلاعات به یکدیگر متصل شده‌اند.

این دستگاه‌ها می‌توانند شامل موارد زیر باشند:

- کامپیوترها
- سرورها
- تلفن‌های همراه
- روترها
- تجهیزات شبکه

هدف اصلی شبکه:

انتقال اطلاعات بین سیستم‌های مختلف است.

---

# مدل ساده ارتباط شبکه

هنگامی که دو سیستم با یکدیگر ارتباط برقرار می‌کنند، اطلاعات از چندین مرحله عبور می‌کند.

ساختار ساده:

    Application
         |
         ▼
    Transport
         |
         ▼
    Network
         |
         ▼
    Data Link
         |
         ▼
    Physical

هر لایه وظیفه مشخصی دارد و همکاری این لایه‌ها باعث ایجاد ارتباط شبکه‌ای می‌شود.

---

# IP Address چیست؟

برای اینکه دستگاه‌ها بتوانند در شبکه یکدیگر را پیدا کنند، هر دستگاه به یک آدرس نیاز دارد.

این آدرس:

IP Address

نام دارد.

IP مانند آدرس یک خانه در دنیای واقعی است.

مثال:

    192.168.1.10

با استفاده از IP، سیستم‌ها می‌توانند اطلاعات را به مقصد درست ارسال کنند.

---

# IPv4 چیست؟

IPv4 رایج‌ترین نسخه IP در شبکه‌ها است.

IPv4 از چهار بخش عددی تشکیل شده است.

مثال:

    192.168.1.1

هر بخش مقداری بین 0 تا 255 دارد.

به دلیل محدود بودن تعداد آدرس‌های IPv4، نسخه جدیدتری به نام IPv6 ایجاد شد.

---

# IPv6 چیست؟

IPv6 نسل جدید پروتکل IP است که برای حل مشکل کمبود آدرس‌های IPv4 ساخته شده است.

IPv6 فضای آدرس بسیار بزرگ‌تری دارد.

مثال:

    2001:db8::1

امروزه بسیاری از شبکه‌ها از IPv6 نیز پشتیبانی می‌کنند.

---

# مشاهده IP در لینوکس

برای مشاهده اطلاعات شبکه:

    ip address

یا:

    ip addr

استفاده می‌کنیم.

این دستور اطلاعاتی مانند:

- آدرس IP
- کارت شبکه
- وضعیت اتصال

را نمایش می‌دهد.

---

# Network Interface چیست؟

Network Interface رابطی است که سیستم از طریق آن به شبکه متصل می‌شود.

نمونه‌ها:

کارت شبکه کابلی:

    eth0

کارت شبکه بی‌سیم:

    wlan0

برای مشاهده رابط‌های شبکه:

    ip link

استفاده می‌شود.

---

# MAC Address چیست؟

هر کارت شبکه یک شناسه سخت‌افزاری منحصر به فرد دارد.

این شناسه:

MAC Address

نام دارد.

مثال:

    00:1A:2B:3C:4D:5E

MAC در لایه سخت‌افزاری شبکه استفاده می‌شود.

---

# دستور ping

یکی از ساده‌ترین ابزارهای بررسی شبکه:

    ping

است.

مثال:

    ping google.com

ping بررسی می‌کند که آیا مقصد قابل دسترسی است یا خیر.

همچنین زمان پاسخ شبکه را نمایش می‌دهد.

---

# DNS چیست؟

انسان‌ها معمولاً نام‌ها را بهتر از اعداد به خاطر می‌سپارند.

به همین دلیل به جای وارد کردن IP، از نام دامنه استفاده می‌کنیم.

مثال:

    google.com

DNS وظیفه تبدیل نام دامنه به IP Address را بر عهده دارد.

DNS مخفف:

Domain Name System

است.

---

# بررسی DNS

برای مشاهده اطلاعات DNS:

    nslookup google.com

استفاده می‌شود.

ابزار حرفه‌ای‌تر:

    dig google.com

است.

---

# Port چیست؟

یک سیستم ممکن است چندین سرویس مختلف را هم‌زمان اجرا کند.

Port مشخص می‌کند هر درخواست مربوط به کدام سرویس است.

نمونه‌ها:

    HTTP  = 80

    HTTPS = 443

    SSH   = 22

---

# مشاهده پورت‌های فعال

برای مشاهده ارتباطات شبکه:

    ss

استفاده می‌شود.

مثال:

    ss -tuln

گزینه‌ها:

-t

نمایش TCP

-u

نمایش UDP

-l

نمایش پورت‌های در حال گوش دادن

-n

نمایش عددی اطلاعات

---

# TCP چیست؟

TCP یک پروتکل ارتباطی قابل اعتماد است.

ویژگی‌ها:

- بررسی دریافت اطلاعات
- ارسال مرتب داده‌ها
- مناسب ارتباط‌های حساس

استفاده‌ها:

- وب
- SSH
- ایمیل

---

# UDP چیست؟

UDP یک پروتکل سریع‌تر اما بدون تضمین دریافت است.

ویژگی‌ها:

- سرعت بالا
- تأخیر کمتر
- مناسب ارتباط‌های لحظه‌ای

استفاده‌ها:

- بازی آنلاین
- تماس صوتی
- پخش زنده

---

# HTTP و HTTPS

HTTP پروتکل انتقال اطلاعات در وب است.

پورت:

    80

HTTPS نسخه امن HTTP است.

پورت:

    443

HTTPS با استفاده از رمزنگاری، امنیت ارتباط را افزایش می‌دهد.

---

# SSH چیست؟

SSH مخفف:

Secure Shell

است.

SSH یکی از مهم‌ترین ابزارهای مدیریت سیستم‌های لینوکسی است.

با SSH می‌توان:

- به سرورهای راه دور متصل شد.
- دستورات اجرا کرد.
- فایل انتقال داد.
- سیستم را مدیریت کرد.

مثال:

    ssh username@server-ip

---

# انتقال فایل با SCP

برای انتقال فایل از طریق SSH:

    scp

استفاده می‌شود.

مثال:

    scp file.txt user@server:/home/user

---

# Traceroute چیست؟

Traceroute مسیر عبور بسته‌های شبکه را نمایش می‌دهد.

دستور:

    traceroute domain.com

این ابزار برای بررسی مشکلات شبکه بسیار کاربردی است.

---

# Firewall چیست؟

Firewall یک سیستم امنیتی برای کنترل ارتباطات شبکه است.

وظایف Firewall:

- اجازه دادن به ارتباطات مجاز
- جلوگیری از ارتباطات غیرمجاز
- افزایش امنیت سیستم

---

# UFW چیست؟

UFW مخفف:

Uncomplicated Firewall

است.

این ابزار مدیریت Firewall را ساده‌تر می‌کند.

---

# مشاهده وضعیت Firewall

    sudo ufw status

---

# فعال کردن Firewall

    sudo ufw enable

---

# باز کردن یک پورت

مثال:

    sudo ufw allow 22

این دستور اجازه اتصال SSH را فعال می‌کند.

---

# مثال واقعی شبکه در لینوکس

فرض کنید یک وب‌سرور لینوکسی دارید.

مراحل ارتباط:

1. کاربر دامنه را وارد می‌کند.
2. DNS دامنه را به IP تبدیل می‌کند.
3. درخواست به سرور ارسال می‌شود.
4. Firewall درخواست را بررسی می‌کند.
5. سرویس وب روی پورت 80 یا 443 پاسخ می‌دهد.
6. اطلاعات به کاربر بازگردانده می‌شود.

---

# اهمیت یادگیری شبکه در لینوکس

شبکه پایه بسیاری از مهارت‌های حرفه‌ای است.

بدون شناخت شبکه، یادگیری موضوعاتی مانند:

- مدیریت سرور
- امنیت سایبری
- DevOps
- Cloud
- زیرساخت

کامل نخواهد بود.

---

# تمرین‌های فصل نهم

## تمرین اول

مشاهده IP سیستم:

    ip addr

---

## تمرین دوم

بررسی اتصال شبکه:

    ping google.com

---

## تمرین سوم

مشاهده پورت‌های فعال:

    ss -tuln

---

## تمرین چهارم

بررسی DNS:

    nslookup google.com

---

## تمرین پنجم

بررسی Firewall:

    sudo ufw status

---

# جمع‌بندی فصل نهم

در این فصل یاد گرفتیم:

- شبکه چیست.
- IP چگونه کار می‌کند.
- تفاوت IPv4 و IPv6 چیست.
- DNS چه وظیفه‌ای دارد.
- Port چیست.
- TCP و UDP چه تفاوتی دارند.
- SSH چگونه کار می‌کند.
- چگونه وضعیت شبکه را بررسی کنیم.
- چگونه Firewall را مدیریت کنیم.

شبکه یکی از مهم‌ترین بخش‌های لینوکس است و پایه بسیاری از مهارت‌های پیشرفته مانند امنیت، سرور و زیرساخت محسوب می‌شود.
