رفتن به محتوا
مبانی کامپیوتر و اینترنتاینترنت چطور کار می‌کنددرس ۸ از ۱۶

شبکه و آدرس IP

شبکه و اینترنت چیست و هر دستگاه با چه آدرسی پیدا می‌شود: شبکه‌ی محلی، روتر و سوئیچ و Wi-Fi، آدرس IPv4 به‌عنوان چهار بایت، IPv6، IP خصوصی و عمومی و NAT، آدرس 127.0.0.1، معنی ‎/24 و ماسک شبکه، دروازه‌ی پیش‌فرض، و دیدن IP و مسیر با ip و ping.

  • حدود ۲۱ دقیقه مطالعه
  • ۷ مثال اجراشده
  • ۳ تمرین با جواب
  • مقدماتی (از صفر مطلق)
  • به‌روزرسانی: ۲۹ مهر ۱۴۰۵

توی این درس یاد می‌گیری شبکه چیست و پیام تو چطور از لپ‌تاپت به کامپیوتری در آن سر دنیا می‌رسد. با شبکه‌ی محلی (خانه یا اداره)، روتر و اینترنت آشنا می‌شوی، می‌فهمی آدرس IP چیست و چرا همان چهار بایتی است که در درس بیت و بایت دیدی، فرق IP خصوصی (مثل 192.168.1.20) و IP عمومی را می‌فهمی، با آدرس خاص 127.0.0.1 آشنا می‌شوی و IP و مسیر کامپیوتر خودت را با دستورهای ip و ping می‌بینی.

مسئله: پیام از کجا می‌داند کجا برود؟

Section titled “مسئله: پیام از کجا می‌داند کجا برود؟”

وقتی در تلگرام پیامی می‌فرستی، یا آدرس سایتی را در مرورگر می‌زنی، داده از کامپیوتر تو بیرون می‌رود و چند میلی‌ثانیه بعد به کامپیوتری می‌رسد که شاید هزاران کیلومتر دورتر است. در میانه‌ی راه ده‌ها دستگاه هستند که هیچ‌کدام تو را نمی‌شناسند. هر کدام از کجا می‌دانند داده را به کدام طرف بفرستند؟ جواب کوتاه: آدرس. همان‌طور که نامه بدون آدرس به مقصد نمی‌رسد، هر دستگاه در شبکه هم یک آدرس دارد: آدرس IP.

همه‌ی کارهای بعدی تو، از وصل شدن به سرور با SSH تا راه انداختن سایت و دیتابیس، روی همین پایه بنا می‌شوند. وقتی چیزی «وصل نمی‌شود»، اولین سؤال همیشه این است: «آدرس درست است؟ مسیر باز است؟».

تشبیه: نامه و اداره‌ی پست

Section titled “تشبیه: نامه و اداره‌ی پست”

شبکه را مثل سیستم پست تصور کن:

  • آدرس IP همان آدرس پستی است: هر خانه (دستگاه) یک آدرس یکتا دارد.
  • شبکه‌ی محلی مثل یک مجتمع آپارتمانی است: آپارتمان‌ها (لپ‌تاپ، گوشی، تلویزیون) داخل مجتمع مستقیم به هم نامه می‌دهند.
  • روتر مثل نگهبانی مجتمع است: هر نامه‌ای که مقصدش بیرون از مجتمع باشد، به نگهبانی داده می‌شود تا به اداره‌ی پست (اینترنت) برسد.
  • اینترنت شبکه‌ی اداره‌های پست است که به هم وصل‌اند و هر کدام فقط می‌داند نامه را به کدام اداره‌ی بعدی بدهد تا نزدیک‌تر شود.

هیچ اداره‌ی پستی کل نقشه‌ی دنیا را ندارد؛ هر کدام فقط «قدم بعدی» را می‌داند. اینترنت هم دقیقاً همین‌طور کار می‌کند.

