ویرگول
ورودثبت نام
امیرحسین ناظوری
امیرحسین ناظوری📕 عاشق یادگیری و به اشتراک‌گذاری دانش -- آیدی من تو شبکه های اجتماعی : mrNazouri13
امیرحسین ناظوری
امیرحسین ناظوری
خواندن ۱۹ دقیقه·۲ ماه پیش

سیر تا پیاز IP یا Internet Protoco

ویدیو مربوط به این مقاله: (کلیک کن)

قبل اینکه اینترنت شکل بگیره، کامپیوترها فقط توی شبکه‌های LAN بودن. مثلا چند تا کامپیوتر با کابل به هم وصل می‌شدن و داده جابه‌جا می‌کردن (به واسطه MAC Address).
وقتی خواستیم شبکه‌ها رو بهم وصل کنیم (یعنی LANهای مختلف به هم وصل بشن و شبکه بزرگ بشه) یه مشکل بزرگ پیش اومد؟!
توی هر شبکه محلی، دستگاه‌ها با MAC Address همدیگه رو میشناسن. ولی MAC فقط تو همون شبکه جواب میده. چون MAC یه آدرس سخت‌افزاریه و ساختارش برای مسیر‌یابی بین شبکه‌های مختلف طراحی نشده.
اینجا بود که گفتن ما نیاز به یه آدرس منطقی داریم، نه فقط سخت‌افزاری. آدرسی که بشه باهاش مسیر داده رو از شبکه‌ای به شبکه دیگه مشخص کرد.
نتیجه چی شد؟ ساخت پروتکل IP یا Internet Protocol.


قبلا راجب TCP/IP صحبت کردیم. گفتیم TCP/IP یه مجموعه پروتکله. TCP/IP دو بخش داره:
TCP (Transmission Control Protocol): مسئول اینه که مطمئن بشه داده‌ها درست و به ترتیب به مقصد می‌رسن.
IP (Internet Protocol): مسئول آدرس‌دهی و فرستادن بسته‌های داده (Packet) به مقصد درست.
IP مثل پستچی اینترنت شد که می‌دونه هر بسته باید به کدوم آدرس بره. بدون IP، داده‌ها تو شبکه گم می‌شدن، چون هیچ راهی برای پیدا کردن مقصد نبود.
IP تو لایه Internet از TCP/IP قرار داره.


نتیجه گیری (تا الان):
MAC Address برای مسیریابی در بیرون از شبکه های LAN مناسب نیست. دلیلش:
MAC Addressها بر اساس سازنده مرتب شدن، نه موقعیت جغرافیایی. دستگاه‌های یه شرکت می‌تونن در سراسر جهان پخش باشن.
اگه روترهای اینترنت بخوان بر اساس MAC Address مسیریابی کنن، باید جدولی از میلیاردها MAC Address داشته باشن که عملا غیرممکنه.
پس نیاز به یک آدرس‌دهی جدید بود! یک آدرس منطقی (نه فیزیکی).
یک آدرس سلسله‌مراتبی (مثل سیستم کدپستی) تا بتونه مسیریابی رو ساده کنه.
یک آدرس که قابل تغییر باشه (برخلاف MAC Address).
این نیاز، منجر به ایجاد Internet Protocol (IP) شد.


نسخه های مختلف IP:
پروتکل IP دو نسخه داره: IPv4 و IPv6
IPv4:
قدیمی‌ترین و پرکاربردترین نسخه.
آدرس‌هاش 32 بیتیه. چیزی مثل: 192.168.1.1.
تقریبا 4 میلیارد آدرس میده.
مشکل: کمبود آدرس (چون دستگاه‌ها زیاد شدن).
این نسخه به 4 قسمت 8 بیتی تقسیم میشه که به هر قسمت Octet گفته میشه (قسمت ها با . از هم جدا میشن)
هر Octet میتونه عددی بین 0 تا 255 باشه.
IPv6:
ساخته شد که مشکل کمبود آدرس حل بشه.
128 بیتیه. چیزی مثل:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
تعداد آدرس‌هاش تقریبا بی‌نهایت.
هنوز بصورت کامل جایگزین IPv4 نشده، ولی داره کم‌کم بیشتر میشه.
(تو این آموزش روی IPv4 وقت میزاریم)


ساختار IP به چه شکله؟
هر بسته IP یه هدر (Header) داره که این اطلاعات مهم رو نگه می‌داره:
آدرس IP مبدا (Source IP)
آدرس IP مقصد (Destination IP)
ورژن IP (IPv4 یا IPv6)
TTL (Time To Live - تا چند تا روتر می‌تونه عبور کنه)
نوع Protocol (مثلا TCP یا UDP یا ICMP)


(من از این مقاله یک ویدیو داخل یوتیوبم قرار دادم، حتما اون ویدیو رو مشاهده کنید چون بصورت خیلی کامل‌تر تمام این مفاهیم بررسی میشه)


برای درک بهتر مفاهیم بعدی، نیاز هست با مثال های متنوع جلو بریم.
پلاک خونه‌ی من 13 عه. به دوستم زنگ میزنم، آدرس خونش رو میپرسم، آدرس رو بهم میده و در آخر میگه پلاک خونش 13 هست!! چطور ممکنه؟ یعنی هم پلاک خونه من 13عه و هم خونه دوستم؟ خب چرا شهرداری نمیاد پلاک تمام خونه هارو یکتا کنه؟
شما تصور کن شهرداری میخواست پلاک تمام خونه ها یکتا باشه، یعنی از خونه 1 شروع میکرد و هیچ خونه‌ی دیگه‌ایی تو اصفهان حق نداشت پلاک 1 داشته باشه! همینطور که متوجه شدید این مورد اصلا امکان پذیر نیست.
چیکار کردن؟ گفتن هر کوچه یک رنج از پلاک هارو داره که فقط مختص همون کوچست! یعنی چی؟
تو اصفهان یه خیابون هست به اسم احمدآباد. تو این خیابون یه کوچه هست به اسم طاهری، تو کوچه طاهری خونه اول پلاک 1 رو داره، خونه دوم پلاک 2 رو داره تاااا آخر.
حالا از کوچه طاهری بیرون میایم و میریم کوچه بعدی که تو خیابون احمدآباده و اسمش شهید محمدیه.
تو این کوچه هم شماره پلاک ها دوباره از 1 شروع میشن تاااا آخر.
شما هیچوقت نمیتونی دوتا خونه با پلاک مشابه رو تو یک کوچه پیدا کنی. هر کوچه محدوده خاص خودش رو داره و پلاک خونه های اون کوچه ها، فقط تو همون کوچه معتبره. مثال میزنم!
فرض کن بخوام آدرس خونم رو بدم! میگم: اصفهان. پلاک 5
این آدرس کلا نامعتبره. البته درست نوشتم، خونه من پلاکش 5عه ولی پلاک خونم، فقط تو کوچه معتبره. پس من باید آدرس کامل رو تا کوچه بنویسم، و بگم توی فلان کوچه، پلاک 5 هستم. اینجا پلاک معنی پیدا میکنه چون مشخص شده تو کدوم محدوده/کوچه قرار داره. درنتیجه: اصفهان، خیابون احمدآباد، کوچه شهید محمدی، پلاک 5.

تمام این موارد گفته شد، تا موضوع Public IP و Private IP رو درک کنید.
Public IP: آدرسی که تو کل اینترنت منحصر به فرده و دستگاه های دیگه میتونن با این آدرس با کامپیوتر هدف ارتباط برقرار کنن. برای مثال، ایران هیچ استانیش با استان دیگش اسم یکسانی نداره، مثلا استان اصفهان رو داریم، یا مازندران یا... اما، تو هر استان ممکنه محله هایی باشه با اسم یکسان! مثل محله همت‌خان تو اصفهان و محله همت‌خان تو مازندران (مثال زدم) Public IP مثل اسم استانه که همیشه منحصر به فرده و اسم‌ محله ها Private IP میشن، یعنی آدرس هایی که بعد از یک آدرس عمومی قرار دارن.
Public IP توسط IANA (یه سازمان جهانی که مدیریت آدرس‌های IP رو بر عهده داره) و از طریق ارائه‌دهنده‌های اینترنت (ISP) مثل ایرانسل یا مخابرات به دستگاه‌ها یا شبکه‌ها اختصاص داده میشه.
قبلا گفته شد، IPv4 فقط حدود 4.3 میلیارد آدرس منحصربه‌فرد داره. حالا تصور کن:
یه شرکت بزرگ با 1000 کارمند، اگه بخواد به هر کامپیوتر یه آدرس IP عمومی اختصاص بده، باید 1000 آدرس IP از ISP بگیره. این کار هم بسیار گرون تموم میشه، هم غیرعملی بود.
همینطور برای خونه‌ها، اگه چند تا دستگاه (لپ‌تاپ، موبایل، کنسول بازی و...) داشته باشی، نیاز به چند تا آدرس IP عمومی داشتی که در نتیجه خیلی سریع آدرس‌ها تموم می‌شد.
درنهایت مشکل، کمبود آدرس IP عمومی (IPv4) بود.
چطوری مشکل رو برطرف کردن؟ با Private IP.

