|
|
通信とネットワークの基礎知識
|
通信とネットワークTCP/IPとはTCPとUDP上位プロトコルとポート番号IPアドレスとは〜その1IPアドレスとは〜その2IPアドレスとは〜その3回線の種類についてISPの選択ネットワークの構築ルーターの設定〜その1ルーターの設定〜その2ドメイン名について名前解決とネームサーバーダイナミックDNS |
電話番号とIPアドレス
IPアドレス
が
"211.183.111.34"
のように表記されるものであることと、それが世の中に同じものが二つと存在しない
ユニーク
ものであることは
さて、例えば今あなたが、目の前にあるパソコンの Webブラウザ を立ち上げ、 "211.183.111.34" のIPアドレスが割り当てられている Webサーバー に接続するものとします。 ところがあなたはもちろんのこと、あなたが操作しているパソコンも、その "211.183.111.34" が、どこの国の NIC が管理しているIPアドレスなのかも、その配下のなんという キャリア や ISP が管理しているのかも、具体的に何処にある サーバー を示すものかも知っているはずはありません。 ということは、あなたのパソコンは何らかの方法で "211.183.111.34" が割り当てられた具体的な ノード の所在地を探さなければならないことになります。 しかし、世界中の全てのノード一つ一つに対して、 「あなたのIPアドレスは"211.183.111.34"ですか?。」 という問い合わせをしていては、いつまで経っても目的のノードにたどり着くことはできないでしょう。 もちろん、 TCP/IP はそんな馬鹿げた仕組みにはなっていません。 例えば、電話番号の場合を考えてみてください。 電話番号はIPアドレスと同じく、ユニークな識別情報です。しかもその台数は日本国内だけでも数千万台を越える数が存在する訳ですが、どんなに長くてもほんの数秒でお互いの識別情報を取得し、通話が可能になります。 なぜそういうことが可能なのかというと、電話番号というものは大きな地域のまとまりを表す 「市外局番」 と、その中で電話の収容局のまとまりを表す 「収容局番」 が順に並び、そして最後に個別の回線を示す4桁の番号、という構造になっているからです。 つまり、任意の電話から任意の電話番号がダイヤルされると、まず電話番号の先頭の数桁から「市外局番」を割り出して対象となる収容局の数を絞り込み、更に次の数桁で収容局を特定し、最終的には多くても4桁、すなわち最大で一万台の電話を調べるだけで目的の電話を探し当てることが出来る、という手順になっている訳です。 電話番号はこういう「ブロック構造」のおかげで、非常に素早く通話対象に到達できる訳です。 実は、TCP/IPも同じような仕組みで目的のIPアドレスを探索するようになっています。 TCP/IPの所在地情報であるIPアドレスは、電話番号と同様に、全体の中でまとまりを示す部分の情報と、具体的な所在を示す情報に分けられていて、電話の発信先の特定方法と同じようなプロセスで、効率よく目的のノードにたどりつけるような仕組みになっています。ただ、電話番号よりもかなり複雑ではありますが。 実はこの部分は、自宅に 公開サーバー を構える上では 最重要必修科目 と言っても過言ではありませんから、是非ともマスターしてください。
|
||||||||
TCP/IPのサブネット構造TCP/IP で構築されるネットワークは、その中の ホスト 一台一台が「巨大なただ一つのネットワーク」に接続しているのではなく、「いくつもの独立した小さなネットワークが、 ノード を接点にして階層的に繋がっている」というイメージになります。
TCP/IPの階層構造のイメージ 上のイメージ図で色分けされている範囲がそれぞれ「独立した小さなネットワーク」を示し、これを普通 サブネット と呼びます。 サブネットはそれぞれが独立したネットワークですが、サブネットは ルーター を接点として他のサブネットと接続していますので、結果として全体が一つの大きなネットワークを構成していることになります。
|
|||||||||
ネットワーククラスIPアドレス は、 ネットワーククラス という考え方で、IPアドレスの「まとまり」、つまり一つ一つの サブネット を示す ネットワーク部 と、具体的な一つ一つの通信機器を示す ホスト部 に分けられています。 それは例えば、電話番号の市外局番や収容局番に相当するのが「ネットワーク部」、市外局番や収容局番を除いた4桁の番号に相当するのが「ホスト部」と考えれば解り易いと思います。 一般にIPアドレスは、全体の32ビットの中で、左側から何ビットの部分をネットワーク部に指定するかでクラスA、クラスB、クラスCに分類されます。 クラスA:0xxxxxxx.yyyyyyyy.yyyyyyyy.yyyyyyyy クラスB:10xxxxxx.xxxxxxxx.yyyyyyyy.yyyyyyyy クラスC:110xxxxx.xxxxxxxx.xxxxxxxx.yyyyyyyy ※:xはネットワーク部、yはホスト部のビット。 IPアドレスのクラス分類と、それぞれのネットワーク部とホスト部の区分 |
|||||||||
|
正確にいうと...
:右上の説明のとおり、クラスAは先頭の1ビット、クラスBは2ビット、クラスCは3ビットが、各々のクラスの識別と、
ユニーク
なIPアドレス設定のために固定されています。
ということは、実際に使用できる各々のネットワーク部のビット数は、7ビット、14ビット、21ビットしかありません。従って、各々のネットワークの数は、256、65536、16777216ではなく、128、16384、2097152ということになります。 また、ホスト部の先頭のIPアドレスはネットワークそのものの識別のための ネットワークアドレス として、また、ホスト部の末尾のIPアドレスはネットワーク内の全ての ノード を示す ブロードキャストアドレス として特別な意味を持ちますから、普通はホストに割り当てることはできません。従って、各々のクラスのホスト部の数は、2ずつ少なくなります。 |
クラスAはネットワーク部が8ビット、ホスト部が24ビットです。つまり、 クラスAは、提供可能なサブネットの数が8ビット=256サブネットであり、その一つ一つのサブネットの中に設置可能な ホスト の数は、24ビット=16,777,216台である。 ということを示しています。同様に、 クラスBは、提供可能なサブネットの数が16ビット=65,536サブネットであり、その一つ一つのサブネットの中に設置可能なホストの数は、16ビット=65,536台である。 クラスCは、提供可能なサブネットの数が24ビット=16,777,216サブネットであり、その一つ一つのサブネットの中に設置可能なホストの数は、8ビット=256台である。 ということになります。 この分類のしかたは電話番号の「ブロック分け」の考え方によく似ています。 例えばクラスAは、東京や大阪のように市外局番が"03"や"06"と短い地域に置き換えて考えれば解りやすいでしょう。 |
||||||||
|
|
こういう大都市部では、市外局番(ネットワーク部)の桁が少ないため、多くの地域に市外局番を設定することできません。しかしその分、収容局番以下の桁数が長いので、非常に多くの電話番号(ホスト部)を提供することができます。 反対にクラスCは、市外局番が4桁以上の地方を表します。 こういう市外局番が桁数が多い割り当て方をすると、非常に多くの地域に市外局番を提供することができます。しかしその結果として収容局番以下の桁数が少ないため、一つの市外局番地域ではあまり多くの世帯に電話番号を割り当てることができません。 クラスBは丁度その中間で、名古屋や福岡といった市外局番が3桁の中規模都市ということになります。 電話番号はこのような割り当て方をすることで、日本全国どこでも同じ「総桁数」での発信が可能でありながら、人口密集地域には多くの電話番号を提供し、人口過疎地域では「無駄な空き番号」ができないようになっているわけです。 東京都 :03−YYYY−ZZZZ 福岡市 :092−YYY−ZZZZ 久留米市:0942−YY−ZZZZ ※:青は市外局番、紫は収容局番以下を示す。 電話番号の構造がIPアドレスの構造と類似していることの説明 さて、上で説明した各ネットワーククラスを通常のIPアドレス表記になおし、実際に割り当て可能なIPアドレスの範囲を示すと以下のようになります。 クラスA: 0〜127.0〜255.0〜255.0〜255 クラスB:128〜191.0〜255.0〜255.0〜255 クラスC:192〜223.0〜255.0〜255.0〜255 ※:青はネットワーク部、紫はホスト部。 各ネットワーククラスの割り当て可能なIPアドレスの範囲 注意深い方はもうお気付きかもしれませんが、クラスCの先頭の オクテット は 192〜223 ですから、その後ろに存在するはずの 224〜255 はどのクラスにも属しておらず、「空き番号」になっているように思えます。 実は、この先頭のオクテットの 224〜225 の範囲は、「空き番号」なのではなくて、 マルチキャストアドレス と呼ばれる、複数の通信機器に対して接続を行う場合の特殊なIPアドレス、そして通信試験用のアドレスとして予約されている範囲です。もちろん、一般的なIPアドレスとしては使用されていない部分となります。
|
||||||||
CIDRによる効率の良いIPアドレスの分割世界中の IPアドレス は、重複や誤った使い方が起こらないように、 NIC(Network Information Center ) という国際組織が管理しています。ちなみに、日本国内で使用されるIPアドレスは、 JPNIC というNICの日本組織が管理しています。(以後の説明では、本来NICと表現すべき場合でも、混同を避けるためにすべて JPNIC で説明します。) |
|||||||||
| 言うまでもないことですが、ネットワークインターフェースカードの略である NIC と、管理組織の NIC とは全く別のものです。蛇足ですが、管理組織のNICは、 ICANN の下部組織です。 |
例えば自宅からインターネットに接続するには、自宅のパソコン、あるいは ルーター などの ノード に、所在地の識別情報として必ずIPアドレスが割り当てられていなければなりません。しかし、そのIPアドレスはJPNICに申請して直接割り当ててもらうのではなく、 ISP という民間企業や団体に依頼し、割り当ててもらうことになります。 |
||||||||
| また、ISPの中には、JPNICからではなく、別の大きなISPからIPアドレスを割り当ててもらって運用しているケースもあり、更にそのISPから割り当てを受けているISPもあります。これらは、「2次ISP」あるいは「3次ISP」などと呼ばれることもあります。 |
つまりIPアドレスは、ある程度まとまった数でJPNICからISPに割り当てられ、ISPはその割り当ててもらったIPアドレスを サブネット に切り分けて、会社や団体や個人などに「貸し出し」を行う、という配布形式で、エンドユーザーにインターネットへの接続環境を提供することになります。
もちろん、ISPからIPアドレスを割り当ててもらうだけでは、インターネットには接続できませんので、同時に
キャリア
から「物理的な」通信回線を準備してもらうことになります。
|
||||||||
| なぜクラスCのネットワークの使用可能なホスト台数が256台ではなく254台なのか、は、このパートの後半で説明します。 |
ただ、その「貸し出し」を行うIPアドレスが、例えば一番 ホスト 数が少ない ネットワーククラス である「クラスC」であっても、ホストに割り当てることのできるIPアドレスは254個もあります。 これは考えてみればとてももったいない話です。 大きな会社や団体ならばまだしも、中小企業や個人レベルでは、ISPから254台分ものIPアドレスを割り当ててもらっても、大部分は「遊ばせて」しまうことになります。
コラムの
「IPアドレスの枯渇問題
そこで実際にISPがエンドユーザーにIPアドレスを割り当てる際に行われているのが、ネットワーククラスより小さな サブネット に分割する CIDR (サイダー)という方法です。 CIDRは"Classless Inter-Domain Routhing"の略で、「クラスにこだわらないIPアドレスの割り当て方法」のことです。 |
||||||||
|
現実には...
:エンドユーザーがISPから割り当てられる「小さなサブネット」のIPアドレスの数は、32個、16個、8個、1個の4パターンです。
理屈からいうと、4個や2個のCIDRのパターンがあっても良さそうですが、このパートの後半での説明のとおり、サブネットの先頭と最後尾のIPアドレスは、それぞれ「サブネットそのもの」「サブネット内の全てのノード」を指し示すものなので、通常ホストに割り当てることはできません。 また、サブネットの入り口にルーターを設置する現在主流の LAN 構築スタイルでは、そのルーター自身にもIPアドレスを割り当てなければなりません。 ということは、IPアドレスを2個を割り当ててもらってもホストに割り当てられるIPアドレスは存在しないことになります。また、4個の場合でも実際にホストに割り当てられるのはたった1個です。これでは複数のIPアドレスを割り当てた意味がありませんよね。 一方、IPアドレス1個の割り当てのパターンは、 ネットワーク部が32ビット、ホスト部が0ビット のCIDRです。ホスト部が0ビットというと、「ホストに割り当てられるIPアドレスはない」ように思われるかもしれませんが、実際には1個の割り当て可能なIPアドレスを持ちます。これについても、このパートの後半に詳しい説明があります。 |
通常のネットワーククラスでは、 オクテット 単位で ネットワーク部 と ホスト部 を切り分けますが、CIDRでは、最後尾の オクテットの中間で切り分け ます。 xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxyyyyy:ホスト部5ビット xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxyyyy:ホスト部4ビット xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxyyy:ホスト部3ビット ※:xはネットワーク部、yはホスト部のビット。 CIDRによる「ホスト台数の少ない」IPアドレスの切り分けの例 例えばこれらのCIDRのホストに割り当て可能なIPアドレスの数は、ホスト部が5ビットならば、00000〜11111=0〜31で 32個 、4ビットならば0000〜1111=0〜15で 16個 、3ビットならば000〜111=0〜7で 8個 、という訳です。 こういう切り分け方を行えば、「インターネットへの接続環境は必要だが、たくさんのホストから接続する必要はない」という利用者に対して、とても効率よくIPアドレスを割り当てることが可能になることはお分かりと思います。 さて、クラスCでエンドユーザーにIPアドレスを割り当てる場合、「ホスト部=最後尾のオクテット」ですから、ホストに割り当てるIPアドレスの最後尾のオクテットは、0〜255ということになります。しかしCIDRを使う場合は少しややこしい感じになります。 例えば、最下位3ビットでCIDRを行う場合、ホストに割り当てられるIPアドレスはその上の5ビット部分で変化します。例えば、
xxxxxxxx.xxxxxxxx.xxxxxxxx.11111yyy
xxxxxxxx.xxxxxxxx.xxxxxxxx.11011yyy
xxxxxxxx.xxxxxxxx.xxxxxxxx.01101yyy
※:xと数値はネットワーク部、yはホスト部。 のように、一番右側のオクテットは、ネットワーク部とホスト部が合計された形になります。 CIDRによるIPアドレスの切り分けは、かなり難解な部類に入ります。しかしながら、限られたIPアドレスをムダに分配しないようにするために、現在では普遍的に利用されている手法のひとつです。
|
||||||||
プレフィックス長例えば、通常使われる
211.183.111.34
という IPアドレス の表記法では、どこまでが ネットワーク部 で、どこからが ホスト部 なのかを知ることはできません。 |
|||||||||
|
|
ごく普通にパソコンなどで クライアント としてインターネットを楽しむ程度であれば、こういうことを意識しなければならないケースは稀です。なぜならば、それはクライアント側がそういうことを意識しなくて良いように、データを与える側の サーバー や、通信を制御する ルーター などが、適切に処理をしてくれているからです。 ところが、あなたが今からやろうとしているのは、 WBEL や CentOS による サーバー機 の構築であり、その運用のためのルーターの設置ですから、IPアドレスの「どこまでがネットワーク部でどこからがホスト部」という情報は絶対に必要となってくるわけです。 実際のところ、 ISP が ネットワーククラス の単位でエンドユーザーにIPアドレスを割り当てることは稀です。限りあるIPアドレスに無駄を出さないために、大抵はCIDRで更に下位の ビット で分割されたものが割り当てられます。 従って、どの ビット 位置でCIDRが行われているかによって、データを与える側の サーバー や、それを制御する ルーター などの通信機器を設定も異なってくるわけです。 さて、その「ネットワーク部とホスト部の境界部分」の記述方法のひとつが プレフィックス長 です。 プレフィックス長は、IPアドレスのネットワーク部を、先頭からの ビット 数で表したもので、IPアドレスの後ろに
"/数値"
と表記します。 例えば "211.183.111.34" がクラスCで提供されているIPアドレスならば、先頭から3 オクテット 、つまり24ビットがネットワーク部の長さになるので、 11010011.10110111.01101111.00100010 211.183.111.34/24 と表記されます。 他のネットワーククラスでもプレフィックス長の考え方は同じですから、クラスAの場合のプレフィックス長は" /8 "、クラスBの場合は" /16 "となります。 また例えば、 "211.183.111.34" が末端4ビットのCIDRであるならば、 32ビット(IPアドレスの全長)−4ビット(ホスト部の長さ) =28ビット(ネットワーク部の長さ) なので、 11010011.10110111.01101111.00100010 211.183.111.34/28 となります。
|
||||||||
サブネットマスク値、ネットワークアドレス、
|
|||||||||
|
|
というIPアドレスを求めます。(こういう演算方法を数学用語で「論理積を求める」といいます)。 この方法で、 211.138.111.187/255.255.255.0 あるいは、 211.138.111.187/255.255.255.248 のホストが属するネットワークの、先頭のIPアドレスを求めてみましょう。
11010011.10001010.01101111.10111011 (211.138.111.187)
11111111.11111111.11111111.00000000 ( 255.255.255.0 ) ↓ 11010011.10001010.01101111.00000000 ( 211.138.111.0 ) 及び、
11010011.10001010.01101111.10111011 (211.138.111.187)
11111111.11111111.11111111.11111000 (255.255.255.248) ↓ 11010011.10001010.01101111.10111000 (211.138.111.184) ※:青はネットワーク部、紫はホスト部 このようにして求められた、先頭のIPアドレスである 211.138.111.0 や、 211.138.111.184 は、そのサブネット自体をあらわすもので、一般に ネットワークアドレス と呼ばれます。 更に、最後尾のIPアドレスを求めるには、IPアドレスと、サブネットマスク値の1と0をすべて入れ替えた(数学用語で「否定をとる」といいます)ものを比較し、同じ桁が、 どちらかが1ならば1、両方が0ならば0 というIPアドレスを求めます(こういう演算方法を数学用語で「論理和を求める」といいます)。 この方法で、 211.138.111.187/255.255.255.0 あるいは、 211.138.111.187/255.255.255.248 のホストが属するネットワークの、最後尾のIPアドレスを求めてみましょう。
11010011.10001010.01101111.10111011 (211.138.111.187)
00000000.00000000.00000000.11111111 ( 255.255.255.0 ) ↓ 11010011.10001010.01101111.11111111 (211.138.111.255) 及び、
11010011.10001010.01101111.10111011 (211.138.111.187)
00000000.00000000.00000000.00000111 (255.255.255.248) ↓ 11010011.10001010.01101111.10111111 (211.138.111.191) ※:青はネットワーク部、紫はホスト部 このようにして求められた、最後尾のIPアドレスである 211.138.111.255 や、 211.138.111.191 は、サブネットの全てのノードを示すもので、一般に ブロードキャストアドレス と呼ばれます。 通信制御機器やホスト機は、このようにして任意のIPアドレスの所属するネットワークの先頭であるネットワークアドレスと、最後尾のブロードキャストアドレスを求め、その範囲に探索パケットを流して目的のホスト機を探す、という作業を行うわけです。 これらは人間にとって、かなり難しい計算です。しかしもともとデジタルコンピュータは"1"と"0"ですべての情報を扱うわけですし、その比較や演算は最も得意とするところです。 そのため、通信制御機器や サーバー アプリケーション の設定の際には、時折このサブネットマスクによる表記法が用いられます。サブネットマスクによる実際の計算方法を覚える必要はありませんが、「コンピュータはそういう感じの処理を行っている」という雰囲気だけでも覚えておいてください。 さて、このネットワークアドレスとブロードキャストアドレスは、 ホストや通信機器のノードに割り当てるべきではないアドレスです。 実際にノードとして働く NIC は ハードウェア ですから、ホスト機や通信制御機器によって任意にIPアドレスの変更が可能ですし、故障やトラブルに見舞われることもあります。 一方、サブネットそのものを示すネットワークアドレスや、サブネット内のノード全体を示すブロードキャストアドレスが変化したり、失われたりしたら、サブネット全体が機能しなくなることはいうまでもありません。 従って、ハードウェアであるNICにそれらのアドレスを割り当ててしまった場合、何らかの理由でそのNICに異常が起こったり、誤った情報を持ったりしてしまうと、サブネット全体が機能しなくなってしまいます。という訳で、ネットワークアドレスとブロードキャストアドレスはハードウェアのノードとして利用すべきではない、ということになります。 |
||||||||
| 計算してみるとわかりますが... :"/32"の場合、「IPアドレス=ネットワークアドレス=ブロードキャストアドレス」。になります。 |
ただし、プレフィックス値が "/32" 、サブネットマスク値が "255.255.255.255" で示される、いわゆる IPアドレスが一つだけのサブネット の場合は事情が異なります。 つまりこのサブネット内で、IPアドレスを割り当てられる通信機器はたった一つです。ということは、その通信機器のNICに障害が起こった場合は、影響を受けるのは唯一そのNICのみであって、「他の通信機器に影響を与えないように」という意味での「空きアドレス」は意味を持たないことになります。 また、そもそもIPアドレスが一つしかないサブネットですから、「誤ってサブネット内の他のIPアドレスがNICに割り当てられる」ということも有り得ません。 というわけで、IPアドレスが一個のサブネットの場合には、複数のIPアドレスで構成されるサブネットのように、ネットワークアドレスやブロードキャストアドレスのような「空きアドレス」を作る必要がありません。 というより、 「空きアドレスを作っても仕方がない」 というところでしょうか。
|
||||||||
ループバックアドレスTCP/IP では、それぞれの ホスト が、自分自身を指す特定の IPアドレス として、 ループバックアドレス というものが存在します。具体的には、
127.0.0.0/8
がループバックアドレスの予約範囲となっていますが、通常は、
127.0.0.1
というIPアドレスが使われます。 そして、TCP/IPのネットワーク機能が有効である ホスト機 すべてに、このループバックアドレスが最初から設定されているはずです。 ループバックアドレスはホスト機の外部から参照されることはなく、またループバックアドレスから外部のホストに通信が行われることはありません。つまり、あくまでホスト機の内部だけで利用できるIPアドレスというわけです。 |
|||||||||
|
管理人おススメの
ネットワーク解説書です ↓ |
従って、ループバックアドレスと、実際にホスト機に ノード として割り当てられる "211.183.111.34" などのIPアドレスは、そのホスト機自身からみると、どちらも「自分自身の所在地情報」ですが、外部からのアクセスに対して機能するのは "211.183.111.34" ということになります。 ループバックアドレスは、 NIC に特定のIPアドレスが割り当てられていなくても機能しますから、実際にネットワークに接続していないときでもホスト機内部のネットワーク機能の確認に利用できます。 WindowsOS や MacintoshOS などの クライアント 向け OS ばかり扱っていると、このループバックアドレスの役割を意識することはまずないでしょう。しかし実際には、通信を扱うアプリケーションの多くは、ループバックアドレスを使って動作確認を行い、アプリケーション間で通信を行っています。 ところが WBEL や CentOS で サーバー アプリケーション を扱いはじめると、このアプリケーション間通信についてかなり意識して設定や調整を行う必要が出てきます。 というわけで、ここでは「そういうものがある」程度に覚えておいてください。
|
|
|
IPアドレスとは〜その1
<<Previous
|
Next>>
IPアドレスとは〜その3
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |