質問

「Port」接続口だとは分かるのですが、何番から「何番まで」あるのですか?

そして、それは、どこが制御しているものですか?NICベースなのでしょうか???

『ハッキング』は、既にそのコンピュータが機能やプログラムとして持っている部分の、『抜け道』を利用したことなのでしょうか。ドライブをOSごと消去したPCに、ハッキングは掛けられるでしょうか?

通報する

回答 (5件)

> ルーターにも「ポート」があるのですか?

はい、あります。

まず、通常「ルータ」と呼ばれているものの正体から説明する必要があるのですが、ルータとか、異なるIPセグメント(近いIPアドレスを持つノード同士が繋がっているネットワークのひとかたまりだと思ってください、ノードとは、IPアドレスを付けられたあらゆる装置のことです)同士を接続し、パケットを中継するための装置です。
上記の説明の中に「TCP」とか「ポート」という用語が出てこないことからおわかりになるかもしれませんが、通常の「ルータ」には、ポートという概念はありません。あるIPアドレスを宛先とするパケットがルータにやってくると、ルータはそのパケットの宛先IPアドレスを見て、適切なネットワーク向けてパケットを中継します。しかし、その時点ではポート番号などは一切見知しません。あくまでIPアドレスしか見ていないのです。

ところが、よくADSLや光ファイバーを家庭に引いたユーザが利用する、通称「ブロードバンドルータ」の場合、ルータという機能の他に、NATと呼ばれる機能を持っているために話がややこしくなるのです。
どういうことかというと、通常、プロバイダは、ある回線(ADSL、光ファイバーなど)を経由して接続に来たユーザに対し、IPアドレスを一つしか割り当てません。正確には、複数のIPアドレスを割り当てるサービスは法人向けで、非常に高い(月額数万円~数十万円)値段で売られています。個人向けの月額2~5千円程度のサービスでは、ほとんどのプロバイダはアドレスを一つしか割り当てないのです。
で、IPアドレスというのはインターネットと通信するために絶対に必要なものですから、これではある家庭に回線が一本引かれていても、一台のPCしかインターネットが使えなくなってしまいます。これを回避するために、家庭向けのルータはNAT(Network Address Translation)という機能を兼ね備えています。

まず、ルータは家庭内のLANと家庭外に広がるインターネットを繋ぐ中継器の役割を果たします。家庭内のLAN(ローカルエリアネットワーク)に接続されたPCは、プライベートアドレスと呼ばれる、誰でも利用できるアドレスを使ってルータとの間にセグメント(上でも説明しましたが、近いアドレスを持つノードによるネットワークのひとかたまり)を形成します。代表的なプライベートアドレスには

192.168.***.***

というのがありますが、例えば192.168.0.1とか、192.168.0.2などという近いアドレスをルータやPCに順次付けていくことで、家庭内のIPネットワークを構成するわけです。

ところが、このままでは外部へのパケットの中継をすることが出来ません。192.168.***.***というアドレスは、家庭内であれば誰でも使って良いのですが、裏を返せば、家庭外に広がるインターネットでは決して使ってはいけないことになっています。よって、192.168.***.***から外部のインターネットにWebサイトを見たいなどのTCPの要求を#3で説明したとおりに投げたとしても、Webサーバからすると「192.168.***.***ってどこにあるんだよ?」ということになってしまうわけですね。よってサーバからの返答が届かないのです。

そこで、以下のような順序で、上手く通信を行う仕組みを考えつきました。

(1)利用者はブロードバンドルータにプロバイダから与えられたユーザ名とパスワードを設定します
(2)ルータは、あたかも自分がパソコンであるかのように、プロバイダに接続します。その結果、プロバイダからIPアドレス一つ(例えばaaa.bbb.ccc.ddd)を割り当てられます
(3)家庭内部のパソコンA(例えば192.168.0.10)を利用している人が、www.goo.ne.jpのサーバに対し、Webのアクセスを行ったとします。このときのTCPパケットは、

Src.Address=192.168.0.10, Dst.Address=www.goo.ne.jp
Src.Port=1050, Dst.Port=80

です。この後、パソコンAは、1050番のポートを開けて返答を待ちます。
(4)ルータはそのパケットを外部に中継しないといけません。が、このままではまずいです。何故かというと、www.goo.ne.jpは上記のパケットへの返答をしなくてはいけない(TCPは双方向通信)のですが、192.168.0.10への返答というのは出来ないのです。よって、ルータは、以下のようなトリックを使います。
まず、Src.AddressとSrc.Portを勝手に書き換えます。