با Public IP ها آشنا شدید، آدرس های عمومی از IP ها که تو سطح اینترنت یکتا هستن! مثلا سرور گوگل یک آدرس Public داره که هرکسی میتونه بهش درخواست بزنه، حالا تصور کن یه سرور دیگه هم همین آدرس IP رو داشته باشه، اینجا به خطا میخوریم.
Private IPها آدرس هایی هستن که تو سطح شبکه های محلی وجود دارن و تو سطح اینترنت شناخته شده نیستن.
فرض کن من 3 تا دستگاه مثل لپ‌تاپ، موبایل و تلوزیون دارم که همشون وصلن به مودم اینترنتم. وقتی من تو شرکت مخابرات ثبت نام میکنم و اینترنت میخرم، اونها یک آدرس IP Public رو دراختیارم قرار میدن تا از طریقش بتونم وارد شبکه اینترنت بشم. تا اینجا من یک عدد IP Public دارم و 3 تا دستگاه.
مودم میاد IP Public رو از مخابرات تحویل میگیره و پیش خودش نگه میداره. از طرفی میاد به 3 تا دستگاهی که بهش وصلن، IP خصوصی (Private) میده. حالا هر موقع، هر کدوم از دستگاه‌ها بخوان به اینترنت متصل بشن و چیزی رو ارسال/دریافت کنن، مودم میاد IP خصوصی رو از دستگاه میگیره، موقتا بهش IP عمومی رو میده تا بره تو اینترنت و برگرده و در آخر دوباره IP عمومی رو ازش میگیره. با این ترفند میشه یک IP Public رو در اختیار چندین دستگاه قرار بدیم که نخوایم هزینه کنیم و بریم برای هرکدوم یک Public IP تهیه کنیم.
یکم بالاتر گفته شد که مودم، آدرس های IP خصوصی رو بین دستگاه های متصل بهش (داخل LAN) پخش میکنه! سوالی که به وجود میاد اینه که مودم چطور IP های Private رو تشخیص میده؟
همون اوایل که استاندارد یا پروتکل IP ساخته شد، اومدن چند تا رنج از IP رو مشخص کردن و گفتن این رنج ها تو دنیای اینترنت (Public) هیچ وقت استفاده نخواهد شد، درنتیجه این رنج هارو برای شبکه های محلی میتونید تنظیم کنید.
یه سوال! رنج یعنی چه؟ فرضا میگم رنج 5 تا 25 رو میخوام، خروجی:

5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25

حالا وقتی میگم از رنج آیپی 10.0.0.0 تا مثلا 10.255.255.255 یعنی:

10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4 تااااا 10.0.0.255 10.0.1.0 10.0.1.1 تاااااااااا آخر 10.255.255.254

رنج های Private IP:
10.0.0.0 تا 10.255.255.255 (کلاس A) ( با این کلاس/رنج یک شبکه‌ی خیلی بزرگ دارم با 16 میلیون آدرس)
172.16.0.0 تا 172.31.255.255 (کلاس B) (با این کلاس 16 تا شبکه‌ی متوسط میتونم بسازم)
192.168.0.0 تا 192.168.255.255 (کلاس C) (با این کلاس میتونم 256 شبکه‌‌ی کوچیک بسازم)
جمع بندی کوتاه:
IP به دو حالت Public و Private تقسیم میشه. آدرس های Public فقط در سطح اینترنت معتبر هستن. آدرس های Private محدوده هایی هستن که توسط خود پروتکل IP مشخص شدن برای آدرس دهی تو شبکه های محلی و این آیپی های Private به هیچ عنوان تو سطح اینترنت به هیچ دستگاهی اختصاص داده نمیشن.
Public IP توسط ISP (شرکت اینترنت) به مودم داده میشه.
این آدرس در اینترنت شناخته‌شدس و هر سرور یا کلاینتی در اینترنت می‌تونه بهش وصل بشه (اگه فایروال و روتر اجازه بدن).
Public IP می‌تونه Static (ثابت) باشه یا Dynamic (هر بار ممکنه عوض شه. از طریق DHCP از ISP).
مثال:
مودم خونه: 203.0.113.5 (مثال فرضی public)
سایت گوگل مثلا 8.8.8.8 (public DNS) هرکی توی اینترنت می‌تونه به این آدرس بسته بفرسته.


