TCP/IPアレルギー撲滅ドリル【総まとめ編2回目】

パケット君がWebページ表示の
冒険に失敗するとき

福永勇二
インタラクティブリサーチ
2005/5/28


素朴な疑問
問題を追求する
1 原因の切り分けとは?
2 Webを表示できない理由は?
3 TCP/IPの切り口からはどんな問題が起きますか?
4 すべてのうまくいかない場合を知りたいのですが……
アプリケーションの問題
5 アプリケーションとは?
6 アプリの代表的な問題は?
7 ポート番号は?
8 ドメイン名やIPアドレスは?
9 アプリケーション自体は?
ネットワーク問題を追求する
10 ネットワークの問題は?
11 Ethernetの問題は?
12 IPの問題は?
13 重複したIPアドレスを使うと?
14 自分のIPアドレスを間違えたら
15 ルーティングテーブルは?
16 TCPの問題とは?
 ネットワークで起きる
 問題を追求する

・ネットワークではどんな問題が起きますか?

 ネットワークで起きる問題は、アプリケーションで起きる問題よりも複雑です。ネットワークケーブルが切れているから通信できない、といったシンプルなものもありますが、もう少し込み入った話もあります。それぞれ、なるべく分かりやすく説明してみます。

・Ethernetではどんな問題が起きますか?

 最もシンプルな話としては、ネットワークケーブルが切れていると、そこから先にデータが届きません。図2でいえば、左のコンピュータとデフォルトゲートウェイ(ルータ)の間、またデフォルトゲートウェイと右のコンピュータの間で、データのやりとりができなくなってしまいます。

 ネットワークケーブルが切れていなくても、データのやりとりができなくなる場合もあります。例えばケーブルをPCに接続する部分のコネクタが、奥までしっかり入っていない場合、またPCとは反対側のケーブルの端を接続するハブが故障している場合にも、ネットワークケーブルが切れているのと同じような症状が起きます。

 さらに細かい話をすると、ネットワークケーブルのそばに雑音などの電気的な影響を与えるものがあると、ケーブルを流れる電気信号が崩れて、やはり通信ができなくなることがあります。

・IPではどんな問題が起きますか?

 IPパケットを送り出すとき、そのあて先が同じネットワークにあるコンピュータであれば直接、そうでなければ、そのコンピュータへパケットを届けてくれるルータに、パケットを引き渡します。このように、あて先に応じてパケットの送出先を変え、またそれを中継することをルーティングといいます。ルーティングというとルータでだけ行っているようにも聞こえますが、実際にはPCの中でも行っています。

 このルーティングがうまくいかないとパケットを目的のコンピュータまで届けることができません。ルーティングがうまくいかない例としては、例えば、送り出す相手を間違えてしまう、送り出す相手を指定しない、といったことが起こり得ます。

 図2では、左のコンピュータは「直接つながったネットワークではないので、デフォルトGWにデータを送出」しています。このときのデフォルトGWは、通常、TCP/IPの設定で指定します。このデフォルトゲートウェイの指定を間違えるとどうなるでしょうか?

 この場合、左側のPCは直接届けられないパケットを、誤ったコンピュータに送り出すことになります。しかしそれを受け取ったコンピュータは、おそらくルータではありませんから、パケットをあて先に届ける方法を知りません。そのためパケットの配送はそこで止まってしまい、本来のあて先には届きません。

 また、誤指定したアドレスにコンピュータが存在していない場合は、左のコンピュータはデータを送り出すこともできないかもしれません。IPパケットを届けるためには、最初に相手(ここでは間違って指定したデフォルトゲートウェイ)のMACアドレスを知らなければなりません。そのためにはarpを使ってMACアドレスを問い合わせるのですが、調べたいIPアドレスのコンピュータが存在しなければ、この応答がありません。

 Ethernetでデータを送り出すときに必要なMACアドレスが得られないため、データの送り出しができず、この場合も本来のあて先にパケットを届けることはできないことになります。

・ルーティングについては「どうやってルーティングするんでしょうか?」を参照してください
・arpについては「ネットワークで「叫ぶ」ってどういう意味?」を参照してください

・重複したIPアドレスを使うと?

 IPで起きるほかの問題としては、IPアドレスの重複があります。自動でIPアドレスが割り当てられるネットワークではこの問題は起きませんが、IPアドレスを手動で設定する必要があったり、利用者が勝手にIPアドレスを設定してしまったりする場合は起こることがあります。

 同じIPアドレスを持ったコンピュータが2つあるとどうなるでしょうか? 例えば10.0.0.1のコンピュータが2台あるとします。ここで10.0.0.5のマシンが10.0.0.1にデータを送りたくて、10.0.0.1のMACアドレスを問い合わせるためにarpを行いました。すると、10.0.0.1の2台のコンピュータは、それぞれが応答して、別々のMACアドレスを返すでしょう。本来、arpへの応答は1台のコンピュータだけが行うはずですから、この状態は異常です。

 2つの応答を受けた10.0.0.5のコンピュータは、送信相手がどちらであるか判断できないため、この時点で通信をやめてエラーを通知します。そのため、結局、データを相手に届けることができません。

