IPアドレス
IPアドレス
読み方:アイピーアドレス
【英】IP address
IPアドレスとは、インターネットやイントラネットなどのTCP/IPプロトコルを利用したネットワークにおける識別番号のことである。ネットワークに接続された個々のコンピュータに割り振られる。
現在のインターネットで用いられているIPv4では、8ビットずつ4つに区切られた32ビットの数値が使われており、0から255までの10進数の数字が4つ並べて表される。なお、ネットワーク上では、同じIPアドレスが存在することは許されていないため、国際的な管理組織であるNICによって一元的に管理されている。また、日本においては、JPNICが管理を行っている。
IPアドレスは、数値が並んでいるだけのものであるため、DNSというシステムを用いることで、IPアドレスに名称(ドメイン名)を付けることも可能である。
現在のIPv4では、42億9496万7296台のIPアドレスまでしか表すことができないため、IPアドレス資源の枯渇が問題となっているが、後継バージョンのIPv6では、約3.4×10の38乗個のIPアドレスを表すことができ、実質的には、ほぼ無限大にまで拡大されている。これにより、パソコンだけでなく家電や車など、あらゆる身の回りのもの全てにIPアドレスを割り当てることも可能になるといわれている。
IPAddress クラス
アセンブリ: System (system.dll 内)