NAT چیه؟ NAT مخفف Network Address Translationـه، یعنی ترجمه کردن آدرس شبکه. کارش اینه که آدرس‌های خصوصی (Private IP) داخل شبکه LAN رو به یه آدرس عمومی (Public IP) تبدیل کنه تا بتونن تو اینترنت دیده بشن.
ما فقط یه تعداد محدود IP Public داریم (IPv4 حدود 4 میلیارد تا).
اما دستگاه‌ها (موبایل، لپ‌تاپ، تلویزیون هوشمند، دوربین ...) میلیاردها شدن.
راه‌حل: همه تو خونه یا شرکت Private IP داشته باشن و وقتی می‌خوان برن اینترنت، مودم/روتر با NAT کاری کنه که همشون از یک IP Public استفاده کنن.
NAT چطوری کار می‌کنه؟ اطلاعات شبکه:
کامپیوتر اول: 192.168.1.10 (آدرس خصوصی)
کامپیوتر دوم: 192.168.1.20 (آدرس خصوصی)
مودم/روتر: 203.0.113.5 (آدرس عمومی که روی اینترنت دیده میشه)
سرور گوگل: 142.250.190.78 (آدرس عمومی)
مرحله 1: ایجاد درخواست از PC1 (کامپیوتر اول)
PC1 میخواد صفحه‌ی گوگل رو باز کنه. یعنی یه درخواست TCP به سمت 142.250.190.78:443 (پورت HTTPS) می‌فرسته. این درخواست با مشخصات زیر ساخته میشه:

Source IP: 192.168.1.10 Source Port: 50000 (یه پورت موقتی که سیستم ساخته) Destination IP: 142.250.190.78 Destination Port: 443

مرحله 2: رسیدن بسته/درخواست به مودم
وقتی این بسته به مودم می‌رسه، مودم میگه:
صبر کن! آدرس 192.168.1.10 خصوصیه، روی اینترنت شناخته‌شده نیست. من باید NAT کنم.
مودم میاد Source IP رو تغییر میده و آدرس عمومی خودش (203.0.113.5) رو جایگزین می‌کنه.
ولی یه مشکل: اگه PC2 هم همزمان درخواست بده، از کجا بفهمه کدوم جواب برای کیه؟
اینجاست که مودم از Port Address Translation (PAT) استفاده می‌کنه. یعنی پورت مبدا رو هم تغییر میده.
مثال بعد از تغییر:

Source IP: 203.0.113.5 Source Port: 40001 (مودم ساخته) Destination IP: 142.250.190.78 Destination Port: 443

مودم میاد تو جدول NAT خودش تمام این تغییرات رو ذخیره میکنه. نمونش:

192.168.1.10:50000 <-> 203.0.113.5:40001

تو جدول NAT گفته شده که تو شبکه محلی یک درخواست ساخته شده از مبدا 192.168.1.10 روی پورت 50000. من همین درخواست رو به 203.0.113.5 روی پورت 40001 تغییر دادم. یعنی هرموقع سمت من، بسته ایی اومد که مقصدش 203.0.113.5:40001 بود باید به 192.168.1.10:50000 تحویلش بدم.
مرحله 3: رسیدن بسته به گوگل
بسته‌ایی که ساختم میرسه به گوگل. گوگل بسته رو باز میکنه و محتوای زیر داخلش قرار داره:

درخواست از 203.0.113.5:40001 به 142.250.190.78:443

گوگل هیچ خبری از IP خصوصی (192.168.1.10) نداره. برای گوگل فقط مودم شما وجود داره.
مرحله 4: پاسخ گوگل
گوگل جواب رو به همون آدرسی که درخواست رو فرستاده برمیگردونه:

Source IP: 142.250.190.78 Source Port: 443 Destination IP: 203.0.113.5 Destination Port: 40001

مرحله 5: رسیدن بسته به مودم
مودم جواب رو می‌گیره و یه نگاه به جدول NAT خودش میندازه:

203.0.113.5:40001 == 192.168.1.10:50000

میفهمه که بسته‌ی دریافتی برای یک سیستم محلی با آدرس 192.168.1.10 هست که روی پورت 50000 منتظره که پاسخ دریافت بشه. پس میاد اطلاعات مقصد بسته رو به حالت زیر تغییر میده و ارسال میکنه برای PC1:

Source IP: 142.250.190.78 Source Port: 443 Destination IP: 192.168.1.10 Destination Port: 50000

اگه همزمان PC2 هم به گوگل وصل بشه چی میشه؟
PC2 هم یه بسته میفرسته با Source IP 192.168.1.20 و مثلا پورت 50001.
مودم اون رو هم تغییر میده به مثلا 203.0.113.5:40002 و یه رکورد جدید تو جدول NAT ذخیره می‌کنه.
به این شکل، مودم میتونه تشخیص بده هر جوابی که برمیگرده برای کدوم دستگاهه.
جمع بندی:
IP خصوصی فقط تو شبکه داخلی معنا داره.
مودم NAT رو اجرا میکنه تا اون رو به IP عمومی خودش ترجمه کنه.
با استفاده از پورت‌ها، میفهمه کدوم بسته مال کدوم کامپیوتره.
برای گوگل، فقط یه دستگاه (مودم) وجود داره. ولی در اصل پشتش چندین کامپیوتر هست.


Subnet Mask چیه؟
یه آدرس IP دارم. مثلا 192.168.1.10
این IP از دو بخش تشکیل شده:
Network ID (آدرس شبکه): نشون میده این دستگاه تو کدوم شبکست.
Host ID (آدرس میزبان): نشون میده کدوم دستگاهِ داخلِ اون شبکست.
IP به تنهایی نمیتونه مشخص کنه کدوم بخش برای شبکه و کدوم بخش برای میزبانه. اینجاست که Subnet Mask وارد میشه.
قبل از بررسی دقیق Subnet Mask یه مثال بزنم تا بهتر درک بشه. به این آدرس دقت کن:
اصفهان. فلکه احمدآباد. خیابان احمدآباد. کوچه شهید محمودی. پلاک 8
این آدرس رو میتونیم به 2 بخش تقسیم کنیم! بخش اول مشخص میکنه که من دارم به کدوم شبکه/محله اشاره میکنم. بخش اول میشه: اصفهان. فلکه احمدآباد. خیابان احمدآباد. کوچه شهید محمودی.
بخش اول مثل Network IDعه، یعنی مشخص میکنه دارم به کدوم شبکه اشاره میکنم (شناسه شبکه رو نشون میده)
بخش دوم مشخص میکنه تو اون شبکه که Network ID مشخص کرده، میخوام به کدوم دستگاهش اشاره کنم. بخش دوم میشه: پلاک 8.
تو پروتکل IP یک استاندارد به اسم Subnet Mask مثل یک خط کش تعیین میکنه که تا کجای IP مال شبکست و از کجا به بعدش مال Host.
شکل و ساختار Subnet Mask:
ساختار Subnet Mask دقیقا مثل IPعه. یعنی از 4 Octet تشکیل شده که هرکدوم میتونه مقداری بین 0 تا 255 داشته باشه. مثال: 255.255.255.0
255 یعنی این بخش ثابت و مربوط به شبکه هست.
0 یعنی این بخش متغیر و مربوط به میزبان‌ها هست.
فرضا روی کامپیوتر من، IP و Subnet Mask زیر تنظیم شده:

192.168.1.10 255.255.255.0

از 192.168.1.10 بخش 192.168.1 مربوط به شناسه شبکست (Network ID)
مابقی آدرس، یعنی 10 اشاره میکنه به یک دستگاه داخل شبکه (Host ID)
درنتیجه، اگه بخوام یک شبکه LAN بسازم، باید IP تمام دستگاه‌ها رو 192.168.1.x قرار بدم و سابنت مسک 255.255.255.0 رو برای همشون تنظیم کنم. چرا؟ چون همشون داخل یک شبکه باشن.
یه مثال دیگه! فرضا روی کامپیوترم IP و Subnet Mask زیر تنظیم شده:

IP: 10.0.5.25 Subnet Mask: 255.255.0.0

قسمت 10.0 مربوط میشه به Network ID و قسمت 5.25 مربوط میشه به Host ID.
تو این حالت دستگاه های بیشتری رو میتونم داخل شبکم آدرس دهی کنم.

قبل تر راجب کلاس های IP صحبت شد. هرکلاس Subnet Mask مختص به خودش رو داره:

Class A: 255.0.0.0 Class B: 255.255.0.0 Class C: 255.255.255.0