・もし自分のIPアドレスを間違えたら……

 IPアドレスを手動で指定する場合、ほかの問題も起こります。例えば、本当の自分のIPアドレスは192.168.1.10なのに、誤って192.168.2.10と設定してしまうとどうなるでしょうか?

 例えば、ここではIPアドレスの192.168.1までの部分がネットワークアドレスを表しているとします。このネットワークアドレスはとても重要な意味を持っています。というのは、IPがデータを届けるとき、それが直接届けられるのか、デフォルトゲートウェイに託すかの判断を、パケットのあて先のネットワークアドレスが、自分のネットワークアドレスと同じかどうかで決めるからです。

 192.168.1.20に届けるパケットがあるとき、自分のIPアドレスが192.168.1.10なら、直接届けられると判断するのが正しいのです。しかし自分のIPアドレスを192.168.2.10と誤って設定してしまうと、自分のネットワークアドレスは192.168.2ですから、192.168.1あてのパケットはデフォルトゲートウェイに託すという判断になってしまいます。

 ここでさらに問題が起きます。それはデフォルトゲートウェイへデータを託すときのやりとりです。

 デフォルトゲートウェイは、直接届けられないパケットを託す相手です。そのため、デフォルトゲートウェイに対しては、直接データを届けなければなりません。例えばデフォルトゲートウェイが192.168.1.1で、自分のIPアドレスが192.168.1.10なら、ネットワークアドレスが同じなので、デフォルトゲートウェイには直接データを届けられます。

 しかし自分のIPアドレスを192.168.2.10と設定してしまうとどうでしょうか? デフォルトゲートウェイに直接パケットを届けられません。別のネットワークあてのパケットを託すデフォルトゲートウェイが、これまた別のネットワークにあるというなんとも奇妙な状態になってしまいます。この場合も、やはりデータを相手に届けることができません。

 IPアドレスの重複を含め、IPアドレスの設定間違いは大きなトラブルを引き起こすため、このごろは自動割当が多く使われています。

・IPアドレスのネットワーク部については「IPアドレスからネットワークが分かるんですか?」を参照してください

ルーティングテーブルの問題は?

 先のデフォルトゲートウェイの設定間違いは、突き詰めるとルーティングテーブルの設定間違いと同じ意味があります。というのは、ルーティングテーブルには、パケットのあて先ごとに、それを届ける方法が書いてあるからです。

 しかし、ルーティングテーブルの問題が起こる典型的な装置はルータでしょう。具体的なルーティングの方法やルーティングテーブルの設定は、ここでは触れませんが、誤設定によって「間違った先にデータを託してしまう」「データを託す先を指定し忘れる」などの問題が起こります。この点は、先のデフォルトゲートウェイの場合と大きな違いはありません。

 ルーティングテーブルの誤設定をしてしまうと、いわば「北海道の親戚にあてた小包が、米国行きの貨物便に乗ってしまう」ような状態が起こります。それも1つだけならいいのですが、北海道あてのすべての小包がそうなってしまうのが普通です。これでは、やはり通信は正しく行えません。

 このようにルータでのルーティング情報の設定間違いは大きな問題に発展しやすいため、ルーティング情報の自動設定が多く使われています。

TCPで起きる問題はありますか?

 アプリケーションやIPに比べて、TCPで起きる問題は少ないのが普通です。というのも、TCPに関して利用者が設定をする項目はとても少なく、普通、基本的なネットワーク設定の中には現れないからです。

 なぜ設定項目が少なくて済むのでしょうか。その理由は、MACアドレスやルーティングなど、ネットワークの構成によって違う要素は、すべてIPの範疇で設定されているからです。TCPはそうやって提供されている通信路を使って、より確実な通信を実現する役割を担っています。その方法は、ネットワークの構成などにはあまり関係がありません。

 またTCPは、受信したデータを、指定のポート番号を利用しているアプリケーションに引き渡しますが、ここでも利用者が介在する余地はありません。

 こういった理由から、冒頭で書いたようにTCPで起きる問題は少ないといえます。


以上、コンピュータやネットワークのどこに問題があると通信がうまくいかないかを考えてみました。TCP/IPネットワークについて、さらに理解は深まったでしょうか。

アプリケーション部分の問題とは?

TCP/IPアレルギー撲滅ドリル【総まとめ編】(2)目次
1  通信でうまくいかないところはどこ?
2  アプリケーション部分で起きる問題とは?
3  ネットワークで起きる問題を追求する

関連リンク
  連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編)
連載:TCP/IPアレルギー撲滅ドリル【超実践編】(下位レイヤ編)
連載:インターネット・プロトコル詳説
連載:ルータの仕組みを学ぼう
ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜







「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間