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

این مقاله، به شرح پروتکل IP و تفاوت IPv6 با IPv4 پرداخته است.

 

 

IP (پروتکل اینترنت) چیست؟

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

 

پروتکل اینترنت (IP)، مجموعه‌ای از قوانین است که آدرس دهی و مسیریابی داده‌ها را بین رایانه‌ها مشخص می‌کند و بیشتر با پروتکل‌های انتقال شبکه مانند TCP و UDP استفاده می‌شود.

اینترنت امروزه به دلیل این الگوی آدرس دهی منحصر به فرد وجود دارد. IANA محدوده آدرس IP را برای شبکه‌ها/سایت‌هایی که به اینترنت متصل می‌شوند، مدیریت می‌کند. با این حال، اگر یک زیرساخت شبکه محلی ایزوله را اجرا نمایید، شما می‌توانید اعداد آدرس IP را بر اساس ترجیح خود اختصاص دهید. در ادامه، وارد جزئیات معماری و تحلیل تطبیقی آن می‌شویم.

 

IPv4

اولین نسخه اصلی پروتکل اینترنت (IP) نسخه 4 (یعنی IPv4) است. این نسخه، از یک طرح آدرس دهی شبکه 32 بیتی استفاده می‌کند که به چهار عدد 8 بیتی معروف به octet تقسیم می‌شود. به عنوان مثال، google.com دارای آدرس 141.251.36.46 است. این قالب به عنوان نماد چهار نقطه شناخته می‌شود. این آدرس‌های IP را می‌توان به صورت دستی پیکربندی کرد یا به طور خودکار از طریق یک سرور DHCP به دست آورد.

به منظور بررسی وضعیت یک دستگاه ریموت، شما می‌توانید با استفاده از دستور ping یک کاوش ICMP برای آن IP انجام دهید:

ping -c 1 google.com
PING google.com (142.251.36.46) 56(84) bytes of data.
64 bytes from ams17s12-in-f14.1e100.net (142.251.36.46): icmp_seq=1 ttl=116 time=247 ms

...

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

 

محاسبه زیرشبکه شامل چند قاعده ریاضی در پشت صفحه است. برای سهولت در محاسبات، می‌توانید از ابزارهایی مانند ipcalc یا subnetcalc برای زیرشبکه IPv4 استفاده نمایید. کدهای زیر نحوه استفاده از این ابزارها را نشان می‌دهند:

ipcalc 110.0.20.18/24
output:
Address: 110.0.20.18 01101110.00000000.00010100. 00010010
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 110.0.20.0/24 01101110.00000000.00010100. 00000000
HostMin: 110.0.20.1 01101110.00000000.00010100. 00000001
HostMax: 110.0.20.254 01101110.00000000.00010100. 11111110
Broadcast: 110.0.20.255 01101110.00000000.00010100. 11111111
Hosts/Net: 254 Class A
subnetcalc 192.168.10.15/24
output:
Address = 192.168.10.15
11000000 . 10101000 . 00001010 . 00001111
Network = 192.168.10.0 / 24
Netmask = 255.255.255.0
Broadcast = 192.168.10.255
Wildcard Mask = 0.0.0.255
Hosts Bits = 8
Max. Hosts = 254 (2^8 - 2)
Host Range = { 192.168.10.1 - 192.168.10.254 }
Properties =
- 192.168.10.15 is a HOST address in 192.168.10.0/24
- Class C
- Private
GeoIP Country = Unknown (??)
DNS Hostname = (Name or service not known)

معمولاً همانطور که در شکل زیر نشان داده شده است، آدرس‌های IP به دستگاه میزبان پایانی و رابط گیت وی روتر داده می‌شود.

 

در اینجا، ترافیک ماشین A ( با آدرس 10.235.64.58) به رابط گیت وی روتر ( با آدرس 10.235.64.57) در سمت چپ ابر اینترنت ارسال می‌شود. از طریق مسیریابی اینترنت به گیت وی سرور گوگل و در نهایت به سرور مقصد می‌رسد.

به منظور شناسایی IP رابط شبکه می‌توانید از دستوراتی مانند ifconfig ،hostname یا ip استفاده کنید.