サーバーに問い合わせて、ファミリ アドレスおよびそのサーバーがサポートする IP アドレスを取得する方法を次の例に示します。
' This program shows how to use the IPAddress class to obtain a server ' IP addressess and related information. Imports System Imports System.Net Imports System.Net.Sockets Imports System.Text.RegularExpressions Imports Microsoft.VisualBasic Namespace Mssc.Services.ConnectionManagement Module M_TestIPAddress Class TestIPAddress 'The IPAddresses method obtains the selected server IP address information. 'It then displays the type of address family supported by the server and 'its IP address in standard and byte format. Private Shared Sub IPAddresses(ByVal server As String) Try Dim ASCII As New System.Text.ASCIIEncoding() ' Get server related information. Dim heserver As IPHostEntry = Dns.Resolve(server) ' Loop on the AddressList Dim curAdd As IPAddress For Each curAdd In heserver.AddressList ' Display the type of address family supported by the server. If the ' server is IPv6-enabled this value is: InternNetworkV6. If the server ' is also IPv4-enabled there will be an additional value of InterNetwork. Console.WriteLine(("AddressFamily: " + curAdd.AddressFamily.ToString())) ' Display the ScopeId property in case of IPV6 addresses. If curAdd.AddressFamily.ToString() = ProtocolFamily.InterNetworkV6.ToString() Then Console.WriteLine(("Scope Id: " + curAdd.ScopeId.ToString())) End If ' Display the server IP address in the standard format. In ' IPv4 the format will be dotted-quad notation, in IPv6 it will be ' in in colon-hexadecimal notation. Console.WriteLine(("Address: " + curAdd.ToString())) ' Display the server IP address in byte format. Console.Write("AddressBytes: ") Dim bytes As [Byte]() = curAdd.GetAddressBytes() Dim i As Integer For i = 0 To bytes.Length - 1 Console.Write(bytes(i)) Next i Console.WriteLine(ControlChars.Cr + ControlChars.Lf) Next curAdd Catch e As Exception Console.WriteLine(("[DoResolve] Exception: " + e.ToString())) End Try End Sub 'IPAddresses ' This IPAddressAdditionalInfo displays additional server address information. Private Shared Sub IPAddressAdditionalInfo() Try ' Display the flags that show if the server supports IPv4 or IPv6 ' address schemas. Console.WriteLine((ControlChars.Cr + ControlChars.Lf + "SupportsIPv4: " + Socket.SupportsIPv4.ToString())) Console.WriteLine(("SupportsIPv6: " + Socket.SupportsIPv6.ToString())) If Socket.SupportsIPv6 Then ' Display the server Any address. This IP address indicates that the server ' should listen for client activity on all network interfaces. Console.WriteLine((ControlChars.Cr + ControlChars.Lf + "IPv6Any: " + IPAddress.IPv6Any.ToString())) ' Display the server loopback address. Console.WriteLine(("IPv6Loopback: " + IPAddress.IPv6Loopback.ToString())) ' Used during autoconfiguration first phase. Console.WriteLine(("IPv6None: " + IPAddress.IPv6None.ToString())) Console.WriteLine(("IsLoopback(IPv6Loopback): " + IPAddress.IsLoopback(IPAddress.IPv6Loopback).ToString())) End If Console.WriteLine(("IsLoopback(Loopback): " + IPAddress.IsLoopback(IPAddress.Loopback).ToString())) Catch e As Exception Console.WriteLine(("[IPAddresses] Exception: " + e.ToString())) End Try End Sub 'IPAddressAdditionalInfo Public Shared Sub Main(ByVal args() As String) Dim server As String = Nothing ' Define a regular expression to parse user's input. ' This is a security check. It allows only ' alphanumeric input string between 2 to 40 character long. 'Define a regular expression to parse user's input. 'This is a security check. It allows only 'alphanumeric input string between 2 to 40 character long. Dim rex As New Regex("^[a-zA-Z]\w{1 ,39}$") If args.Length < 1 Then ' If no server name is passed as an argument to this program, use the current ' server name as default. server = Dns.GetHostName() Console.WriteLine(("Using current host: " + server)) Else server = args(0) If Not rex.Match(server).Success Then Console.WriteLine("Input string format not allowed.") Return End If End If ' Get the list of the addresses associated with the requested server. IPAddresses(server) ' Get additonal address information. IPAddressAdditionalInfo() End Sub 'Main End Class 'TestIPAddress End Module End Namespace
// This program shows how to use the IPAddress class to obtain a server // IP addressess and related information. using System; using System.Net; using System.Net.Sockets; using System.Text.RegularExpressions; namespace Mssc.Services.ConnectionManagement { class TestIPAddress { /** * The IPAddresses method obtains the selected server IP address information. * It then displays the type of address family supported by the server and its * IP address in standard and byte format. **/ private static void IPAddresses(string server) { try { System.Text.ASCIIEncoding ASCII = new System.Text.ASCIIEncoding(); // Get server related information. IPHostEntry heserver = Dns.Resolve(server); // Loop on the AddressList foreach (IPAddress curAdd in heserver.AddressList) { // Display the type of address family supported by the server. If the // server is IPv6-enabled this value is: InternNetworkV6. If the server // is also IPv4-enabled there will be an additional value of InterNetwork. Console.WriteLine("AddressFamily: " + curAdd.AddressFamily.ToString()); // Display the ScopeId property in case of IPV6 addresses. if(curAdd.AddressFamily.ToString() == ProtocolFamily.InterNetworkV6.ToString()) Console.WriteLine("Scope Id: " + curAdd.ScopeId.ToString()); // Display the server IP address in the standard format. In // IPv4 the format will be dotted-quad notation, in IPv6 it will be // in in colon-hexadecimal notation. Console.WriteLine("Address: " + curAdd.ToString()); // Display the server IP address in byte format. Console.Write("AddressBytes: "); Byte[] bytes = curAdd.GetAddressBytes(); for (int i = 0; i < bytes.Length; i++) { Console.Write(bytes[i]); } Console.WriteLine("\r\n"); } } catch (Exception e) { Console.WriteLine("[DoResolve] Exception: " + e.ToString()); } } // This IPAddressAdditionalInfo displays additional server address information. private static void IPAddressAdditionalInfo() { try { // Display the flags that show if the server supports IPv4 or IPv6 // address schemas. Console.WriteLine("\r\nSupportsIPv4: " + Socket.SupportsIPv4); Console.WriteLine("SupportsIPv6: " + Socket.SupportsIPv6); if (Socket.SupportsIPv6) { // Display the server Any address. This IP address indicates that the server // should listen for client activity on all network interfaces. Console.WriteLine("\r\nIPv6Any: " + IPAddress.IPv6Any.ToString()); // Display the server loopback address. Console.WriteLine("IPv6Loopback: " + IPAddress.IPv6Loopback.ToString()); // Used during autoconfiguration first phase. Console.WriteLine("IPv6None: " + IPAddress.IPv6None.ToString()); Console.WriteLine("IsLoopback(IPv6Loopback): " + IPAddress.IsLoopback(IPAddress.IPv6Loopback)); } Console.WriteLine("IsLoopback(Loopback): " + IPAddress.IsLoopback(IPAddress.Loopback)); } catch (Exception e) { Console.WriteLine("[IPAddresses] Exception: " + e.ToString()); } } public static void Main(string[] args) { string server = null; // Define a regular expression to parse user's input. // This is a security check. It allows only // alphanumeric input string between 2 to 40 character long. Regex rex = new Regex(@"^[a-zA-Z]\w{1,39}$"); if (args.Length < 1) { // If no server name is passed as an argument to this program, use the current // server name as default. server = Dns.GetHostName(); Console.WriteLine("Using current host: " + server); } else { server = args[0]; if (!(rex.Match(server)).Success) { Console.WriteLine("Input string format not allowed."); return; } } // Get the list of the addresses associated with the requested server. IPAddresses(server); // Get additonal address information. IPAddressAdditionalInfo(); } } }
// This program shows how to use the IPAddress class to obtain a server // IP addressess and related information. import System.*; import System.Net.*; import System.Net.Sockets.*; import System.Text.RegularExpressions.*; class TestIPAddress { /** The IPAddresses method obtains the selected server IP address information.It then displays the type of address family supported by the server and its IP address in standard and byte format. */ private static void IPAddresses(String server) { try { System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding(); // Get server related information. IPHostEntry heserver = Dns.Resolve(server); // Loop on the AddressList for (int iCtr = 0; iCtr < heserver.get_AddressList().length; iCtr++) { IPAddress curAdd = heserver.get_AddressList()[iCtr]; // Display the type of address family supported by the server. // If the server is IPv6-enabled this value is:InternNetworkV6. // If the server is also IPv4-enabled there will be an // additional value of InterNetwork. Console.WriteLine(("AddressFamily: " + curAdd.get_AddressFamily().ToString())); // Display the ScopeId property in case of IPV6 addresses. if (curAdd.get_AddressFamily().ToString().equals( ProtocolFamily.InterNetworkV6.ToString())) { Console.WriteLine(("Scope Id: " +(new Long(curAdd.get_ScopeId())).ToString())); } // Display the server IP address in the standard format. In // IPv4 the format will be dotted-quad notation, in IPv6 // it will be in in colon-hexadecimal notation. Console.WriteLine(("Address: " + curAdd.ToString())); // Display the server IP address in byte format. Console.Write("AddressBytes: "); ubyte bytes[] = curAdd.GetAddressBytes(); for (int i = 0; i < bytes.length; i++) { Console.Write(bytes[i]); } Console.WriteLine("\r\n"); } } catch (System.Exception e) { Console.WriteLine(("[DoResolve] Exception: " + e.ToString())); } } //IPAddresses // This IPAddressAdditionalInfo displays additional server address // information. private static void IPAddressAdditionalInfo() { try { // Display the flags that show if the server supports IPv4 or IPv6 // address schemas. Console.WriteLine("\r\nSupportsIPv4: " + System.Convert.ToString(Socket.get_SupportsIPv4())); Console.WriteLine("SupportsIPv6: " + System.Convert.ToString(Socket.get_SupportsIPv6())); if (Socket.get_SupportsIPv6()) { // Display the server Any address. This IP address indicates // that the server should listen for client activity on all // network interfaces. Console.WriteLine(("\r\nIPv6Any: " + (IPAddress.IPv6Any).ToString())); // Display the server loopback address. Console.WriteLine(("IPv6Loopback: " + (IPAddress.IPv6Loopback).ToString())); // Used during autoconfiguration first phase. Console.WriteLine(("IPv6None: " + (IPAddress.IPv6None).ToString())); Console.WriteLine(("IsLoopback(IPv6Loopback): " + IPAddress.IsLoopback(IPAddress.IPv6Loopback))); } Console.WriteLine(("IsLoopback(Loopback): " + System.Convert.ToString(IPAddress. IsLoopback(IPAddress.Loopback)))); } catch (System.Exception e) { Console.WriteLine(("[IPAddresses] Exception: " + e.ToString())); } } //IPAddressAdditionalInfo public static void main(String[] args) { String server = null; // Define a regular expression to parse user's input. // This is a security check. It allows only // alphanumeric input string between 2 to 40 character long. Regex rex = new Regex("^[a-zA-Z]\\w{1,39}$"); if (args.length < 1) { // If no server name is passed as an argument to this program, // use the current server name as default. server = Dns.GetHostName(); Console.WriteLine(("Using current host: " + server)); } else { server = args[0]; if (!(rex.Match(server).get_Success())) { Console.WriteLine("Input string format not allowed."); return; } } // Get the list of the addresses associated with the requested server. IPAddresses(server); // Get additonal address information. IPAddressAdditionalInfo(); } //main } //TestIPAddress