مسیر یک پیام از لپ‌تاپ خانه تا سرور یک سایت: داخل خانه از طریق Wi-Fi به روتر، از روتر به شرکت اینترنت (ISP) و بعد از چند روتر اینترنت تا مقصد.
قطعه کار مثال
کارت شبکه دستگاه را به شبکه وصل می‌کند؛ هر کدام یک آدرس سخت‌افزاری (MAC) دارد کارت Wi-Fi لپ‌تاپ، پورت LAN
سوئیچ چند دستگاه را در یک شبکه‌ی محلی به هم وصل می‌کند جعبه‌ی ۸ پورت در اداره
Access Point / Wi-Fi همان سوئیچ، بی‌سیم آنتن Wi-Fi
روتر بین دو شبکه پل می‌زند (مثلاً خانه و اینترنت) مودم/روتر خانگی
ISP شرکتی که تو را به اینترنت وصل می‌کند شرکت ارائه‌دهنده‌ی اینترنت

مودم‌های خانگی معمولاً همه‌ی این‌ها را با هم دارند: روتر، سوئیچ چند پورت و Wi-Fi در یک جعبه.

  • شبکه‌ی محلی (LAN): دستگاه‌هایی که در یک خانه یا اداره مستقیم به هم وصل‌اند.
  • اینترنت: «شبکه‌ی شبکه‌ها»؛ میلیون‌ها شبکه‌ی محلی که با روترها به هم وصل شده‌اند.

آدرس رایج امروز، IPv4، شبیه این است: 192.168.1.20. چهار عدد که با نقطه جدا شده‌اند و هر کدام بین ۰ تا ۲۵۵ است. چرا ۲۵۵؟ درس بیت و بایت را یادت هست: هر عدد دقیقاً یک بایت (۸ بیت) است و یک بایت از ۰ تا ۲۵۵ را نگه می‌دارد. پس آدرس IPv4 یعنی ۴ بایت = ۳۲ بیت.

IPv4 فقط ۳۲ بیت است که برای خوانا بودن، هر ۸ بیتش را به‌صورت یک عدد ده‌دهی نوشته‌اند.

با ۳۲ بیت حداکثر 232 یعنی حدود ۴٫۳ میلیارد آدرس می‌شود ساخت، که برای همه‌ی گوشی‌ها و کامپیوترها و دوربین‌های دنیا کم است. دو راه‌حل پیدا شده: IPv6 (آدرس‌های ۱۲۸ بیتی، مثل 2001:db8::1؛ آن‌قدر زیاد که هرگز تمام نمی‌شوند) و IP خصوصی و NAT که پایین‌تر می‌بینی. هنوز بیشتر کارهای روزمره با IPv4 است و این دوره هم بیشتر با آن کار می‌کند.

لازم نیست دستورها را حفظ کنی؛ در دوره‌ی لینوکس مفصل یاد می‌گیری. بعضی خروجی‌ها روی هر شبکه فرق می‌کنند و برچسب «نمونه» دارند؛ به شکل خروجی دقت کن.

مثال ۱: IP کامپیوتر خودم چیست؟

Section titled “مثال ۱: IP کامپیوتر خودم چیست؟”
Terminal window
ip -br addr
نمونه
lo UNKNOWN 127.0.0.1/8 ::1/128
enp0s3 UP 192.168.1.20/24 fe80::a00:27ff:fe4e:66a1/64

ip ابزار شبکه‌ی لینوکس است، addr یعنی «آدرس‌ها را نشان بده» و -br (brief) یعنی خلاصه. هر خط یک کارت شبکه (interface) است:

  • lo: کارت شبکه‌ی مجازی که فقط به خود همین کامپیوتر وصل است، با آدرس 127.0.0.1 (مثال ۴).
  • enp0s3: کارت شبکه‌ی واقعی (اسمش روی هر سیستم فرق می‌کند: eth0، ens3، wlan0 برای Wi-Fi). وضعیتش UP (روشن و وصل) است و آدرس IPv4 آن 192.168.1.20 است.
  • ‎/24 بعد از آدرس اندازه‌ی شبکه را می‌گوید (مثال ۳).
  • آدرس طولانی با fe80:: یک آدرس IPv6 است که فقط داخل همین شبکه‌ی محلی کار می‌کند.