Src.Address=aaa.bbb.ccc.ddd, Dst.Address=www.goo.ne.jp
Src.Port=2100, Dst.Port=80

そして、上記の書き換えを行ったことをメモリーに記憶し、TCPポート2100番を開けて待ちます(この辺はパソコンが直接通信する場合と同じです)。
(5)www.goo.ne.jpというWebサーバは上記のリクエストを受け取ります。そして、SrcとDstを入れ替えて返答します。

Src.Address=www.goo.ne.jp, Dst.Address=aaa.bbb.ccc.ddd
Src.Port=80, Dst.Port=2100
(6)この返答は、aaa.bbb.ccc.dddというアドレスを持つルータに帰ってきます。ルータは、先ほどのメモリーの内容を見て、Dst.AddressとDst.Portを書き戻します

Src.Address=www.goo.ne.jp, Dst.Address=192.168.0.10
Src.Port=80, Dst.Port=1050
(7)そして、上記のパケットを家庭内LANに配送します。受け取ったパソコンAは、1050番ポートを開けて待っていましたので、上記のパケットを正常に受領します。

上記のようなプロセスで、プライベートアドレスしか持てない家庭内PCと、外部のインターネットの間を正常につなぐのがNATという機能です(最近は用語の区別がかなり曖昧になりましたが、以前はIPマスカレード機能とも言われました。一部のルータの説明書ではこのような名前で呼ばれているかもしれません)。

ところが、次のような場合、上手く通信が行えません。例えばインターネットゲームなどに参加している場合、外部のパソコンから、なんの予兆なくゲーム用のパケットが飛んでくることがあります。
このとき、ルータはLAN内の誰にこのパケットを届ければいいか、自分のメモリーをチェックしますが(上の(6)です)、予兆なくパケットが飛んできた場合はメモリーに情報がないため、どう書き換えればいいかルータは判断できません。こういうとき、ルータはパケットを捨ててしまいます。
よって、ルータを経由するゲームの場合、正常にネットゲームを行えないという場合が登場します(この教えて!gooでもこのようなケースについての質問が数多くあります)。

この場合、あらかじめそのネットゲームで利用されているポート番号と、そのネットゲームを遊ぶLAN内のパソコンが判明している場合、特例をルータに設定してやることで解決します。
特例とは、「メモリーにないパケットがTCPの****ポートにいきなり飛んできた場合は、アドレスだけ192.168.0.10に書き換えて、LAN内に中継しろ」というものです。
こういった設定をすることで、それまでは動作しなかったネットゲームなどのアプリケーションが動作するようになります。

本来、ルータとはIPアドレスのみを見て動作する装置であり、ポート番号とは無縁なのですが、NATのために、家庭向けブロードバンドルータはポートについての設定を行ったりするような装置になってしまっています。

この回答へのお礼

ありがとうございます。
sinobu_wednesday さんに、全部!

> 「ポート マジック」なるプログラムが入っているのですが、これは何をしているのでしょうか?

すみません、使ったことはないので確かなことは言えないのですが、下のURLを見る限り、ある特定のルータを利用している場合に、自動的にあるポート宛の通信を静的にフォワードする(いわゆるポート開放などと言われているようですが)ような設定をルータに行うようなソフトウェアのように思えます。
他にも、トラフィックのモニタリング、未利用のポート閉塞、ゲーム中にそれ以外の通信を遮断するモード、などの付随的な機能を持っているようです。

http://www.purenetworks.com/products/portmagic.php

特定のルータ(下記URL)を利用している人以外では、それほど嬉しいことはないように思えます…。

http://www.purenetworks.com/internet_gateways.php

お役に立てずすみません。

この回答へのお礼

ありがとうございます。
お話を伺えば、伺うほどに、???が増えてきます。

ルーターにも「ポート」があるのですか?

> プロトコルがあるものは、『専用の玄関口』があるようなもので、その、まさに「キー」となるべきものは、パケットの中に含まれているのでしょうか??

その通りです。パケットの頭にヘッダと呼ばれるものが付いているのですが、その中にソースポート(発信元ポート番号、Src.Port)とデスティネーションポート(宛先ポート番号、Dst.Port)と呼ばれる情報が格納されています。

http://ew.hitachi-system.co.jp/p/r-tcpheader.html

