TCP/IPアレルギー撲滅ドリル【総まとめ編2回目】パケット君がWebページ表示の
|
![]() |
|
![]() |
ネットワークで起きる 問題を追求する |
ネットワークで起きる問題は、アプリケーションで起きる問題よりも複雑です。ネットワークケーブルが切れているから通信できない、といったシンプルなものもありますが、もう少し込み入った話もあります。それぞれ、なるべく分かりやすく説明してみます。
最もシンプルな話としては、ネットワークケーブルが切れていると、そこから先にデータが届きません。図2でいえば、左のコンピュータとデフォルトゲートウェイ(ルータ)の間、またデフォルトゲートウェイと右のコンピュータの間で、データのやりとりができなくなってしまいます。
ネットワークケーブルが切れていなくても、データのやりとりができなくなる場合もあります。例えばケーブルをPCに接続する部分のコネクタが、奥までしっかり入っていない場合、またPCとは反対側のケーブルの端を接続するハブが故障している場合にも、ネットワークケーブルが切れているのと同じような症状が起きます。
さらに細かい話をすると、ネットワークケーブルのそばに雑音などの電気的な影響を与えるものがあると、ケーブルを流れる電気信号が崩れて、やはり通信ができなくなることがあります。
IPパケットを送り出すとき、そのあて先が同じネットワークにあるコンピュータであれば直接、そうでなければ、そのコンピュータへパケットを届けてくれるルータに、パケットを引き渡します。このように、あて先に応じてパケットの送出先を変え、またそれを中継することをルーティングといいます。ルーティングというとルータでだけ行っているようにも聞こえますが、実際にはPCの中でも行っています。
このルーティングがうまくいかないとパケットを目的のコンピュータまで届けることができません。ルーティングがうまくいかない例としては、例えば、送り出す相手を間違えてしまう、送り出す相手を指定しない、といったことが起こり得ます。
図2では、左のコンピュータは「直接つながったネットワークではないので、デフォルトGWにデータを送出」しています。このときのデフォルトGWは、通常、TCP/IPの設定で指定します。このデフォルトゲートウェイの指定を間違えるとどうなるでしょうか?
この場合、左側のPCは直接届けられないパケットを、誤ったコンピュータに送り出すことになります。しかしそれを受け取ったコンピュータは、おそらくルータではありませんから、パケットをあて先に届ける方法を知りません。そのためパケットの配送はそこで止まってしまい、本来のあて先には届きません。
また、誤指定したアドレスにコンピュータが存在していない場合は、左のコンピュータはデータを送り出すこともできないかもしれません。IPパケットを届けるためには、最初に相手(ここでは間違って指定したデフォルトゲートウェイ)のMACアドレスを知らなければなりません。そのためにはarpを使ってMACアドレスを問い合わせるのですが、調べたいIPアドレスのコンピュータが存在しなければ、この応答がありません。
Ethernetでデータを送り出すときに必要なMACアドレスが得られないため、データの送り出しができず、この場合も本来のあて先にパケットを届けることはできないことになります。
・ルーティングについては「どうやってルーティングするんでしょうか?」を参照してください ・arpについては「ネットワークで「叫ぶ」ってどういう意味?」を参照してください |
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アドレスは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つだけならいいのですが、北海道あてのすべての小包がそうなってしまうのが普通です。これでは、やはり通信は正しく行えません。
このようにルータでのルーティング情報の設定間違いは大きな問題に発展しやすいため、ルーティング情報の自動設定が多く使われています。
アプリケーションやIPに比べて、TCPで起きる問題は少ないのが普通です。というのも、TCPに関して利用者が設定をする項目はとても少なく、普通、基本的なネットワーク設定の中には現れないからです。
なぜ設定項目が少なくて済むのでしょうか。その理由は、MACアドレスやルーティングなど、ネットワークの構成によって違う要素は、すべてIPの範疇で設定されているからです。TCPはそうやって提供されている通信路を使って、より確実な通信を実現する役割を担っています。その方法は、ネットワークの構成などにはあまり関係がありません。
またTCPは、受信したデータを、指定のポート番号を利用しているアプリケーションに引き渡しますが、ここでも利用者が介在する余地はありません。
こういった理由から、冒頭で書いたようにTCPで起きる問題は少ないといえます。
以上、コンピュータやネットワークのどこに問題があると通信がうまくいかないかを考えてみました。TCP/IPネットワークについて、さらに理解は深まったでしょうか。
![]() |
|
関連リンク | |
連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編) 連載:TCP/IPアレルギー撲滅ドリル【超実践編】(下位レイヤ編) 連載:インターネット・プロトコル詳説 連載:ルータの仕組みを学ぼう ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜 |
![]() |
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
![]() |
|
|
|
![]() |