روی WSL یا Multipass احتمالاً آدرسی مثل 172.x.x.x یا 10.x.x.x می‌بینی: آن‌ها یک شبکه‌ی کوچک مجازی بین ویندوز/مک و لینوکس می‌سازند. اشکالی ندارد.

مثال ۲: IP خصوصی یا عمومی؟

Section titled “مثال ۲: IP خصوصی یا عمومی؟”

همه‌ی آدرس‌ها مثل هم نیستند. سه بازه برای شبکه‌های محلی کنار گذاشته شده‌اند و در اینترنت عمومی هرگز دیده نمی‌شوند:

بازه شکل رایج کجا می‌بینی
10.0.0.0 تا 10.255.255.255 10.x.x.x شبکه‌ی شرکت‌ها، ابر
172.16.0.0 تا 172.31.255.255 172.16.x.x تا 172.31.x.x داکر، WSL، بعضی شرکت‌ها
192.168.0.0 تا 192.168.255.255 192.168.x.x تقریباً همه‌ی مودم‌های خانگی

بقیه‌ی آدرس‌ها (تقریباً) عمومی هستند. پایتون یک کتابخانه‌ی آماده برای این کار دارد. این یک خط پایتون است؛ فعلاً فقط اجرایش کن (دوره‌ی پایتون را بعداً می‌خوانی):

Terminal window
python3 -c "
import ipaddress
for a in ['192.168.1.20', '10.0.0.5', '172.20.3.4', '8.8.8.8', '1.1.1.1', '127.0.0.1']:
ip = ipaddress.ip_address(a)
print(a, 'private' if ip.is_private else 'public')
"
خروجی
192.168.1.20 private
10.0.0.5 private
172.20.3.4 private
8.8.8.8 public
1.1.1.1 public
127.0.0.1 private

8.8.8.8 (DNS گوگل) و 1.1.1.1 (DNS کلودفلر) عمومی‌اند و از هر جای اینترنت قابل‌دسترسی‌اند. 192.168.1.20 در میلیون‌ها خانه هم‌زمان وجود دارد، و هیچ مشکلی هم پیش نمی‌آید، چون هر کدام فقط داخل شبکه‌ی خودش معنی دارد. درست مثل «واحد ۳» که در هر مجتمعی هست.

192.168.1.20/24 یعنی: «۲۴ بیت اول آدرس، اسم شبکه است و ۸ بیت آخر، شماره‌ی دستگاه داخل شبکه». ۲۴ بیت یعنی سه عدد اول (192.168.1). پس همه‌ی دستگاه‌هایی که با 192.168.1. شروع می‌شوند در یک شبکه‌اند و مستقیم به هم دسترسی دارند:

Terminal window
python3 -c "
import ipaddress
net = ipaddress.ip_network('192.168.1.0/24')
print('addresses:', net.num_addresses)
print('netmask:', net.netmask)
print('first device:', net[1], ' last device:', net[-2])
print('192.168.1.20 inside?', ipaddress.ip_address('192.168.1.20') in net)
print('192.168.2.20 inside?', ipaddress.ip_address('192.168.2.20') in net)
"
خروجی
addresses: 256
netmask: 255.255.255.0
first device: 192.168.1.1 last device: 192.168.1.254
192.168.1.20 inside? True
192.168.2.20 inside? False

۸ بیت آخر = 28 = ۲۵۶ آدرس. 255.255.255.0 (ماسک شبکه) همان ‎/24 به زبان قدیمی‌تر است: ۲۵۵ یعنی «این بایت مال شبکه است»، ۰ یعنی «این بایت مال دستگاه است». آدرس اول (.0) اسم خود شبکه و آدرس آخر (.255) برای «همه» (broadcast) رزرو است؛ پس ۲۵۴ دستگاه جا می‌شوند. 192.168.2.20 در شبکه‌ی دیگری است و برای رسیدن به آن باید از روتر رد شد.