گاهی به جای نوشتن کامل Subnet Mask، به شکل خلاصه میگن:

192.168.1.10/24

اون 24/ یعنی 24 بیت اول مال شبکست. هر 255 در Subnet Mask یعنی 8 بیت.
درنتیجه 24/ یعنی 24 بیت اول که میشه 255.255.255.0.

مودم خونه شما Subnet Mask پیش‌فرضش 255.255.255.0 هست. یعنی میگه فقط آخرین octet برای میزبان‌هاست. پس توی خونه می‌تونی از IPهای زیر استفاده کنی:

192.168.1.1 192.168.1.2 192.168.1.3 ... 192.168.1.254

یه سوال! چرا نمیتونم از 192.168.1.0 و 192.168.1.255 استفاده کنم؟
تو هر شبکه دوتا آدرس هست که نمیشه به دستگاه ها اختصاص داد و اون دوتا آدرس رزرو شدن.
اولین آدرس IP داخل یک شبکه اختصاص داده میشه به خود شبکه. یعنی اون آدرس فقط و فقط به کلیت شبکه اشاره میکنه و از اون آدرس به بعد، میشه دستگاه هارو آدرس دهی کرد. درنتیجه:
192.168.1.0: آدرس شبکه (Network ID)

در کنار Network ID یک آدرس رزرو شده دیگه داریم به اسم Broadcast Address و آخرین آدرس آیپی یک شبکه اختصاص داره بهش. یعنی:
192.168.1.255: آدرس پخش همگانی (Broadcast Address)
چرا Network ID مهمه؟
وقتی یه بسته می‌خواد تو شبکه جابه‌جا بشه، سیستم درابتدا نگاه می‌کنه ببینه مقصدش تو همون Network ID هست یا نه.
اگه Network ID یکی باشه یعنی مقصد تو همون شبکه محلیه، مستقیم میره براش.
اگه Network ID فرق داشته باشه یعنی مقصد تو یه شبکه دیگست، باید بسته رو بده به روتر/مودم تا مسیرش رو پیدا کنه.


Default Gateway چیه؟
تو هر شبکه‌ی LAN، دستگاه‌ها می‌تونن با هم حرف بزنن. ولی اگه بخوای از این شبکه بری بیرون (یعنی بری اینترنت یا یه شبکه دیگه)، باید یه دروازه خروجی داشته باشی. اون دروازه Default Gateway هست.
تو تمام دستگاه‌هایی که به شبکه وصل میشن، یه قسمتی وجود داره به اسم Default Gateway. اصولا آیپی مودم یا روتر تو این بخش قرار میگیره و دستگاه ها میدونن که اگه بسته‌ایی باید از شبکه خارج بشه، باید برای Default Gateway (که آیپیش رو دارن) ارسال کنن. درنتیجه: مودم شما همیشه نقش Default Gateway رو بازی می‌کنه. مثلا:
لپ‌تاپ: 192.168.1.10
گوشی: 192.168.1.20
مودم: 192.168.1.1
آی‌پی مودم (192.168.1.1) میشه Default Gateway.


پروتکل ARP چیه؟
ARP یا Address Resolution Protocol یعنی پروتکل پیدا کردن آدرس.
وقتی دستگاهی آدرس IP یه دستگاه دیگه رو داره اما نمی‌دونه MAC اون دستگاه چیه، از ARP استفاده میکنه و با کمکش MAC دستگاه هدف رو پیدا میکنه.
ARP چطور کار میکنه؟
شبکه فرضی ما:

PC1: 192.168.1.10, MAC 00:11:22:33:44:55 PC2: 192.168.1.20, MAC 00:11:22:33:44:66 Gateway: 192.168.1.1, MAC AA:BB:CC:DD:EE:FF