System.Net.IPAddress


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IPAddress コンストラクタ (Int64)
アセンブリ: System (system.dll 内)



Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IPAddress コンストラクタ (Byte[], Int64)
アセンブリ: System (system.dll 内)



このコンストラクタは IPv6 アドレスをインスタンス化します。scopeid は、リンクローカル アドレスの場合にネットワーク インターフェイスを識別します。スコープは、リンクローカル アドレスおよびサイトローカル アドレスの場合にだけ有効です。

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IPAddress コンストラクタ

名前 | 説明 |
---|---|
IPAddress (Byte[]) | Byte 配列として指定されたアドレスを使用して、IPAddress クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
IPAddress (Int64) | Int64 として指定されたアドレスを使用して、IPAddress クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
IPAddress (Byte[], Int64) | 指定したアドレスとスコープを使用して、IPAddress クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |

IPAddress コンストラクタ (Byte[])
アセンブリ: System (system.dll 内)



IPAddress が、Address プロパティが address に設定された状態で作成されます。
address の長さが 4 の場合は、IPAddress(Byte[]) が IPv4 アドレスを作成します。それ以外の場合は、スコープが 0 の IPv6 アドレスが作成されます。

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IPAddress フィールド
IPAddress プロパティ
IPAddress メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 オーバーライドされます。 |
![]() | GetAddressBytes | IPAddress のコピーをバイト配列として提供します。 |
![]() | GetHashCode | オーバーライドされます。 IP アドレスのハッシュ値を返します。 |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | HostToNetworkOrder | オーバーロードされます。 値をホストのバイト順からネットワークのバイト順に変換します。 |
![]() | IsLoopback | 指定した IP アドレスがループバック アドレスかどうかを示します。 |
![]() | NetworkToHostOrder | オーバーロードされます。 数値をネットワークのバイト順からホストのバイト順に変換します。 |
![]() | Parse | IP アドレス文字列を IPAddress インスタンスに変換します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | オーバーライドされます。 インターネット アドレスを標準表記に変換します。 |
![]() | TryParse | 文字列が有効な IP アドレスであるかどうかを判断します。 |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