نوشتار ماسک تعداد آدرس کاربرد رایج
/8 255.0.0.0 ۱۶ میلیون شبکه‌ی خیلی بزرگ (10.0.0.0/8)
/16 255.255.0.0 ۶۵٬۵۳۶ شبکه‌ی یک شرکت
/24 255.255.255.0 ۲۵۶ خانه، یک طبقه‌ی اداره
/32 255.255.255.255 ۱ فقط یک آدرس (در قانون‌های فایروال)

مثال ۴: 127.0.0.1، خود همین کامپیوتر

Section titled “مثال ۴: 127.0.0.1، خود همین کامپیوتر”
Terminal window
getent hosts localhost
خروجی
127.0.0.1 localhost

127.0.0.1 (اسمش localhost) یعنی «خودم». داده‌ای که به این آدرس فرستاده شود اصلاً از کامپیوتر بیرون نمی‌رود؛ از کارت شبکه‌ی مجازی lo برمی‌گردد. برای آزمایش خیلی به درد می‌خورد: در درس کلاینت و سرور یک وب‌سرور روی کامپیوتر خودت راه می‌اندازی و با localhost به آن وصل می‌شوی، بدون نیاز به اینترنت. (getent hosts اسم را به آدرس تبدیل می‌کند؛ در درس DNS بیشتر می‌بینی.)

⚡ بررسی سریع

همکارت می‌گوید «وب‌سرورم روی 127.0.0.1 گوش می‌دهد، از لپ‌تاپت بازش کن». با مرورگر لپ‌تاپ خودت به 127.0.0.1 بروی چه می‌بینی؟

مثال ۵: دروازه‌ی پیش‌فرض، راه بیرون

Section titled “مثال ۵: دروازه‌ی پیش‌فرض، راه بیرون”

کامپیوتر از کجا می‌داند داده‌ی مقصد بیرون از شبکه را به چه کسی بدهد؟

Terminal window
ip route
نمونه
default via 192.168.1.1 dev enp0s3 proto dhcp src 192.168.1.20 metric 100
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.20 metric 100

دو قانون، از پایین به بالا بخوان:

  • 192.168.1.0/24 dev enp0s3: «هر آدرسی در شبکه‌ی خودم را مستقیم از کارت enp0s3 بفرست» (مثل نامه به همسایه‌ی همان مجتمع).
  • default via 192.168.1.1: «برای هر مقصد دیگری، بده به 192.168.1.1». این همان روتر است که به آن دروازه‌ی پیش‌فرض (default gateway) می‌گویند (نگهبانی مجتمع).

proto dhcp یعنی این تنظیم‌ها را کسی دستی ننوشته: روتر خانه با DHCP وقتی وصل شدی خودکار به کامپیوترت IP و دروازه داده. برای همین روی گوشی و لپ‌تاپ هیچ‌وقت IP را دستی وارد نمی‌کنی. (روی سرورها معمولاً IP ثابت و دستی است، تا آدرسش عوض نشود.)

Terminal window
ping -c 3 192.168.1.1
ping -c 3 8.8.8.8
نمونه
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.84 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=2.11 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.95 ms
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.840/1.966/2.110/0.110 ms
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=48.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=115 time=47.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=115 time=51.2 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 47.900/49.133/51.200/1.473 ms

ping یک پیام کوچک می‌فرستد و می‌گوید «اگر هستی جواب بده». -c 3 یعنی سه بار (بدون آن، تا Ctrl+C ادامه می‌دهد). time زمان رفت‌وبرگشت است: روتر خانه ۲ میلی‌ثانیه، سرور گوگل ۴۸ میلی‌ثانیه (چون دورتر است و از روترهای بیشتری رد می‌شود). 0% packet loss یعنی همه‌ی پیام‌ها برگشتند.