PC1 می‌خواد به PC2 پینگ بزنه.
PC1 یه نگاه به جدول ARP cashe خودش میندازه تا ببینه MAC Address مربوط به 192.168.1.20 رو داره یا نه.
اگه MAC Address مقصد وجود داشت که بسته ساخته و ارسال میشه. اگه وجود نداشت PC1 یه ARP Request رو بصورت Broadcast توی شبکه ارسال میکنه.
ARP Request بسته‌ایی هست که برای همه ارسال میشه و داخلش نوشته شده که ایا آیپی شما برابر با فلان هست یا نه؟! اگه برابر بود MAC Address خودتون رو به کسی که این بسته رو فرستاده، ارسال کنید.
یه سوال! ARP Request چطوری برای همه ارسال میشه؟ اگه توی بسته، مک آدرس گیرنده رو برابر کنیم با FF:FF:FF:FF:FF:FF سوئیچ میاد بسته رو برای تمام پورت هاش ارسال میکنه.
بسته ARP Request میرسه به PC2 و میبینه که بسته برای خودش ارسال شده (چون آیپی مقصد با آیپی خودش یکیه) تو قدم بعد میاد یک بسته‌ی ARP Reply ایجاد میکنه و آدرس مک خودش رو داخلش قرار میده.
بسته‌ی ARP Reply بصورت Unicast یا مستقیم به PC1 فرستاده میشه و وقتی جواب رو دریافت کرد، ARP Cashe خودش رو آپدیت میکنه تا هربار نخواد این درخواست رو ارسال کنه.
وقتی مقصد بیرون LAN باشه (مثلا گوگل)، PC1 همین کارو برای Default Gateway انجام میده تا مک آدرس Gateway رو بگیره و بسته رو بهش بده.
اگه ویندوز دارید توی cmd دستور arp -a رو وارد کنید تا جدول ARP رو ببینید.


وقتی یه دستگاه می‌خواد داده بفرسته، سه جور می‌تونه این کارو بکنه:
Unicast: فرستادن به یه دستگاه مشخص.
استفاده: بیشتر ارتباط‌های روزمره مثل باز کردن سایت، چت، ایمیل.
Broadcast: فرستادن به همه دستگاه‌های داخل یک شبکه محلی (LAN).
استفاده: وقتی یه دستگاه نمی‌دونه کی باید جواب بده، مثل ARP Request یا DHCP Discover.
Multicast: فرستادن به یه گروه خاص از دستگاه‌ها که عضو شدن.
فرق اصلی:
Unicast = یک نفر
Broadcast = همه
Multicast = فقط گروه خاص


DHCP چیه؟
فرض کن تو یه اتاق خالی هستی و 4 تا کامپیوتر کاملا نو و خاموش جلوته. یه دستگاه Switch هم داری. هدف اینه که این کامپیوترها بتونن با هم حرف بزنن.
مرحله 1: ساختن LAN
اولین کاری که می‌کنی، وصل کردن کامپیوترهاست.
یه کابل شبکه از کامپیوتر اول (PC1) برمیداری و به یکی از پورت‌های سوئیچ وصل می‌کنی.
همین کار رو برای PC2 و PC3 و PC4 هم انجام میدی.
الان چی داریم؟ ما الان یه LAN ساختیم. کامپیوترها مثل 4 تا خونه هستن که تو یه کوچه کنار هم قرار گرفتن و سوئیچ هم مثل مرکز پست محلی یا همون چهارراه اصلی محله است. این مرکز پست میدونه که هر کابل به کدوم خونه وصله، ولی هنوز هیچ کدوم از خونه‌ها آدرس یا پلاک ندارن.
حالا کامپیوترها رو روشن می‌کنی. اونا از نظر فیزیکی به هم وصلن، ولی نمی‌تونن با هم حرف بزنن.
چرا؟ چون هویت ندارن. PC1 نمی‌دونه چجوری باید PC2 رو صدا بزنه.

مرحله 2: نیاز به آدرس
برای اینکه کامپیوترها بتونن با هم حرف بزنن، هر کدوم نیاز به یه آدرس IP منحصر به فرد دارن. IP مثل همون کد پستی یا پلاک خونه است.
اینجا دو تا راه داریم:
راه سخت (آدرس‌دهی دستی یا Static): خودت بری پای هر کامپیوتر و دستی بهش یه آدرس بدی. مثلا به PC1 بگی: آدرس تو از این به بعد 192.168.1.10 عه. به PC2 بگی: آدرس تو 192.168.1.11 هست و... این کار برای 4 تا کامپیوتر شدنیه، ولی تصور کن تو یه شرکت با 200 تا کامپیوتر هستی! خیلی سخت و وقت‌گیره و احتمال اشتباه هم زیاده (مثلا به دو تا کامپیوتر یه آدرس یکسان بدی و کل شبکه به هم بریزه).
راه هوشمند (آدرس‌دهی خودکار یا Dynamic): اینجا قهرمان داستان ما، یعنی DHCP وارد میشه!

