- ساختار ۱۲۸ بیتی IPv6 و هشت بخش ۱۶ بیتی آن را توضیح بدهی
- رابطه Hexadecimal با Binary را برای خواندن آدرس IPv6 بفهمی
- Leading Zeroها و علامت :: را طبق قواعد درست کوتاه کنی
- یک IPv6 کوتاهشده را دوباره به شکل هشتبخشی گسترش بدهی
- Unspecified، Loopback و Prefix Length را از هم تشخیص بدهی
- IPv6 را در خروجی Cisco IOS بخوانی و خطاهای نوشتاری را پیدا کنی
ساختار ۱۲۸ بیتی و Hexadecimal
IPv4 آدرس ۳۲ بیتی دارد. نمونه آشنای آن 192.168.10.25 است. IPv6 از ۱۲۸ بیت استفاده میکند و به همین دلیل فضای آدرسدهی بسیار بزرگتری در اختیار شبکه قرار میدهد.
نمونه IPv4192.168.10.25نمونه IPv62001:0db8:0000:0000:0212:34ff:fe56:789aآدرس IPv6 در حالت کامل از هشت بخش تشکیل شده است. هر بخش با علامت : از بخش بعدی جدا میشود. اگر آدرس بالا را جدا کنیم، هشت مقدار ۲۰۰۱، 0db8، ۰۰۰۰، ۰۰۰۰، ۰۲۱۲، 34ff، fe56 و 789a را داریم. هر کدام از این بخشها ۱۶ بیت دارند. هشت بخش ۱۶ بیتی در کنار هم همان ۱۲۸ بیت IPv6 را میسازند. دانستن این ساختار بعداً برای فهم Prefix و Subnetting لازم میشود.
محاسبه اندازه آدرس8 × 16 = 128 bitsIPv6 برای کوتاهتر شدن نمایش ۱۲۸ بیت، از سیستم عددی Hexadecimal استفاده میکند. در سیستم Decimal که هر روز با آن کار میکنیم، رقمهای ۰ تا ۹ وجود دارند. در Hexadecimal علاوه بر ۰ تا ۹، حروف A تا F هم استفاده میشوند.
مقادیر Hexadecimal0 1 2 3 4 5 6 7 8 9 A B C D E F
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15پس اگر داخل یک آدرس IPv6 چیزی مثل 2a01 یا db8 دیدی، حرف داخل آن بخشی از نمایش عدد است و متن محسوب نمیشود. هر رقم Hexadecimal چهار بیت را نمایش میدهد. هر بخش IPv6 چهار رقم Hexadecimal دارد، پس هر بخش ۱۶ بیت است.
اندازه هر بخش4 Hexadecimal digits × 4 bits = 16 bits
8 sections × 16 bits = 128 bitsدر شکل کامل، هر هشت بخش نوشته میشوند و هر بخش چهار رقم دارد. صفرهای ابتدایی هم حذف نمیشوند.
2001:0db8:0000:0000:0000:0000:0000:0010رابطه Hexadecimal و بیت۱ رقم Hex = 4 bits
۴ رقم Hex = 16 bits
۸ گروه × 16 bits = 128 bitsقواعد کوتاهنویسی و نمایش استاندارد
در هر بخش میتوان صفرهایی را که در سمت چپ قرار گرفتهاند حذف کرد. این کار مقدار آدرس را عوض نمیکند.
0db8 → db8
0042 → 42
0001 → 1
0000 → 0مثلاً آدرس زیر را در نظر بگیر:
2001:0db8:0000:0000:0212:0034:0056:789aبعد از حذف صفرهای ابتدایی هر بخش، همین آدرس به شکل زیر نوشته میشود:
2001:db8:0:0:212:34:56:789aفقط صفرهای ابتدای همان بخش حذف میشوند. صفرهایی که سمت راست یک مقدار قرار دارند بخشی از عدد هستند و نباید حذف شوند.
نمونه1000 ≠ 1
1010 ≠ 11
0010 → 10در مثال آخر، ۰۰۱۰ فقط به ۱۰ تبدیل میشود. اگر آن را ۱ بنویسی، مقدار آدرس را عوض کردهای. اگر چند بخش پشت سر هم صفر باشند، میتوان همه آن بخشها را با :: جایگزین کرد.
2001:db8:0:0:0:0:0:10
2001:db8::10هر دو خط یک آدرس را نشان میدهند. :: یعنی در این نقطه یک یا چند بخش صفر حذف شده است. برای فهمیدن تعداد بخشهای حذفشده، بخشهایی را که هنوز دیده میشوند میشماریم. IPv6 در حالت کامل باید هشت بخش داشته باشد.
باز کردن نمونه2001:db8::10
Visible sections: 2001, db8, 10 = 3
Missing sections: 8 - 3 = 5
Full form:
2001:db8:0:0:0:0:0:10در این مثال :: نماینده پنج بخش صفر است. در یک آدرس IPv6 فقط یک بار میتوان از :: استفاده کرد.
معتبر2001:db8::10نامعتبر2001::db8::10اگر دو :: در یک آدرس وجود داشته باشد، دیگر مشخص نیست هرکدام چند بخش صفر را حذف کردهاند. ممکن است یک قسمت دو بخش و قسمت دیگر سه بخش صفر باشد یا برعکس. در نتیجه آدرس مبهم میشود. به همین دلیل استاندارد IPv6 اجازه نمیدهد :: بیشتر از یک بار در یک آدرس استفاده شود. این آدرس کامل را در نظر بگیر:
2001:0db8:0000:0000:0000:0000:00aa:0010اول صفرهای ابتدایی هر بخش را حذف میکنیم:
2001:db8:0:0:0:0:aa:10چهار بخش صفر پشت سر هم داریم، پس میتوانیم آنها را با :: جایگزین کنیم:
2001:db8::aa:10هر سه شکل بالا دقیقاً یک آدرس هستند. در خروجی سیستمعاملها و تجهیزات معمولاً شکل کوتاهتر دیده میشود. مسیر برعکس هم مهم است. اگر 2001:db8:20::5 را ببینی، چهار بخش مشخص ۲۰۰۱، db8، ۲۰ و ۵ وجود دارند. برای رسیدن به هشت بخش، :: باید چهار بخش صفر را پوشش دهد.
شکل بازشده2001:db8:20:0:0:0:0:5شکل کاملاً چهاررقمی2001:0db8:0020:0000:0000:0000:0000:00052001:DB8::ABCD
2001:db8::abcdحروف بزرگ و کوچک Hexadecimal مقدار متفاوتی نمیسازند؛ 2001:DB8::ABCD و 2001:db8::abcd یک آدرس هستند. برای مستندسازی بهتر است شکل یکنواخت RFC 5952 را رعایت کنی: Leading Zeroها حذف شوند، نمایش معمولاً با حروف کوچک باشد و :: بهصورت یکنواخت برای طولانیترین دنباله صفر استفاده شود. این کار مقایسه Log، ACL و مستندات را سادهتر میکند.
آدرسهای ویژه و Prefix Length
گاهی آدرسی فقط به شکل :: دیده میشود. این آدرس یعنی هر ۱۲۸ بیت صفر هستند.
::
0000:0000:0000:0000:0000:0000:0000:0000این آدرس Unspecified Address نام دارد. دستگاه وقتی هنوز آدرس مشخصی برای خودش در یک وضعیت خاص ندارد میتواند از مفهوم Unspecified استفاده کند. :: یک آدرس عادی برای اختصاص دادن به Interface نیست. آدرس ::۱ در IPv6 برای Loopback استفاده میشود.
::1
0000:0000:0000:0000:0000:0000:0000:0001در IPv4 معمولاً 127.0.0.1 را برای Loopback میشناسیم. در IPv6 آدرس اصلی Loopback برابر ::۱ است. Loopback یعنی مقصد خود دستگاه است. بسته قرار نیست برای رسیدن به ::۱ از کارت شبکه خارج شود و وارد Switch شود.
یک تست سادهping ::1اگر IPv6 روی سیستم درست فعال باشد، معمولاً این Ping پاسخ میگیرد. این تست فقط عملکرد محلی IPv6 روی همان سیستم را بررسی میکند و سالم بودن ارتباط با شبکه بیرونی را ثابت نمیکند. کنار آدرس IPv6 معمولاً عددی مثل /64 دیده میشود:
2001:db8:10:20::25/64عدد /64 خود آدرس نیست. این عدد Prefix Length است و مشخص میکند چند بیت اول آدرس بخش شبکه را مشخص میکنند. هر بخش IPv6 شانزده بیت است. چهار بخش اول در مجموع ۶۴ بیت میشوند.
2001 : db8 : 10 : 20
16 16 16 16
16 + 16 + 16 + 16 = 64 bitsپس در آدرس 2001:db8:10:20::25/64، Prefix شبکه برابر 2001:db8:10:20::/64 است.
نمونه Prefix2001:db8:10:20::25/64
Prefix: 2001:db8:10:20::/64
Interface portion: ::25IPv6 روی Interface و Cisco IOS
فرض کن روی Interface یک Router این آدرس تنظیم شده است:
Router: 2001:db8:10:1::1/64یک کامپیوتر داخل همان LAN هم این آدرس را دارد:
PC: 2001:db8:10:1::20/64هر دو آدرس Prefix یکسان 2001:db8:10:1::/64 دارند. از نظر Addressing در یک Subnet قرار گرفتهاند. اگر تنظیمات و اتصال فیزیکی درست باشند، میتوانند روی همان شبکه محلی با هم ارتباط داشته باشند. در این مرحله فقط روی خواندن آدرس و Prefix تمرکز میکنیم. اینکه دستگاه دقیقاً چطور دستگاه دیگر را پیدا میکند و برای ارتباط IPv6 چه پیامهایی ردوبدل میشوند، در درس Neighbor Discovery بررسی میشود. در Cisco IOS یکی از دستورهای مفید برای دیدن خلاصه Interfaceهای IPv6 این است:
show ipv6 interface briefخروجی میتواند شبیه نمونه زیر باشد:
GigabitEthernet0/0 [up/up]
FE80::1
2001:DB8:10:1::1خروجی show ipv6 interface brief ممکن است هم Link-Local و هم Global Unicast را روی یک Interface نشان دهد و این طبیعی است. وجود چند IPv6 بهتنهایی Conflict نیست. برای تحلیل، وضعیت up/down، Prefix آدرسها و Link-Local را کنار هم بخوان. اگر جزئیات بیشتری لازم بود، show ipv6 interface همان Interface اطلاعات Neighbor Discovery و گروههای Multicast را هم نشان میدهد.
دستورهای پایه Cisco IOSshow ipv6 interface brief
show ipv6 interface GigabitEthernet0/0
show running-config interface GigabitEthernet0/0کنترل صحت آدرس و خواندن عملی خروجیها
یکی از خطاهای رایج، اشتباه در شمارش بخشهاست. اگر :: وجود نداشته باشد، آدرس کامل باید هشت بخش داشته باشد.
هشت بخش؛ معتبر از نظر تعداد بخش2001:db8:10:20:30:40:50:60فقط هفت بخش؛ ناقص اگر :: وجود نداشته باشد2001:db8:10:20:30:40:50خطای دیگر حذف صفرهای اشتباه است. مثلاً ۰۰۱۰ میتواند ۱۰ شود، اما نمیتواند ۱ شود.
0010 → 10
0010 ≠ 1برای بررسی سریع یک IPv6 سه سؤال از خودت بپرس: اگر :: وجود ندارد آیا هشت بخش میبینی؟ اگر :: وجود دارد آیا فقط یک بار استفاده شده؟ آیا فقط صفرهای ابتدای هر بخش حذف شدهاند؟ IPv4 معمولاً به صورت چهار عدد Decimal با نقطه نوشته میشود:
192.168.10.20IPv6 با بخشهای Hexadecimal و علامت : نوشته میشود:
2001:db8:10:20::5برای اعتبارسنجی آدرس، ظاهر طولانی را ساده کن: تعداد گروهها، محل ::، محدوده رقمهای Hex و Prefix را جداگانه بررسی کن. در عمل یک Hex digit اشتباه میتواند Host را در Prefix دیگری قرار دهد. قبل از تغییر Routing یا Firewall، آدرس و Prefix را با مستندات مقایسه کن.
کنترل سریع اعتبار۱) اگر :: وجود ندارد، باید ۸ گروه داشته باشیم
۲) هر گروه حداکثر ۴ رقم Hex دارد
۳) فقط ۰-۹ و a-f مجازند
۴) :: در یک آدرس فقط یک بار استفاده میشود
5) Prefix باید بین /0 و /128 باشددر مستندات Server آدرس 2001:db8:10:50::25/64 ثبت شده، اما روی خود Server آدرس 2001:db8:10:5::25/64 دیده میشود. ابتدا هر دو را از نظر شکل نوشتن معتبر تشخیص میدهی، سپس Prefixهای /64 را جدا میکنی. شبکه اول 2001:db8:10:50::/64 و شبکه دوم 2001:db8:10:5::/64 است. بنابراین قبل از بررسی Routing یا Neighbor Discovery یک اختلاف Addressing قطعی پیدا شده است. این دقیقاً همان نوع خطایی است که با خواندن درست IPv6 در چند ثانیه مشخص میشود.
خطاهایی که موقع خواندن IPv6 باید حواست به آنها باشد
- علامت :: را بیشتر از یک بار در یک آدرس استفاده نکن
- صفرهای سمت راست یک مقدار را به اشتباه حذف نکن؛ فقط صفرهای ابتدای هر بخش قابل حذف هستند
- اگر :: وجود ندارد، تعداد بخشهای آدرس را بررسی کن؛ شکل کامل باید هشت بخش داشته باشد
- حروف بزرگ و کوچک Hexadecimal را دو مقدار متفاوت حساب نکن
- عدد Prefix مثل /64 را بخشی از خود آدرس در نظر نگیر
تمرین خواندن و نوشتن IPv6
- آدرس 2001:0db8:0000:0000:0000:0000:0000:0025 را ابتدا با حذف صفرهای ابتدایی و بعد با :: کوتاه کن
- آدرس 2001:db8:12::7 را به شکل هشتبخشی و سپس به شکل کاملاً چهاررقمی بنویس
- از بین 2001:db8::10، 2001:db8:0:0::10 و 2001::db8::10 مشخص کن کدام شکل نامعتبر است و دلیلش را توضیح بده
- Prefix شبکه آدرس 2001:db8:100:20::15/64 را مشخص کن
- روی یک سیستم یا Lab، ping ::۱ را اجرا کن و توضیح بده پاسخ گرفتن از آن دقیقاً چه چیزی را ثابت میکند
- در Packet Tracer یا یک Router Cisco، خروجی show ipv6 interface brief را ببین و آدرسهای نمایشدادهشده را بدون حدس زدن نوع آنها فقط از نظر شکل نوشتن تحلیل کن
نکتههایی که باید با خودت ببری
- IPv6 آدرس ۱۲۸ بیتی دارد و در حالت کامل از هشت بخش ۱۶ بیتی تشکیل میشود
- هر رقم Hexadecimal چهار بیت را نمایش میدهد
- صفرهای ابتدای هر بخش قابل حذف هستند، اما صفرهای انتهای مقدار را نباید حذف کرد
- :: چند بخش صفر پشت سر هم را کوتاه میکند و فقط یک بار در هر آدرس قابل استفاده است
- :: آدرس Unspecified و ::۱ آدرس Loopback است
- در /64، شصتوچهار بیت اول Prefix شبکه را مشخص میکنند
- خواندن درست آدرس و Prefix قبل از ورود به Routing و عیبیابی IPv6 ضروری است
خودت ساختار IPv6 را بررسی کن
چرا یک IPv6 کامل هشت بخش دارد؟
چون هر بخش ۱۶ بیت است و ۸ × ۱۶ برابر ۱۲۸ بیت میشود.
آیا ۰۰۱۰ را میتوان به ۱ کوتاه کرد؟
نه. فقط صفرهای سمت چپ حذف میشوند، پس ۰۰۱۰ به ۱۰ تبدیل میشود.
چرا 2001::db8::10 معتبر نیست؟
چون :: دو بار استفاده شده و دیگر مشخص نیست هرکدام چند بخش صفر را حذف کردهاند.
::۱ چه کاربردی دارد؟
Loopback IPv6 است و برای ارتباط دستگاه با خودش استفاده میشود.
Prefix شبکه 2001:db8:10:20::25/64 چیست؟
2001:db8:10:20::/64.
منابع مرجع این درس
برای ذخیره پیشرفت وارد حساب شو
حساب کاربری برای آزمون و ثبت مرحلهها استفاده میشود