ping یک ابزار تشخیص ساده و قدرتمند است. اگر اینترنت «قطع» است، به ترتیب ping بزن:

  1. ping 192.168.1.1 (روتر) جواب نمی‌دهد؟ مشکل از Wi-Fi یا کابل خودت است.
  2. روتر جواب می‌دهد ولی ping 8.8.8.8 نه؟ مشکل از روتر یا ISP است.
  3. هر دو جواب می‌دهند ولی سایت‌ها باز نمی‌شوند؟ احتمالاً مشکل از DNS است (درس DNS).

(بعضی سرورها عمداً به ping جواب نمی‌دهند؛ «جواب نداد» همیشه یعنی «خاموش است» نیست.)

مثال ۷: IP عمومی من چیست؟

Section titled “مثال ۷: IP عمومی من چیست؟”

ip addr آدرس خصوصی را نشان داد. ولی سایت‌هایی که بازدید می‌کنی آدرس دیگری از تو می‌بینند:

Terminal window
curl -s https://ifconfig.me; echo
نمونه
203.0.113.47

(curl یک صفحه‌ی وب را می‌گیرد و روی ترمینال چاپ می‌کند؛ درس HTTP. echo فقط یک خط جدید اضافه می‌کند.) این IP عمومی توست که ISP به روتر خانه داده. همه‌ی دستگاه‌های خانه (لپ‌تاپ، گوشی، تلویزیون) با همین یک آدرس عمومی به اینترنت می‌روند. چطور؟ با NAT (پشت پرده).

پشت پرده: NAT، یک آدرس عمومی برای همه‌ی خانه

Section titled “پشت پرده: NAT، یک آدرس عمومی برای همه‌ی خانه”

روتر خانه دو آدرس دارد: یک IP خصوصی رو به داخل (192.168.1.1) و یک IP عمومی رو به اینترنت (203.0.113.47). وقتی لپ‌تاپ (192.168.1.20) درخواستی به یک سایت می‌فرستد، روتر آدرس فرستنده را با آدرس عمومی خودش عوض می‌کند و در یک جدول یادداشت می‌کند «این درخواست مال لپ‌تاپ بود». جواب سایت به آدرس عمومی روتر برمی‌گردد و روتر با نگاه به جدول، آن را به لپ‌تاپ تحویل می‌دهد. به این NAT (Network Address Translation، ترجمه‌ی آدرس شبکه) می‌گویند.

دو نتیجه‌ی مهم:

  • از بیرون نمی‌شود مستقیم به لپ‌تاپ وصل شد. کسی در اینترنت فقط آدرس روتر را می‌بیند و روتر نمی‌داند درخواستی که «از بیرون شروع شده» مال کدام دستگاه است، پس دورش می‌اندازد. این هم یک نوع محافظت است و هم دلیل اینکه سرورها را معمولاً در دیتاسنتر با IP عمومی می‌گذارند، نه پشت مودم خانه (درس سرور و ابر).
  • IP عمومی تو ممکن است عوض شود و حتی با همسایه‌ها یا کل محله مشترک باشد (ISPها هم گاهی NAT می‌کنند). برای همین هیچ‌وقت چیزی را به «IP خانه‌ات» گره نزن.
IP خصوصی فقط داخل یک شبکه معنی دارد و می‌تواند در میلیون‌ها خانه تکرار شود؛ IP عمومی در کل اینترنت یکتاست.
اصطلاح معنی ساده
IP آدرس یک دستگاه در شبکه
IPv4 آدرس ۳۲ بیتی، چهار عدد ۰ تا ۲۵۵
IPv6 آدرس ۱۲۸ بیتی، مثل 2001:db8::1
MAC آدرس سخت‌افزاری کارت شبکه (فقط داخل شبکه‌ی محلی)
‎/24، netmask چه بخشی از آدرس اسم شبکه است
gateway روتری که راه بیرون از شبکه است
DHCP دادن خودکار IP به دستگاه‌ها
NAT یک IP عمومی برای چند دستگاه خصوصی
localhost 127.0.0.1؛ خود همین کامپیوتر
دستور کار
ip -br addr IPهای این کامپیوتر
ip route جدول مسیر و دروازه‌ی پیش‌فرض
ping -c 3 آدرس آیا مقصد جواب می‌دهد و چقدر طول می‌کشد
curl -s https://ifconfig.me IP عمومی