IPAddress メンバ
インターネット プロトコル (IP: Internet Protocol) アドレスを提供します。
IPAddress データ型で公開されるメンバを以下の表に示します。




名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 オーバーライドされます。 |
![]() | GetAddressBytes | IPAddress のコピーをバイト配列として提供します。 |
![]() | GetHashCode | オーバーライドされます。 IP アドレスのハッシュ値を返します。 |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | HostToNetworkOrder | オーバーロードされます。 値をホストのバイト順からネットワークのバイト順に変換します。 |
![]() | IsLoopback | 指定した IP アドレスがループバック アドレスかどうかを示します。 |
![]() | NetworkToHostOrder | オーバーロードされます。 数値をネットワークのバイト順からホストのバイト順に変換します。 |
![]() | Parse | IP アドレス文字列を IPAddress インスタンスに変換します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | オーバーライドされます。 インターネット アドレスを標準表記に変換します。 |
![]() | TryParse | 文字列が有効な IP アドレスであるかどうかを判断します。 |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

IPアドレス
![]() |
IPアドレス(アイピーアドレス、英: IP address)は、Internet Protocol(IP)で通信相手を識別するための番号である。インターネットアドレスとも呼ばれる[1][2]。
概要
IPアドレスは、IPネットワーク上の情報機器を識別するために指定するネットワーク層における識別用の番号である。データリンク層のMACアドレスを物理アドレスということに対応して、論理アドレスとも呼ばれる。IPのバージョン(IPv4とIPv6)に応じて、IPv4のIPアドレス(IPv4アドレス)とIPv6のIPアドレス(IPv6アドレス)がある。当初、RFC 791でIPを定義した際に、IPが現在のIPv4に当たるもののみであったことから、狭義では、単にIPアドレスと呼称した場合にIPv4のIPアドレスを意味する場合がある。
IPアドレスは、IPv4では32ビット、IPv6では128ビットの数値である。この数値のうち、最上位ビット(MSB)に近い側をネットワーク部、最下位ビット(LSB)に近い側をホスト部として区別する。ネットワーク部がネットワークを指定し、ホスト部がそのネットワーク内の機器を指定する。ネットワーク部とホスト部の区別にはサブネットマスクを用いることができる(ある)。
表記

