
連載:ネットワーク・コマンドでトラブル解決(5)
ホストのネット接続は正しく行われているか?
〜netstatによるネットワーク設定の確認〜
加地眞也
2002/1/30
|
■接続の管理とアプリケーション
〜TCP/UDPとIPの関係
一般に、IPネットワークにおいては、IPというプロトコルはあくまでホスト間のネットワーク接続(正確には一方向のデータ送信)を実現しているにすぎない。これだけでは、通常のアプリケーションがネットワークを利用できるとはいえない。両ホスト上のアプリケーション同士を結び付ける仕組みが必要になる。これがTCPやUDPの役割だ。
普通「ネットワーク接続」といった場合には、実際にはTCPやUDPレベルにおける「アプリケーション間接続*1」を意味している。単に、どのホストと通信しているかというIPレベルのみならず、アプリケーションが別のどのホストのアプリケーションと接続を維持しているかという、TCP/UDPレベルでの「ステータス」を把握することは、ネットワーク管理上、大変重要な要素となる。
netstatコマンドでは、これら現在ホストが実行している接続の一覧とともに、それぞれのステータスを確認することができる。
![]() |
| 図1 TCP/UDPとアプリケーションの関係 |
TCPとUDPの役割について少し整理しておこう。各アプリケーションを区別するために使用されるのが「TCP/UDPポート番号」だ。例えば、クライアントがあるアプリケーションに接続する場合には、何番のポートを使用して相手が待ち受けている(ポートをオープンしている)かを指定して接続することになる。つまり、少なくとも一方が事前にそのポート番号で待ち受けている必要がある。通常、これが「サーバ」アプリケーションとなる。この待ち受け状態を「LISTEN」と呼ぶ。LISTENしているアプリケーションがネットワーク通信を管理するOSに対して「このポート番号へのパケット・データは、私に渡してほしい」と依頼し、起動している状態だ*2。
一方、接続する側、つまり「クライアント」も自身に何らかのポート番号を割り振ってネットワーク接続することになる。でなければ、逆にサーバ・プログラムからクライアント・プログラムへアプリケーションを指定してのパケット返信ができないからだ。この関連付けも、やはりOSのネットワーク機能が管理する。
これが、TCPとUDPにおける「仮想チャネル」の基本的な考え方だ。こうした機能により、アプリケーションはポート番号を指定するだけで、特定のアプリケーションとシームレスに通信が可能になる。
さらにTCPでは、
- コネクション指向
- バイト・ストリーム指向
- 全二重通信
をサポートしている。
接続の両端において、コネクションの「開始」と「切断」を行って接続を維持しており、複数のパケットの送受信はそのコネクション内で自由に行える。アプリケーションから巨大なデータ送受信を指示されても、自動的に分割/送信して受信後に組み立てられるので、アプリケーションは実際のパケット構造を気にしなくてもいい。「全二重通信」とは、常に双方向のパケットの送受信が可能ということだ。つまりTCPでは、IP接続を2つ利用してこうした双方向チャネルを実現するのである。
また、パケット・ロス時における再送機能や軋轢(あつれき)制御機能によって、IPだけでは得られない送受信データの信頼性も確保している。こうした特徴から、HTTPやSMTPなど、クライアント/サーバ・モデルと呼ばれる比較的高度なネットワーク通信のほとんどは、TCPで実装されることが多い。
一方、UDPは、単にIPにポート番号の概念を加えただけのプロトコルだ。アプリケーションとの関連付けのみが行われると思っていい。
UDPは、アプリケーションがUDPパケットに含まれるデータを意識しなくてはならない「パケット指向」型のサービスである。大きなデータの場合は、意識して複数パケットに分割して送信を行う必要がある。IPが提供する以上の信頼性も保証されない。アプリケーションから見ると扱いも面倒だが、パフォーマンスには優れているので、単にデータを送り付ければいいような単純な通信には向いている。現在では、DNS/SNMP/DHCP/FTPのデータコネクションなどで使用されることが多い。
また、TCPは必然的にユニキャスト(ピア・ツー・ピアの一対一通信)が前提になるが、UDPではブロードキャスト/マルチキャストなどの一対多の送信用として使用されることも多い。
|
|
■TCP接続とステータス
UDPでは、単にポート番号(とIPレベルでのIPアドレス)を指定したパケットを相手に送り届けるだけで、片方向の1パケットの送信のみで通信が完結する。ここには、接続の開始や終了という概念はない。つまり、UDPでは単にパケットを送っているか送っていないかというだけで、「ステータス」という概念は存在していない。
TCPはより複雑で、「ネゴシエーション」と呼ばれる接続開始のための交渉を行い、コネクションを確立して通信が開始される。このネゴシエーションによって、通信バッファやパケットのサイズが決定される。そして実際の通信が行われた後、やはりネゴシエーションによって互いに認識し合ったうえで切断が行われる。つまりTCP通信においては、常にOSによって接続の現在のステータスが把握され、フローが制御されることになる。
![]() |
| 図2 TCP接続開始の遷移。青い矢印が1つのTCPパケットを、矢印の上の文字が使用されるTCPフラグである。接続は、双方向同時に行われる |
![]() |
| 図3 TCP切断の遷移。ここではクライアントからの切断要求を示しているが、実際にはどちらから行われてもかまわない。先に切断する側を「Active Close」、後を「Passive Close」側と呼ぶ |
TCPの接続開始は「3ウェイ・ハンドシェイク」などと呼ばれる。3つのパケットの送信(つまり「握手」)によって接続が確立される特徴を表している。切断においては「2ウェイ」である。切断したい側からFINパケットを送信し、切断を了解した意味のACKパケットを受信すると切断が完了する。
気を付けてほしいのは、この切断は2回行われる必要があるという点だ。TCPは全二重の通信であり、コネクションはそれぞれ双方向に行われていると認識されるためだ。つまり接続開始時点では、他方から他方への両方向の接続(「クライアント→サーバ」と「サーバ→クライアント」)があると見なされる。しかし切断は個別に行われるため、それぞれの方向ごとに切断が必要となる。
逆をいえば、片方向が切断されても他方で通信し続けても構わないことを意味する(例えば「クライアント→サーバ」の送信のみなど)。非常に柔軟な要請にも対処可能なプロトコル設計となっている。双方向のコネクションのうち、「クライアント→サーバ」接続(能動的接続)を「Activeコネクション」、「サーバ→クライアント」接続(受動的接続)を「Passiveコネクション」と呼ぶ。
TCPでは、コネクションはこれらいずれかのステータスに必ず属することになる。単に接続通信中(ESTABLISHED)のみだけでなく、それぞれのコネクションがどのステータスにあるのかも、ネットワーク調査をするうえでの重要な要素となる。
| 関連ネットワーク・コマンド/ツール | |
| netstat 〜ホストのネットワーク統計や状態を確認する |
|
|
ネットワークトラブル解決法
|
|
ネットワークコマンド使い方
|
ネットワーク・コマンドでトラブル解決
トラブルシューティングに便利な各種コマンド/ツール事典。各ツールの活用法をまとめたTipsも順次アップデート!
- 第1回 つながらないネットワークの原因を特定する!
- 第2回 ネットワークトラブル、まずはホストの設定を見直そう!
- 第3回 ルーティングのトラブル、まずはその仕組みから理解!
- 第4回 イーサネットの通信は正しく行えているか?
- 第5回 TCP/UDPの接続ステータスを確認しよう!
- 第6回 DHCPの自動設定機能をうまく使いこなすコツは?
- 第7回 DNSの設定と動作は正しいか?
コマンドを使ってトラブルシューティング
社内のPCが突然、メールを受信できなくなり、Webも見られない環境になってしまった。そんなとき、どのように対処するべきか
- 第1回 LANから外に出られない!?
- 第2回 どうして課長だけプリントできない?
- 第3回 ネットワークに同じIPアドレスが2つある?
- 第4回 同じメールしか受信できない!?
- 第5回 ファイルがアップロードできない?
- 第6回 私だけネットワークにつながらない!?
- 第7回 特定のサイトにだけアクセスできない
- 第8回 無線LANでメールがたまに受信できない?
- 第9回 外部を勝手に攻撃しているのは誰?
- 第10回 夜になるとネットワークが遅くなる?
- 最終回 怪しいサイトに飛ばされるんだけど
ツールを使ってネットワーク管理
名前しか知らない後輩君がやってきた。彼によると、コマンドはすでに古くツールがクールだという。ならば教えてもらおうではないか
- 第1回 後輩のツール君曰く、コマンドはもう古い!?
- 第2回 勝手にネットにつないでるマシンを探せ!
- 第3回 私用メールする子にお仕置きを
- 第4回 OSやアプリケーションの箱がなくなっても大丈夫?
- 第5回 俺の「パスワード:*****」って何でしたっけ?
- 第6回 ユーザー名と同じ安易なパスワードを撲滅せよ!
- 第7回 いきなりナウでヤングなWebサイトを管理しろって……
- 第8回 「POPFile」でスパムと無駄な時間は除去じゃ!
- 第9回 それはスパムか否か、POPFileの振り分けを鍛える
- 第10回 情報漏洩防止のためにPC監視!?「WatchYourPC」
- 第11回 とにかく社内でWinnyの起動をやめさせたい
- 第12回 USBでコピーデータを家に持ち帰らせたくない
- 第13回 パスワード、記憶に頼っていて大丈夫?
- 第14回 サーバ異常をメールで知らせる統合監視ツール
- 第15回 メールサーバがいっぱいですよ、と警告されたら
- 第16回 出張中のメール送信にご用心!
- 第17回 安いホスティングに引っ越しって簡単にいうけど
- 第18回 WebサーバにFTPできないんですけど……
- 第19回 PC環境の移行。あなたならどうする?
- 第20回 サーバのリモートバックアップをさせたい
| 「Master of IP Network総合インデックス」 |
TechTargetジャパン
- 実機では測定できない性能を測定? (2012/2/7)
システムの完成前に、達成し得る性能値や必要なサーバリソースを知るには? その解となる「性能シミュレーション技法」を解説 - 性能チューニング個所の検討 (2012/1/30)
アプリのチューニングや環境増強で、どの程度改善が見込める? 今回からは「実際に活用できる性能対策」を解説します - 遅いところを直すだけでいいのですか? (2012/1/24)
負荷が集中したときの性能ボトルネックを改善するのに、アプリケーションサーバとDB、どちらを優先すべきでしょう? - cloudfoundry.comを使ってみよう (2012/1/19)
VMwareが提供するPaaSプラットフォーム「CloudFoundry」。注目を集めるこの基盤を活用してPaaSを構築!
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