۱) دادن IP خصوصی به کسی بیرون از شبکه

Section titled “۱) دادن IP خصوصی به کسی بیرون از شبکه”

«به 192.168.1.50 وصل شو» فقط داخل همان شبکه کار می‌کند. راه‌حل: اول بپرس آدرس خصوصی است یا عمومی (مثال ۲)؛ از بیرون، آدرس عمومی یا VPN لازم است.

۲) قاطی کردن IP لپ‌تاپ و IP عمومی

Section titled “۲) قاطی کردن IP لپ‌تاپ و IP عمومی”

ip addr آدرس داخل خانه را می‌دهد؛ سایت‌ها آدرس روتر را می‌بینند. راه‌حل: برای آدرسی که «دنیا می‌بیند» از ifconfig.me یا مشابهش استفاده کن.

۳) 127.0.0.1 روی دو کامپیوتر

Section titled “۳) 127.0.0.1 روی دو کامپیوتر”

localhost روی هر دستگاه یعنی خود آن دستگاه. برنامه‌ای که فقط روی 127.0.0.1 گوش می‌دهد، از کامپیوتر دیگر دیده نمی‌شود (درس پورت).

۴) نتیجه‌گیری عجولانه از ping

Section titled “۴) نتیجه‌گیری عجولانه از ping”

«ping جواب نداد پس سرور خاموش است» همیشه درست نیست؛ خیلی از سرورها و فایروال‌ها ping را می‌بندند. راه‌حل: ping نشانه است، نه حکم؛ بعد سرویس مورد نظر را مستقیم امتحان کن (مثلاً با curl).

192.168.1.300 آدرس معتبر نیست؛ هر بخش یک بایت است. اگر جایی چنین آدرسی دیدی، غلط تایپی است.

تمرینآسان

بدون اجرای دستور بگو هر کدام خصوصی است یا عمومی، بعد با همان دستور پایتون مثال ۲ بررسی کن: 172.16.0.10، 172.32.0.10، 10.200.5.1، 192.169.1.1.

دیدن جواب
Terminal window
python3 -c "
import ipaddress
for a in ['172.16.0.10', '172.32.0.10', '10.200.5.1', '192.169.1.1']:
ip = ipaddress.ip_address(a)
print(a, 'private' if ip.is_private else 'public')
"
خروجی
172.16.0.10 private
172.32.0.10 public
10.200.5.1 private
192.169.1.1 public

تله‌ها: بازه‌ی 172 فقط از 172.16 تا 172.31 خصوصی است، پس 172.32 عمومی است. 192.169 هم با 192.168 فرق دارد. شبیه بودن کافی نیست؛ بازه دقیق است.

تمرینمتوسط

IP و دروازه‌ی پیش‌فرض کامپیوتر خودت را پیدا کن. بعد با ping سه چیز را امتحان کن: خودت (127.0.0.1)، دروازه، و 8.8.8.8. زمان‌ها را مقایسه کن و توضیح بده چرا این ترتیب را دارند.

دیدن جواب
Terminal window
ip -br addr
ip route
ping -c 3 127.0.0.1
ping -c 3 192.168.1.1 # آدرس default via خودت را بگذار
ping -c 3 8.8.8.8
نمونه (خط‌های آخر هر ping)
rtt min/avg/max/mdev = 0.031/0.042/0.055/0.010 ms
rtt min/avg/max/mdev = 1.840/1.966/2.110/0.110 ms
rtt min/avg/max/mdev = 47.900/49.133/51.200/1.473 ms