例えばTCPの場合は上記のようなヘッダが付いています。最初の16ビットがSrc.Port、次の16ビットがDst.Portです。


> ポートとは、入り口(通信先)のことで、出口(通信元)はどうなるのでしょうか?ランダムに割り振られるのでしょうか?

TCPの場合、パケットを送ると、それに対し必ず応答が発生します(双方向性)。このとき、あるパケットについての応答は、Src.PortとDst.Portを入れ替えることになっています。例えばWebサーバへの通信の場合、ウェルノウンポートとしてはWebサーバは80番と決められていますが、あるWebサーバへのアクセスは、例えば

Src.Port=1050、Dst.Port=80

というようになっています。Src.Portはランダムですが、ウェルノウンポートと重ならないよう、1024より大きい範囲で使うよう決められています。
ちなみに返答パケットは、

Src.Port=80 Dst.Port=1050

となるわけです。よってこのパケットを発信したPCは、1050番のポートを開けて返答を待っていればOKということになります。

また、これだけでは通信の混信やパケットの順番の入れ違いを防げませんから、ヘッダにはその他に様々な情報が格納されています。例えばシーケンス番号はパケットの順番を定義するために使われますし(シーケンス番号の順にパケットを整理してつなぎあわせ、アプリケーションに渡します)、コードビットはTCPの通信の制御(開始・終了・肯定、など)をやりとりするために使われます。

UDPの場合、通信の流れは双方向ではなく片方向ですから(双方向にやりとりしているように見える場合は、片方向の通信をそれぞれが行ってるだけ)、Src.PortとDst.Portを入れ替えて返信を待つ、というような動作はありません。

この回答へのお礼

現実的な話になって申し訳ないのですが、海外のA●Lから、専用ブラウザをダウンロード、インストールすると、「ポート マジック」なるプログラムが入っているのですが、これは何をしているのでしょうか?

ご存知ならば、ご教授願いたいのですが...

> 仮に、FTPのプロトコルを、双方が意図的に、他のポートで実行することなどは可能ですか???

はい、可能です。もちろん他の通信に影響が出ないように配慮する必要はありますが、他の通信のことはさておき、そのFTPの通信が出来るか出来ないかというだけの問題であれば、サーバ側・クライアント側アプリケーションでポート番号の設定変更が可能でさえあれば問題なく通信できます。

この回答へのお礼

ありがとうございます。おぼろげながら、ポートの『実体』が見えてきました。!(^^)!

プロトコルがあるものは、『専用の玄関口』があるようなもので、その、まさに「キー」となるべきものは、パケットの中に含まれているのでしょうか??

あ!思いついたのですが、ポートとは、入り口(通信先)のことで、出口(通信元)はどうなるのでしょうか?ランダムに割り振られるのでしょうか?

ポートとはTCP/UDPの通信の識別のための番号です。番号としてはそれぞれ0~65535になります。
なお、制御についてはNICより上のレベルの話で、OSのプロトコルスタック~アプリケーションの機能ということになります。

ポートを利用したハッキングの場合、多くは、そのマシンがあらかじめ開けてあるポートに対し、攻撃用のデータを投げつけることで行われます。なぜかというと、そもそもポートが閉じている場合、NICから上がってきたパケットを処理するOSのプロトコルスタック(相対的に低いレイヤ)で捨てられてしまい、攻撃が成立しないからです(評価者がいないと攻撃にならない)。ポートが開いている場合、OSのプロトコルスタックはより上位の層にパケットを渡します。その際、そのパケットを評価するアプリケーションなどに脆弱性があると、そこを突いた攻撃が可能になる、というわけです。

当然、ドライブごとOSを消去したPCは、例えNICにケーブルが刺さっていても、攻撃することは不可能です(攻撃用パケットを処理する評価者がいないため)。

この回答へのお礼

ありがとうございます。

「ウエル-ノウン ポート」として、通信プロトコルなどにより、ポート番号が決まっていますが、仮に、FTPのプロトコルを、双方が意図的に、他のポートで実行することなどは可能ですか???

このQ&Aは役に立ちましたか?13 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事

フリーアナウンサー長谷川豊氏の新コーナー「このニュースどう思います?」がスタート!

元フジテレビのフリーアナウンサー長谷川豊氏から気になるニュースについておしトピの皆さんに質問します! 皆さんの意見をもとに長谷川豊氏がコラムを執筆します! アプリリリース記念として最大1万分のアマゾンギフト券プレゼントキャンペーンも実施中!


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集