TCP/IPのIPでインターネットプロトコルを指す略語です。
プロトコルには他にも様々なものがあります。
OSI参照モデルのネットワーク層にほぼ対応する機能を持つインターネットにおいて情報の伝達を行う規格です。
IPというとIPアドレスや後述のIPv4、IPv6を思い出す方も多いことでしょう。ご想像の通り、IPアドレスやIPv4、IPv6のIPは、インターネットプロトコルの事です。
前述のようにIPは、情報の伝達を行う規格なわけですが、ネットワークを介したPCを含むコンピュータなどの情報伝達(LANなどプライベートアドレスを利用する環境では、各種ネットワーク周辺機器含む)を行うためのもので、人間の世界と同じように情報を伝達する為には、相手の居場所を知る必要があり、相手が自分に情報を伝達しようとすれば、自分の居場所を相手に知らせておく(相手が調べる、自分に聞くことも含む)必要がありますよね。
様々なシチュエーションがありますが、この時の居場所を住所としたとき、IPv4、IPv6は、住所を定められる場所の数や範囲を既定する規格であり、IPアドレスは、この住所を表すものです。
どのような住所かというと、「日本」とか「インド」とかではなく、数字の羅列です。
[***.***.***.***]([21x.19x.2x.3x])というような表記になります。
この時、このような数字の羅列は、人間が記憶するには不便なので、IPアドレスひとつひとつに対応したドメイン(ホスト)名(URIやURLで利用されるhttp://www.***.xx.xx/の[www.***.xx.xx](「www」をつけずに[xxx.xx.xx]または[xxx.xx]...etc.)をインターネット上で重複しないように世界、そして各国の標準化団体が割り当てています。
現代は日本語ドメインなるものもあり、「日本.jp」(国名のみはだめでしょうが)といった日本語のドメインも流通しています。
ちなみにバーチャルドメインというものがありますが、これは世界で唯一のIPアドレスではありません(ドメインは世界で唯一ですが)。
IPのあとに続く「v4」「v6」というのはバージョンです。後述のビットの組み合わせ数などとは無関係です。
IPアドレスは、IPv4が主流だったのですが、2000年以前から問題視されていたIP枯渇もインターネットが世界中に急速に普及し、「IPアドレスの枯渇の懸念が急速に」広まりました。更にWeb2.0と呼ばれるウェブ文化への期待やユビキタス社会といわれるような家電製品を含むあらゆる機器にもIPアドレスを割り当てようとする動きが決め手となり、IPアドレスの範囲を拡張する必要性から新たにIPv6という規格が策定され、実現しています。
IPv4や後継のIPv6は、IPアドレスを割当てられる範囲を既定する規格です。前述のIPアドレス[***.***.***.***]というのは、ドットで区切られた最大3桁(各桁は0~255)が4組あります(「000.000.000.000」~「255.255.255.255」)、これが従来のIPv4の住所を割り振ることができる範囲です。
IPアドレスの1桁は「0~255」と言いましたが、コンピュータは、元々、「0」と「1」しか理解できません。
逆に言うとコンピュータが「0と1」しか理解できない(シンプルの極みであり、合理的であるともいえる)為、これを人間が読み書きするにはあまりにも不便ですし、正誤すら確認する事が困難です。
その為、時代の変遷とともにこのビットと一意性を保ちながら、人間が解読しやすい表記に徐々に進化を遂げています。
その一端として「0」か「1」という組み合わせ1組を1ビットと呼ぼうという世界規格を作りました。2組あれば2ビット、4組は4ビット、8組で8ビット、16組で16ビット、32組で32ビット、64組で64ビット・・・と呼ぶ事になりました。
例えばこの時、(「0と1」の内)「0」か「1」が64組ズラリと並ぶと、過不足もいくつあるのか数えるのも大変ですし、ミスもしやすいですよね。
そこで(コンピュータにとっても人間にとっても)比較的わかりやすいように、処理量によって一般的には「4の倍数ビット」を利用する(注:ここではまだIPアドレスの3桁には辿り着いていません)事になりました。
「4ビット」なら「0000」~「1111」「8ビット」なら「00000000」~「11111111」ということです。
これもやみくもに並んでいるわけではなく、組み合わせによってバリエーションある様々な表現ができるようにしているので1ビットより4ビット、4ビットより8ビットの方が表現力が豊かということになります。
ビットの組み合わせは「0」か「1」という組み合わせ1組が1ビットですから、4ビットなら各桁が「0か1」という「2通り」の「4つの組み合わせ」による2の4乗(2×2×2×2="16")通り(数学の確率・統計)のパターンがある事になります。
ここでようやくIPアドレスのお話に戻りますが、IPアドレスの1桁が「0~255」というのは、ゼロを含めると256個の数がありますから、「0か1」という「2通り」の2を掛け続ける(2の累乗)と、8ビット(2×2×2×2×2×2×2×2="256")である(2を8回掛けた結果256になる)事がわかります。
8ビットは、「0か1」の組み合わせが8つですから、「00000000」~「11111111」まである事になり、IPアドレスは、さらにドットで4つに区切られていますから、
「00000000.00000000.00000000.00000000」~「11111111.11111111.11111111.11111111」という事になります。
8ビットが4組ですから、8ビット×4組で32ビットという事になります。IPv4は32ビットということもできますね。IPv6はというと128ビット(前述の通りv4やv6はバージョン)です。
ちなみにビットパターンという言葉をお聞きになったことがある方も多いと思いますが画像ももれなく、ビットの集まりと組み合わせで視覚的に絵が見える仕組みになっています。
256を4乗して頂くと40億を超える(4,294,967,296)組み合わせがあることになりますが、グローバルアドレス(世界唯一のIPアドレス)の割り当ては(少なくともIPv4の場合)、クラスA~Eまであり、
クラスAは、ネットワークアドレスを最小で最初の8ビットの領域を利用しますのでホスト接続可能数は、残り24ビット(256の3乗)の1700万弱(16,777,216)から2(ネットワークを表す全て[0]の並びとブロードキャストアドレスを表す全て[255]の並び)を引いた16,777,214、
クラスBは、ネットワークアドレスが16ビットの場合、ホスト接続可能数は、残り16ビット(256の2乗)で65,536から2(ネットワークを表す全て[0]の並びとブロードキャストアドレスを表す全て[255]の並び)を引いた65,534、
クラスCは、ネットワークアドレスの最大は、24ビットまでなので最小のホスト接続可能数は、残りの8ビットの256から2(ネットワークを表す全て[0]の並びとブロードキャストアドレスを表す全て[255]の並び)を引いた254
となります。ただ、企業といえどもホスト数が、1700万台弱というクラスAは、超大規模なISP(インターネットサービスプロバイダ)や超大企業以外にとっては、あまりにも多すぎ、クラスBの65,534台も多すぎるけど、256台では足りそうもない、とてもじゃないけど足りない企業というのも多く、クラスBに殺到する結果となった事が、IPアドレスの枯渇の発端となりました。
クラスDは、IPマルチキャスト用、クラスEは、予約領域となっており、グローバルアドレスとしての割り当てはしていません。
各領域の幅の中でも一般に利用できない予約領域や特殊領域があるものがあります。
グローバルアドレスとプライベートアドレスが干渉しないようになど、プライベートアドレス(組織内や家庭内LANの端末やネットワーク機器用IPアドレス)も割り当て領域が決まっており、闇雲に割り当てていいものではありません。
プライベートアドレスにもグローバルアドレスと異なるクラスA~Cのクラスがあり、この中からプライベートアドレス数によって最も近くて事足りるものを選択します。
世界ではICANNによって、日本ではJPNICによって、ネットワークアドレスが一意になるよう管理されていますが、32ビットのIPv4においては、最初の8ビット、16ビット、24ビットのどこまでをネットワークアドレスとして割り当てるかによってIPアドレスにはクラスという概念があります。
最初の8ビットがネットワークアドレスの場合には、残りの24ビットが、ホストアドレスとなります。
順次16ビットまでがネットワークアドレスの場合には、残りの16ビットがホストアドレスとなり、24ビットをネットワークアドレスとした場合には、残りの8ビットがホストアドレスになります。
24ビットをネットワークアドレスとした時のサブネットマスクは「11111111 11111111 11111111 00000000」となり、10進数表記(あくまで表記方法)では、「255.255.255.0」、先頭に「0x」をつけることによって16進数と見分ける為、「0xFFFFFF00」と表わします。
また、サブネットマスクは、IPアドレスの中のネットワークアドレス(この場合は)24ビットの後ろから8ビット部分を「1」、以降の8ビットであるホストアドレス部を「0」として表すので24ビットをネットワークアドレスとした時のサブネットマスクは「***.***.1.0」となります。
2進数は、ビットの「0か1」の数字の並びで[0][1][11][100][101][110][111][1000][1001][1010][1011][1100]と繰り上げされます。
10進数は、もちろん「1~10」の通常の繰り上げです。
16進数は、「0~9」のあとに「A~F」までを付加した「0・・・7・・・9・・・A・・・C・・・F」の16番目のFで繰り上がり次に右隣りの数字が0・・・1と順次カウントアップしていきます。