مرحله 3: ورود قهرمان (DHCP Server)
DHCP مخفف Dynamic Host Configuration Protocol عه. اسمش سخته ولی کارش خیلی سادست. DHCP مثل یه اداره ثبت احوال یا شهرداری خودکار برای شبکه ماست که مسئولیت دادن آدرس IP به کامپیوترها رو بر عهده داره.
DHCP کجا و تو کدوم قسمت از شبکه قرار داره؟ تو اکثر شبکه‌های خونگی و کوچیک، این قابلیت روی روتر/مودم فعاله.
این سرور (یعنی DHCP Server) یه لیست از آدرس‌های IP آماده و خالی داره (بهش میگن IP Pool). مثلا لیستی از آدرس‌های 192.168.1.100 تا 192.168.1.200 رو آماده کرده تا به هر کی درخواست داد، یکی رو اجاره بده.

مرحله 4: گفتگو برای گرفتن آدرس (فرایند DORA)
حالا که کامپیوترها روشن شدن و DHCP Server هم تو شبکه حاضره، یه مکالمه خیلی سریع و جالب بینشون اتفاق میوفته. این مکالمه 4 قدم داره که بهش میگن DORA:

قدم اول: Discover (کشف یا فریاد کمک): PC1 که تازه روشن شده و هیچ آدرسی نداره، گیج و سردرگمه. اولین کاری که میکنه اینه که تو کل شبکه داد میزنه: آهای اهالی شبکه! من یه کامپیوتر جدیدم! هیچ آدرس IP ندارم! کسی اینجا هست که بتونه بهم یه آدرس بده؟
این داد زدن در واقع یه بسته (Packet) به اسم DHCP Discover هست که به صورت Broadcast (یعنی برای همه) تو شبکه پخش میشه. سوئیچ این بسته رو به تمام پورت‌هاش (یعنی برای PC2, PC3, PC4 و روتر) میفرسته.

قدم دوم: Offer (پیشنهاد یا پاسخ شهرداری):
PC2, PC3, PC4 این بسته رو میگیرن ولی چون DHCP سرور نیستن، کاری باهاش ندارن و نادیدش میگیرن.
اما روتر (یا DHCP Server) این فریاد رو میشنوه! به لیست آدرس‌های خالیش نگاه میکنه و میگه: آهان! آدرس 192.168.1.100 خالیه. بعد یه بسته به اسم DHCP Offer آماده میکنه و فقط برای PC1 میفرسته و میگه:
سلام کامپیوتر جدید! من DHCP سرورم. چطوره آدرس 192.168.1.100 رو برای 24 ساعت بهت اجاره بدم؟ به همراه این آدرس، آدرس دروازه خروج از شبکه (Gateway) و آدرس سرور DNS رو هم بهت میدم.

قدم سوم: Request (درخواست یا قبول پیشنهاد):
PC1 این پیشنهاد سخاوتمندانه رو دریافت میکنه و خوشحال میشه.
برای اینکه کار رو رسمی کنه، دوباره یه بسته Broadcast (برای همه) به اسم DHCP Request میفرسته و میگه:
خیلی ممنون از پیشنهادتون! من، PC1، پیشنهاد آدرس 192.168.1.100 رو از اون سرور DHCP قبول می‌کنم!
چرا این رو به همه میگه؟ چون ممکنه تو شبکه چندتا DHCP سرور باشه و چندتا پیشنهاد دریافت کرده باشه. با این کار به همه اعلام میکنه که کدوم پیشنهاد رو انتخاب کرده.

قدم چهارم: Acknowledge (تایید - معامله تمام شد):
DHCP Server این پیام تشکر و قبول کردن رو میگیره. حالا معامله رو نهایی میکنه.
تو دفتر خودش یادداشت میکنه: آدرس 192.168.1.100 تا 24 ساعت آینده در اختیار PC1 است.
آخرین بسته رو به اسم DHCP Acknowledge برای PC1 میفرسته و میگه:
عالیه! این آدرس رسما برای تو شد. اینم مُهر تایید! خوش اومدی به شبکه!
تمام! الان PC1 یه هویت و آدرس مشخص داره.

همین فرایند DORA برای PC2 و PC3 و PC4 هم تکرار میشه.

شبکه های کامپیوتریشبکهاینترنتآی پیبرنامه نویسی
۰
۰
امیرحسین ناظوری
امیرحسین ناظوری
📕 عاشق یادگیری و به اشتراک‌گذاری دانش -- آیدی من تو شبکه های اجتماعی : mrNazouri13
شاید از این پست‌ها خوشتان بیاید