IPv4のIPアドレスの表記法には以下の規則がある。IPv6については「IPv6」および「IPv6アドレス」の記事で取り扱う。
- 通常は、ドット付き十進表記[注 1]あるいはドットアドレス[注 2]と呼ばれる 0 - 255 の数字4組(8ビット × 4 = 32ビット)をドットで繋いだ記法で表記される。
- (例)192.168.0.1
gethostbyname()
や inet_aton()
など、IPアドレスを解釈する実装の一部では以下のような表記も許している。
- 数字が3組のときは、3番目は16ビットと解釈される。
- (例)192.168.1 (= 192.168.0.1)
- 数字が2組のときは、2組目は24ビットと解釈される。
- (例)192.11010049 (= 192.168.0.1、168 × 2562 + 0 × 256 + 1 = 11010049)
- ドットがないときは、単一の32ビット数と解釈される。ロングIPアドレスなどとも呼ばれる。
- (例)3232235521 (= 192.168.0.1、192 × 2563 + 168 × 2562 + 0 × 256 + 1 = 3232235521)
- 各数字は0xを前置すると16進数、0を前置すると8進数と解釈される。
- (例)
0xC0A80001
(= 192.168.0.1) - (例)
0xC0.0250.1
(= 192.168.0.1、(C0→192、250→168))
- (例)
これらの表記は、URL StandardでURLの一部分として定義されている[3][4]。ただし、オペレーティングシステム(OS)やアプリケーション(例:ウェブブラウザソフト)、ネットワーク機器などによっては利用できないことがある。また悪意のある者がフィッシングサイトなどのURLを偽装するために用いる場合もあるので、注意が必要である。
アドレスクラス
IPアドレスは、次の5つのアドレスクラスに分かれている。
クラス | アドレス範囲 | 用途(先頭ビットの値) |
---|---|---|
クラスA | 0.0.0.0 - 127.255.255.255 | ネットワークアドレス長は8ビット、ホストアドレス長は24ビット。RFC 791で規定。(0-で始まる) |
クラスB | 128.0.0.0 - 191.255.255.255 | ネットワークアドレス長は16ビット、ホストアドレス長も16ビット。RFC 791で規定。(10-で始まる) |
クラスC | 192.0.0.0 - 223.255.255.255 | ネットワークアドレス長は24ビット、ホストアドレス長は8ビット。RFC 791で規定。(110-で始まる) |
クラスD | 224.0.0.0 - 239.255.255.255 | IPマルチキャスト専用。RFC 1112で規定。(1110-で始まる) |
クラスE | 240.0.0.0 - 255.255.255.255 | 将来の使用のために予約されている。RFC 1112で規定。(1111-で始まる) |
クラスAからクラスCまでは、ネットワーク部とホスト部の境界が8ビット単位で区分けされている。クラスAはネットワーク部が短く(8ビット)、ホスト部が長い(24ビット)。すなわち、多くの機器を保有する大組織や多くの顧客を有する大規模なインターネットサービスプロバイダ(ISP)に割り当てるのに適している。クラスCはその逆である。これは、日本の電話番号において東京などの人口が多い地域には03のような短い市外局番が割り当てられ、人口の少ない地域には長い市外局番が割り当てられているのと同じである。クラスAが約1,677万台、クラスBが65,534台、クラスCが254台のホストを接続できる。
クラスBの割り当てを受けたネットワークの中には65,534台のホスト(インターネットサービスプロバイダであれば接続ユーザー数)を同時にすべて接続することがまれであるネットワークも存在し、IPアドレスが無駄に消費されることになった。そこで現在ではアドレスクラスを使わず、ネットワーク部とホスト部の境界を8ビット単位に固定せずに細分化する可変長サブネットマスクやCIDR(Classless Inter-Domain Routing)の使用が一般化している。
IPアドレスの割り当て範囲を示すために、IPアドレスの末尾に「/」(スラッシュ)とともにネットワークアドレス長を付記して表すことも多い。IPv4の場合、MSB側からのビット数でネットワークアドレス長を表す。例えば192.168.0.0/24の表記の場合、ネットワーク部はMSBから24ビットで残り8ビットがホスト部となる。アドレスクラスでなく可変長サブネットマスクを使用した場合、ネットワークアドレス長の数字は必ずしも8の倍数にはならないことになる。
CIDR表
「CIDR」は、「サイダー」と読む。
Classless Inter-Domain Routingを用いることで、複数のIPアドレスを範囲指定して一つのアドレスブロックとして扱うことができる。例えば、192.168.1.0 - 192.168.1.255という範囲のIPアドレスは、192.168.1.0/24として表すことができる。CIDRを使うことでアドレスブロックの集約や分割が容易に行えることから、IPパケットのルーティングで主に活用されている。例えば、203.0.113.0/26、203.0.113.64/26、203.0.113.128/26、203.0.113.192/26の4つのアドレスブロックは、203.0.113.0/24[注 3]として集約することができる。
例えば69.208.0.0を含むIPアドレス群の場合、CIDRと開始アドレスおよび終了アドレスの関係は以下のようになる。
CIDR | 開始アドレス | 終了アドレス | 含まれるアドレス数 | 二進法表記したプレフィックス部分のアドレス |
---|---|---|---|---|
69.208.0.0/0 | 0.0.0.0 | 255.255.255.255 | 4,294,967,296 | ********.********.********.******** |
69.208.0.0/1 | 0.0.0.0 | 127.255.255.255 | 2,147,483,648 | 0*******.********.********.******** |
69.208.0.0/4 | 64.0.0.0 | 79.255.255.255 | 268,435,456 | 0100****.********.********.******** |
69.208.0.0/8 | 69.0.0.0 | 69.255.255.255 | 16,777,216 | 01000101.********.********.******** |
69.208.0.0/11 | 69.192.0.0 | 69.223.255.255 | 2,097,152 | 01000101.110*****.********.******** |
69.208.0.0/12 | 69.208.0.0 | 69.223.255.255 | 1,048,576 | 01000101.1101****.********.******** |
69.208.0.0/13 | 69.208.0.0 | 69.215.255.255 | 524,288 | 01000101.11010***.********.******** |
69.208.0.0/14 | 69.208.0.0 | 69.211.255.255 | 262,144 | 01000101.110100**.********.******** |
69.208.0.0/15 | 69.208.0.0 | 69.209.255.255 | 131,072 | 01000101.1101000*.********.******** |
69.208.0.0/16 | 69.208.0.0 | 69.208.255.255 | 65,536 | 01000101.11010000.********.******** |
69.208.0.0/17 | 69.208.0.0 | 69.208.127.255 | 32,768 | 01000101.11010000.0*******.******** |
69.208.0.0/18 | 69.208.0.0 | 69.208.63.255 | 16,384 | 01000101.11010000.00******.******** |
69.208.0.0/19 | 69.208.0.0 | 69.208.31.255 | 8,192 | 01000101.11010000.000*****.******** |
69.208.0.0/20 | 69.208.0.0 | 69.208.15.255 | 4,096 | 01000101.11010000.0000****.******** |
69.208.0.0/21 | 69.208.0.0 | 69.208.7.255 | 2,048 | 01000101.11010000.00000***.******** |
69.208.0.0/22 | 69.208.0.0 | 69.208.3.255 | 1,024 | 01000101.11010000.000000**.******** |
69.208.0.0/23 | 69.208.0.0 | 69.208.1.255 | 512 | 01000101.11010000.0000000*.******** |
69.208.0.0/24 | 69.208.0.0 | 69.208.0.255 | 256 | 01000101.11010000.00000000.******** |
69.208.0.0/25 | 69.208.0.0 | 69.208.0.127 | 128 | 01000101.11010000.00000000.0******* |
69.208.0.0/26 | 69.208.0.0 | 69.208.0.63 | 64 | 01000101.11010000.00000000.00****** |
69.208.0.0/27 | 69.208.0.0 | 69.208.0.31 | 32 | 01000101.11010000.00000000.000***** |
69.208.0.0/28 | 69.208.0.0 | 69.208.0.15 | 16 | 01000101.11010000.00000000.0000**** |
69.208.0.0/29 | 69.208.0.0 | 69.208.0.7 | 8 | 01000101.11010000.00000000.00000*** |
69.208.0.0/30 | 69.208.0.0 | 69.208.0.3 | 4 | 01000101.11010000.00000000.000000** |
69.208.0.0/31 | 69.208.0.0 | 69.208.0.1 | 2 | 01000101.11010000.00000000.0000000* |
69.208.0.0/32 | 69.208.0.0 | 69.208.0.0 | 1 | 01000101.11010000.00000000.00000000 |
- 表の見方の例
- 69.208.0.0/16は、69.208.0.0から69.208.255.255までの65,536個のアドレスを含む。
- 69.208.0.0/24は、69.208.0.0から69.208.0.255までの256個のアドレスを含む。
スコープ
通信可能な範囲のことをスコープという。IPアドレスは、それぞれにスコープが決められている。(→一覧)
グローバルIPアドレス
後述するプライベートIPアドレス、リンクローカルアドレス、特殊用途のIPアドレスなどを除いたIPアドレスは「グローバルIPアドレス」と呼び、インターネットの接続用に利用され、重複が発生しないように管理される。そのため、ICANNを頂点とした階層的な委譲関係によって、世界的な管理が行われている。
通常、パソコンやルーターなどをインターネットに接続すると、ISPに割り振られているグローバルIPアドレスの中の1つがパソコンなどに割り当てられる。
プライベートIPアドレス
プライベートIPアドレス(ローカルIPアドレス)は、プライベートネットワーク(外部から利用できない社内LANなど)のアドレスとして使うことができる。異なるプライベートネットワークを相互接続してルーティングすることも可能である。
プライベートIPアドレスとして、次のアドレス空間が予約されている。ネットワークの規模に応じて、使い分ける必要がある。
クラス | 範囲 | サブネットマスク | アドレス数 |
---|---|---|---|
クラスA | 10.0.0.0 - 10.255.255.255 | 255.0.0.0 | 16,777,216(16,777,216 × 1 サブネット) |
クラスB × 16 | 172.16.0.0 - 172.31.255.255 | 255.240.0.0 | 1,048,576(65,536 × 16 サブネット) |
クラスC × 256 | 192.168.0.0 - 192.168.255.255 | 255.255.0.0 | 65,536(256 × 256 サブネット) |
リンクローカルアドレス
WindowsなどではIPアドレスが設定されておらず、DHCPサーバも見付からない場合には自動的に169.254で始まるクラスBのIPアドレスが振られる(APIPAという機能)。これはリンクローカルアドレスと呼ばれ単一のLAN内での通信に使うことができるが、ルーティングができないなどプライベートアドレスとは異なるものである。
プライベートIPアドレスとインターネット
プライベートIPアドレスとグローバルIPアドレスを相互変換することにより、インターネットに接続することができる。その方法として、NAPT(実装としてはIPマスカレードやipfwなど)やプロキシサーバがある。
インターネット接続サービスによってはインターネットに接続する機器にグローバルIPアドレスではなく、このプライベートIPアドレスを割り当てることもある[5]。
プライベートIPアドレスとこれに関する仕組みによって、グローバルIPアドレスを多量に消費することなくインターネットに接続できる機器を増やすことができる。
ISP Shared Address
2012年4月にRFC 6598として発行したインターネットサービスプロバイダ(ISP)が契約者に貸し出すIPアドレスで、範囲は100.64.0.0/10。
ISP Shared Addressは、個々のISPのネットワーク内でのみ使用可能なIPアドレスで、キャリアグレードNAT(CGN)によりISP Shared AddressとグローバルIPアドレスを相互変換することにより、インターネットに接続することができる。
IPアドレス枯渇問題により、契約者が増加しても、ISPが契約者に貸し出すグローバルIPアドレスを新規に獲得できなくなった。
しかし、ISPが契約者にプライベートIPアドレスを割り当てると、該当するIPアドレスを契約者のローカルネットワーク内で使用できなくなる。例えば、NTTが提供するフレッツの地域IP網においてプライベートIPアドレス(10.0.0.0/8)を使用しているため、フレッツの利用者がプライベートIPアドレス(10.0.0.0/8)をローカルネットワーク内で使用できない。
そこで、ISP Shared Addressの導入により、ISPはISP Shared Addressを使用し、ISPの契約者は、任意のプライベートIPアドレスが使用できるようになる。
なお、/10というアドレス範囲は、東京地域を網羅するISPがISP Shared Addressを導入するには、/10程度のアドレス範囲が必要であるという、日本からの提案がベースになっている。
特殊用途のIPアドレス
一部のアドレスおよびブロックは、特殊な用途に使われる。それぞれのスコープに応じて、通常、機器に割り振るべきではない。詳細はIPv4#特別用途のアドレスを参照のこと。
IPアドレスの付与
グローバルIPアドレスは、まずインターネットレジストリ(APNICやJPNICなど)からISPにまとまった単位で付与される。これを割り振り(allocation)という。ISPは末端の利用者(個人、法人など)に対して、利用契約に基づいてIPアドレスを払い出す。これを割り当て(assignment)という。かつて一部の大学やIT企業が非営利でインターネットを支えていた時代には、レジストリからこれらの組織に直接割り当てられる例が多かったが、今日では商用ISPが発達したため、新規の割り当てではそのような例は少ない。インターネットレジストリにもIANA(Internet Assigned Numbers Authority) →RIR(Regional Internet Registry)→NIR(National Internet Registry)→LIR(Local Internet Registry)といった階層構造が存在する[6]。
個人契約者の場合、グローバルIPアドレス1個を動的に割り当てる(接続ごとにIPアドレスが変わることがある)ものがほとんどである。ただしISPや契約プランによってはプライベートIPアドレスやISP Shared Addressを割り当てるもの(CATV接続に多い)、グローバルIPアドレス1個を固定で割り当てるもの、複数のグローバルIPアドレスを固定で割り当てるものもある。割り当ての通信プロトコルはダイヤルアップ接続ではPPP、ADSL・FTTHなどではPPPoE、CATVや公衆無線LAN(ホットスポット)ではDHCPによることが一般的である。
法人契約の場合はDNSやメールなどの各種サーバを運用するケースが多いこと、VPN(仮想専用網)などによる取引先などとのデータのやりとりにおいて、IPアドレスによる認証やアクセス制限があることなどの理由により、複数(多いのは4個から16個程度)のグローバルIPアドレスを固定で割り当てる契約が一般的である。
なお、家庭内や組織内でのプライベートIPアドレスの割り当てはDHCP(専用サーバの他、一般向けのいわゆるブロードバンドルーターに実装されている)によることが一般的である。ただし、サーバやルーターのLAN側など固定IPアドレスを必要とするものや、割り当てを厳密に管理したい場合には固定IPアドレスの割り当てが行われる。
IPアドレス枯渇問題
2019年3月現在、特殊な用途のものを除く、すべてのIPv4のグローバルアドレスを誰かに割り当てた状態になりつつある。すなわちIPv4のグローバルアドレスに空きがなく、インターネット上に公開するIP機器の増設が不可能になるという問題が発生している。不動産に例えると、これまでは新規分譲で土地が提供されて建物を建築できていたが、分譲する土地がなくなったために、既存の建物が建っている土地を地上げして再開発しない限り新たな建物を建てられなくなった状態である。
2017年2月15日 LACNICのIPv4アドレス在庫が/11ブロック以下となり、AFRINICを除く4つのRIRでIPv4アドレス在庫枯渇の最終段階になった[7]。
この枯渇問題の対策として、IPv6の普及が進められている。
脚注
注釈
出典
- ^ TR X 0055:2002 インターネット利用者のための用語
- ^ 『IPアドレス』 - コトバンク
- ^ WHATWG (2017年7月30日). “URL Standard 3.5. Host parsing” (英語). 2017年7月30日閲覧。
- ^ “26431 – Define IPv4 parsing” (英語). W3C (2015年7月1日). 2017年7月30日閲覧。
- ^ 日本ケーブルラボ事務局山下良蔵 (2009年10月21日). “IPv4アドレス在庫枯渇対応に関する広報戦略ワーキンググループ(第4回)配布資料 資料WG広4-2 ケーブルテレビ業界のIPv4アドレス枯渇対応とIPv6化” (PDF). 総務省. p. 15. 2017年11月26日閲覧。
- ^ 「インターネット用語1分解説 - 割り振り (Allocation)、割り当て (Assignment) とは」『JPNIC News & Views』8巻(2002年1月15日)、日本ネットワークインフォメーションセンター。
- ^ “LACNIC Announces the Start of the Final Phase of IPv4 Exhaustion”. LACNIC (2017年2月15日). 2017年11月19日閲覧。
関連項目
- IPv6アドレス
- IPアドレス枯渇問題
- IPv4
- IPv6
- グローバルIPアドレス(クラスA)
- プライベートIP
- Domain Name System(DNS)
- ホスト名(ドメイン名)
- Dynamic Host Configuration Protocol(DHCP)
- MACアドレス
- ポート番号
- Mobile IP
- サブアロケーション
- アサインメントウィンドウ
- NAT
- IPマスカレード(NAPT:ネットワークアドレス変換)
- ジオロケーション(geolocation)/ジオロケーティング(geolocating)/GeoIP
外部リンク
「IP address」の例文・使い方・用例・文例
- データの通信や交換を容易にするためにTCP/IPネットワークプロトコルを用いた、世界的に広がったネットワークから成るコンピュータネットワーク
- 4MIPSは一秒間に4,000,000インストラクションである
- リンケージサービスという,キャプテンで特定のIPから関連のIP情報を検索するサービス
- アル・ゴア氏とIPCCがノーベル平和賞を共同受賞
- 2007年のノーベル平和賞は,前米国副大統領のアル・ゴア氏と国連の気候変動に関する政府間パネル(IPCC)が共同で受賞した。
- IPCCは気候変動に関する世界有数の専門機関だ。
- 100か国以上の何千人もの科学者たちがIPCCのために科学報告書の作成に取り組んでいる。
- ノーベル賞委員会は,IPCCが過去20年間にわたり,その報告書によって,人間の活動と地球温暖化の関係をより明確にしてきたと考えた。
- IPCCのラジェンドラ・パチャウリ議長は,「この賞によって,このテーマが脚光を浴(あ)び,認識がさらに高まって危機感が生まれることを期待する。」と話した。
- グーグルは2004年に新規株式公開(IPO)で19億ドルを調達したが,フェイスブックは50億ドル(3800億円)を調達する見込みだ。
- それはインターネット関連企業としては史上最大のIPOとなる。
- IPAddressのページへのリンク