ifconfig ens160
output:
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.235.64.58 netmask 255.255.255.252 broadcast 10.235.64.59
inet6 fe80::fc7f:d8da:a969:1c1d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:23:6f:30 txqueuelen 1000 (Ethernet)
RX packets 35607241 bytes 34540488400 (34.5 GB)
RX errors 0 dropped 12 overruns 0 frame 0
TX packets 24701952 bytes 15008379564 (15.0 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
hostname -I
output:
10.235.64.58

 

این مطلب نیز ممکن است برای شما مفید باشد: دستور ifconfig در لینوکس

 

برخی از آدرس‌های IP شبکه با اهداف ویژه در نظر گرفته می‌شوند؛ به عنوان مثال 0.0.0.0 یا 127.0.0.1 که به ترتیب مسیر پیش فرض (یا مسیر چهار صفر) و آدرس loopback نامیده می‌شود.

در کد زیر، جدول مسیریابی IP Kernel را با مسیر پیش‌فرض برای آن شبکه می‌توان مشاهده کرد. پرچم "U" نشان دهنده این است که مسیر شبکه UP است، در حالی که G نشان می‌دهد که مسیر شبکه گیت وی شبکه است.

netstat -rn | grep ens160
output:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.235.64.57 0.0.0.0 UG 0 0 0 ens160
10.235.64.56 0.0.0.0 255.255.255.252 U 0 0 0 ens160

معمولاً دیتاگرام IPv4 از یک فیلد هدر با 20 بایت، فیلد گزینه‌ها و فیلدهای داده با طول متغیر تشکیل شده است. قالب بسته‌ی یک نمونه در زیر نشان داده شده است.

 

در زیر، Wireshark capture به رمزگشایی اطلاعات هدر بسته‌های ترافیک کمک می‌کند.

 

IPv6

پروتکل اینترنت نسخه 6، نسخه به روز شده پروتکل اینترنت (IP) است. نسخه 6 پروتکل اینترنت برای جایگزینی نسخه قدیمی (IPv4) در نظر گرفته شده است.

آدرس IPv6 به طول 128 بیت (16 بایت) با استفاده از 32 رقم هگزا دسیمال نشان داده می‌شود، در حالی که این ارقام برای سهولت مدیریت به هشت گروه چهار رقمی تقسیم می‌شوند. یک تصویر مختصر به منظور درک بهتر این نسخه در زیر نشان داده شده است.

 

چند مرحله اساسی در قرارداد نامگذاری IPv6 وجود دارد.

قانون 1: هیچ یک از حروف به بزرگ و کوچک بودن حساس نیستند. به عنوان مثال، "ab41" با "AB41" برابر است.

قانون 2: فیلدهای متوالی با "0" را می‌توان به صورت "::" نیز تجسم کرد؛ اما حداکثر یک بار در هر آدرس دهی.

قانون 3: نمایش صفرهای اول در یک فیلد اختیاری است. به عنوان مثال، “001a” با “1a” برابر است.

 

به عنوان مثال، آدرس IPv6 زیر را در نظر بگیرید.

45ab:0000:a179:0000:0000:c1c0:abcd:0876

با اعمال قانون 1 به صورت زیر در می‌آید:

45ab:0000:a179:0000:0000:c1c0:abcd:0876

با اعمال قانون 2 به صورت زیر خواهد بود:

45ab:0:a179:0:0:c1c0:abcd:876

در آخر با اعمال قانون 3 به صورت زیر خواهد بود:

45ab:0:a179::c1c0:abcd:876

 

سه نوع آدرس IPv6 وجود دارد: Unicast ،Multicast و Anycast. آدرس unicast، تنها رابط شبکه و بسته‌هایی است که به آن واسط خاص تحویل داده می‌شود. علاوه بر این، آدرس‌های unicast دارای سطوح دامنه محلی (پیوند-محلی) و سراسری هستند. آدرس Multicast، رابط‌های گروهی است که بسته‌ها به آن‌ها تحویل داده می‌شود. آدرس Anycast، واسط گروه و بسته‌ای است که به نزدیک‌ترین رابط تحویل داده می‌شود.

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

 

subnetcalc 2001:4860:4860::8888/64
output:
Address = 2001:4860:4860::8888
2001 = 00100000 00000001
4860 = 01001000 01100000
4860 = 01001000 01100000
0000 = 00000000 00000000
0000 = 00000000 00000000
0000 = 00000000 00000000
0000 = 00000000 00000000
8888 = 10001000 10001000
Network = 2001:4860:4860:: / 64
Netmask = ffff:ffff:ffff:ffff::
Wildcard Mask = ::ffff:ffff:ffff:ffff
Hosts Bits = 64
Max. Hosts = 18446744073709551616 (2^64 - 1)
Host Range = { 2001:4860:4860::1 - 2001:4860:4860:0:ffff:ffff:ffff:ffff }
Properties =
- 2001:4860:4860::8888 is a HOST address in 2001:4860:4860::/64
- Global Unicast Properties:
+ Interface ID = 0000:0000:0000:8888
+ Sol. Node MC = ff02::1:ff00:8888
GeoIP Country = United States (US)
DNS Hostname = dns.google

بسته IPv6 نیز دارای هر دو مورد header و payload است. اندازه هدر روی 40 بایت ثابت شده است و آدرس منبع و مقصد 32 بایت است. قالب بسته‌ی یک نمونه در زیر نشان داده شده است.

 

اگرچه IPv6 دارای مزایای بی شماری است، اما نمی‌تواند جایگزین IPv4 شود. هر دو نسخه پروتکل باید برای مدتی برای مهاجرت یکپارچه (از IPv4 به IPv6) با هم وجود داشته باشند. از این رو، ارائه دهندگان سرویس یک سیستم پشتیبانی دو پشته‌ای را ارائه می‌دهند که دارای یک رابط شبکه است و می‌تواند هر دو نوع بسته‌های IPv4 و IPv6 را درک نماید.

مکانیسم‌های انتقال هوشمند کمی وجود دارد؛ به عنوان نمونه IPv6 Tunneling، آدرس‌های IPv6 نگاشت شده به IPv4 و غیره. اولی، بسته IPv6 را در IPv4 کپسوله می‌کند؛ در حالی که دومی، آدرس‌های IPv6 را به IPv4 در پیاده‌سازی‌های دو پشته‌ای نگاشت می‌نماید.

 

مقایسه سریع IPv4 و IPv6

 

 

 

منبع:

linuxize