127.0.0.1 در حد چند صدم میلی‌ثانیه است، چون داده اصلاً از کامپیوتر بیرون نمی‌رود. دروازه چند میلی‌ثانیه (رفت و برگشت روی Wi-Fi یا کابل). 8.8.8.8 ده‌ها میلی‌ثانیه، چون باید از ISP و چند روتر اینترنت رد شود. اگر داخل WSL یا Multipass هستی، دروازه کامپیوتر اصلی (ویندوز یا مک) است، نه مودم خانه، و زمانش کمتر از یک میلی‌ثانیه است.

تمرینسخت

یک شرکت شبکه‌ی 10.20.0.0/16 دارد و می‌خواهد آن را بین طبقه‌ها تقسیم کند: هر طبقه یک ‎/24. با پایتون حساب کن: (۱) کل شبکه چند آدرس دارد، (۲) چند ‎/24 در آن جا می‌شود، (۳) شبکه‌ی طبقه‌ی سوم (اگر طبقه‌ی اول 10.20.0.0/24 باشد) چیست و (۴) آیا 10.20.2.77 در طبقه‌ی سوم است؟

دیدن جواب
Terminal window
python3 -c "
import ipaddress
big = ipaddress.ip_network('10.20.0.0/16')
floors = list(big.subnets(new_prefix=24))
print('addresses:', big.num_addresses)
print('floors (/24):', len(floors))
print('floor 3:', floors[2])
print('10.20.2.77 on floor 3?', ipaddress.ip_address('10.20.2.77') in floors[2])
"
خروجی
addresses: 65536
floors (/24): 256
floor 3: 10.20.2.0/24
10.20.2.77 on floor 3? True

‎/16 یعنی ۱۶ بیت برای دستگاه‌ها: 216 = ۶۵٬۵۳۶. هر ‎/24 هشت بیت از آن ۱۶ بیت را برمی‌دارد، پس 28 = ۲۵۶ طبقه جا می‌شود. شمارش از صفر شروع می‌شود: طبقه‌ی اول 10.20.0.0/24، دوم 10.20.1.0/24، سوم 10.20.2.0/24. به این تقسیم شبکه‌ی بزرگ به کوچک‌ترها subnetting می‌گویند و در طراحی شبکه‌ی ابر و سرورها مدام با آن سروکار داری.

آزمونک
  1. چرا هر عدد در IPv4 بین ۰ تا ۲۵۵ است؟

  2. کدام آدرس خصوصی است؟

  3. 127.0.0.1 یعنی…

  4. در 192.168.1.20/24 کدام بخش اسم شبکه است؟

  5. دروازه‌ی پیش‌فرض (default gateway) چیست؟

  6. چرا از اینترنت نمی‌شود مستقیم به لپ‌تاپ پشت مودم خانه وصل شد؟

  • شبکه یعنی دستگاه‌هایی که به هم وصل‌اند؛ اینترنت شبکه‌ی شبکه‌هاست و روترها بینشان پل می‌زنند.
  • هر دستگاه یک آدرس IP دارد؛ IPv4 چهار بایت است (192.168.1.20)، IPv6 شانزده بایت.
  • خصوصی (192.168، 10، 172.16-31) فقط داخل شبکه؛ عمومی در کل اینترنت. NAT یک IP عمومی را بین دستگاه‌های خانه تقسیم می‌کند.
  • ‎/24 یعنی سه عدد اول اسم شبکه است؛ دستگاه‌های یک شبکه مستقیم به هم می‌رسند، بقیه از دروازه (روتر).
  • 127.0.0.1 یعنی خودم.
  • ip -br addr، ip route و ping اولین ابزارهای تشخیص مشکل شبکه‌اند.
برگه‌ی تقلب این درس
دستورکاری که می‌کند
ip -br addrIPهای این کامپیوتر
ip routeدروازه‌ی پیش‌فرض و مسیرها
ping -c 3 192.168.1.1آزمایش رسیدن به مقصد
curl -s https://ifconfig.meIP عمومی
getent hosts localhostآدرس localhost
192.168.x.x / 10.x.x.x / 172.16-31.x.xبازه‌های خصوصی
/24 = 255.255.255.0۲۵۶ آدرس
127.0.0.1خود همین کامپیوتر