IP اختصار عبارت Internet Protocol است که مدل فنی ارسال و دریافت بستهها در اینترنت را به همراه آدرس فرستنده و گیرنده در شبکهی اینترنت یا هر شبکهی کامپیوتری مشخص میکند. در حال حاضر دو نسخه برای IP وجود دارد که شامل IPv4 و IPv6 است.
IPv6 که Internet Protocol Next Generation نیز خوانده میشود، جدیدترین پروتکل اینترنت برای اختصاص آدرس IP است که برای تکمیل و در نهایت جایگزین شدن IPV4 در نظر گرفته شده است. در حال حاضر تا زمان مقتضی شاهد استفاده از هر دو پروتکل بهصورت همزمان خواهیم بود تا اینکه در نهایت IPv6 بهصورت کامل جای این پروتکل را بگیرد. IPv6 به این علت طراحی شده است تا علاوه بر داشتن آدرسهای بیشتر برای اتصال دستگاههای بیشتر در مقایسه با IPv4، ظرفیت انتقال اطلاعات در شبکه اینترنت یا همان ترافیک را افزایش دهد.
IPv4 یک آدرس اینترنتی 32 بیتی است که بهصورت اعداد دهدهی (دستگاه اعداد مبنای ۱0) در قالب یک رشته نمایش داده میشود. یک آدرس اینترنتی مبتنی بر IPv4 بهصورت چهار دسته (Octet) 8 بیتی نوشته میشود که توسط یک نقطه از هم جدا میشوند. هر یک از چهار دسته عدد سهتایی میتواند مقادیر صفر تا 255 را داشته باشد. پس برای هر بخش می توان 256 رقم (2 به توان 8) را در نظر گرفت که با این حساب 2 به توان 32 یا 4294967296 رقم خواهیم داشت. برای مثال آدرس زیر یک آدرس اینترنتی مبتنی بر IPv4 است.
1172.16.110.1
IPv6 یک آدرس اینترنتی 128 بیتی است که بهصورت اعداد هگزادسیمال استاندارد (دستگاه اعداد مبنای 16) در قالب یک رشته نمایش داده میشود. یک آدرس اینترنتی مبتنی بر IPv6 بهصورت هشت دسته (Octet) 16 بیتی نوشته میشود که توسط یک کالِن از هم جدا میشوند. هر یک از هشت دسته 8 بیتی میتواند مقادیر 0000 تا FFFF را داشته باشد. پس برای هر بخش میتوان 65,536 رقم (2 به توان 16) را در نظر گرفت که با این حساب 2 به توان 128 یا 340,282,366,920,938,463,463,374,607,431,768,211,456 عدد خواهیم داشت که حدود 7,922,816,251,426,433,759,354 برابر بیشتر از IPv4 میباشد. برای مثال آدرس زیر یک آدرس اینترنتی مبتنی بر IPv6 است.
165b3:b834:45a3:0000:0000:762e:0270:5224
در IPv6 بخشهایی که تمام رقمهای آن صفر میباشند را میتوان حذف نمود و به جای آنها از کاراکتر : استفاده کرد. به عنوان مثال آدرسهای زیر مشابه هم هستند:
12001:cdba:0000:0000:0000:0000:3257:9652
2
32001:cdba:0:0:0:0:3257:9652
4
52001:cdba::3257:9652
برای کار با آدرسهای IPv4 و IPv6 در CSharp از کتابخانه System.Net و کلاس IPAddress استفاده میشود.
به منظور اعتبارسنجی آدرسهای IP میتوان از کد زیر استفاده نمود:
1public static bool IsValidIp(string address)
2{
3 return IPAddress.TryParse(address, out _);
4}
به منظور تشخیص نسخهی آدرسهای IP میتوان از کد زیر استفاده نمود:
1public static IpVersion GetIpVersion(string address)
2{
3 if (IPAddress.TryParse(address, out var ipAddress))
4 {
5 if(ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
6 {
7 return IpVersion.IPv4;
8 }
9 else if(ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
10 {
11 return IpVersion.IPv6;
12 }
13 }
14
15 return IpVersion.Unknown;
16}
17
18public enum IpVersion
19{
20 Unknown = -1,
21 IPv4,
22 IPv6
23}
آدرس Loopback یک آدرس IP ویژه است که برای آزمایش کارتهای شبکه، ارتباطات و انتقال در یک کارت شبکه محلی و برنامههای کاربردی استفاده میشود. این آدرس IP مربوط به Loopback Interface نرمافزار کارت شبکه است که هیچ سختافزاری با آن ارتباط ندارد و نیازی به اتصال فیزیکی به شبکه ندارد. برای تشخیص اینکه یک IP از نوع Loopback است یا خیر میتوان از کد زیر استفاده نمود:
1public static bool IsLoopback(string address)
2{
3 if (address == "localhost")
4 return true;
5
6 if (IPAddress.TryParse(address, out var ipAddress))
7 {
8 if (ipAddress == IPAddress.Loopback || ipAddress == IPAddress.IPv6Loopback)
9 return true;
10 }
11
12 return false;
13}