Cisco CCNA · 200-301 v2.0

ساختار IPv6 و روش نوشتن آدرس

IPv6 از آدرس‌های ۱۲۸ بیتی استفاده می‌کند و همین موضوع باعث می‌شود شکل نوشتاری آن در نگاه اول طولانی‌تر از IPv4 به نظر برسد. برای کار عملی لازم نیست این آدرس‌ها را حفظ کنی؛ باید ساختارشان را بفهمی، Hexadecimal را درست بخوانی، قواعد کوتاه‌نویسی را بدون تغییر مقدار آدرس اجرا کنی و Prefix را از خود آدرس جدا ببینی. اگر این مهارت پایه دقیق باشد، تشخیص نوع آدرس، Subnetting، SLAAC، Neighbor Discovery و عیب‌یابی فصل‌های بعدی بسیار ساده‌تر می‌شود.

در پایان این درس باید بتوانی
  • ساختار ۱۲۸ بیتی IPv6 و هشت بخش ۱۶ بیتی آن را توضیح بدهی
  • رابطه Hexadecimal با Binary را برای خواندن آدرس IPv6 بفهمی
  • Leading Zeroها و علامت :: را طبق قواعد درست کوتاه کنی
  • یک IPv6 کوتاه‌شده را دوباره به شکل هشت‌بخشی گسترش بدهی
  • Unspecified، Loopback و Prefix Length را از هم تشخیص بدهی
  • IPv6 را در خروجی Cisco IOS بخوانی و خطاهای نوشتاری را پیدا کنی

ساختار ۱۲۸ بیتی و Hexadecimal

IPv4 آدرس ۳۲ بیتی دارد. نمونه آشنای آن 192.168.10.25 است. IPv6 از ۱۲۸ بیت استفاده می‌کند و به همین دلیل فضای آدرس‌دهی بسیار بزرگ‌تری در اختیار شبکه قرار می‌دهد.

نمونه IPv4
192.168.10.25
نمونه IPv6
2001:0db8:0000:0000:0212:34ff:fe56:789a

آدرس IPv6 در حالت کامل از هشت بخش تشکیل شده است. هر بخش با علامت : از بخش بعدی جدا می‌شود. اگر آدرس بالا را جدا کنیم، هشت مقدار ۲۰۰۱، 0db8، ۰۰۰۰، ۰۰۰۰، ۰۲۱۲، 34ff، fe56 و 789a را داریم. هر کدام از این بخش‌ها ۱۶ بیت دارند. هشت بخش ۱۶ بیتی در کنار هم همان ۱۲۸ بیت IPv6 را می‌سازند. دانستن این ساختار بعداً برای فهم Prefix و Subnetting لازم می‌شود.

محاسبه اندازه آدرس
8 × 16 = 128 bits

IPv6 برای کوتاه‌تر شدن نمایش ۱۲۸ بیت، از سیستم عددی Hexadecimal استفاده می‌کند. در سیستم Decimal که هر روز با آن کار می‌کنیم، رقم‌های ۰ تا ۹ وجود دارند. در Hexadecimal علاوه بر ۰ تا ۹، حروف A تا F هم استفاده می‌شوند.

مقادیر Hexadecimal
0 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:0005
2001: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 است.

نمونه Prefix
2001:db8:10:20::25/64
Prefix: 2001:db8:10:20::/64
Interface portion: ::25

IPv6 روی 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 IOS
show 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.20

IPv6 با بخش‌های 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

  1. آدرس 2001:0db8:0000:0000:0000:0000:0000:0025 را ابتدا با حذف صفرهای ابتدایی و بعد با :: کوتاه کن
  2. آدرس 2001:db8:12::7 را به شکل هشت‌بخشی و سپس به شکل کاملاً چهاررقمی بنویس
  3. از بین 2001:db8::10، 2001:db8:0:0::10 و 2001::db8::10 مشخص کن کدام شکل نامعتبر است و دلیلش را توضیح بده
  4. Prefix شبکه آدرس 2001:db8:100:20::15/64 را مشخص کن
  5. روی یک سیستم یا Lab، ping ::۱ را اجرا کن و توضیح بده پاسخ گرفتن از آن دقیقاً چه چیزی را ثابت می‌کند
  6. در 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.

منابع رسمی

منابع مرجع این درس

مطالعه همیشه آزاد است

برای ذخیره پیشرفت وارد حساب شو

حساب کاربری برای آزمون و ثبت مرحله‌ها استفاده می‌شود

ورود یا ثبت‌نام