No.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のために、家庭向けブロードバンドルータはポートについての設定を行ったりするような装置になってしまっています。
No.4
- 回答日時:
> 「ポート マジック」なるプログラムが入っているのですが、これは何をしているのでしょうか?
すみません、使ったことはないので確かなことは言えないのですが、下のURLを見る限り、ある特定のルータを利用している場合に、自動的にあるポート宛の通信を静的にフォワードする(いわゆるポート開放などと言われているようですが)ような設定をルータに行うようなソフトウェアのように思えます。
他にも、トラフィックのモニタリング、未利用のポート閉塞、ゲーム中にそれ以外の通信を遮断するモード、などの付随的な機能を持っているようです。
http://www.purenetworks.com/products/portmagic.php
特定のルータ(下記URL)を利用している人以外では、それほど嬉しいことはないように思えます…。
http://www.purenetworks.com/internet_gateways.php
お役に立てずすみません。
No.3
- 回答日時:
> プロトコルがあるものは、『専用の玄関口』があるようなもので、その、まさに「キー」となるべきものは、パケットの中に含まれているのでしょうか??
その通りです。パケットの頭にヘッダと呼ばれるものが付いているのですが、その中にソースポート(発信元ポート番号、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から、専用ブラウザをダウンロード、インストールすると、「ポート マジック」なるプログラムが入っているのですが、これは何をしているのでしょうか?
ご存知ならば、ご教授願いたいのですが...
No.2
- 回答日時:
> 仮に、FTPのプロトコルを、双方が意図的に、他のポートで実行することなどは可能ですか???
はい、可能です。もちろん他の通信に影響が出ないように配慮する必要はありますが、他の通信のことはさておき、そのFTPの通信が出来るか出来ないかというだけの問題であれば、サーバ側・クライアント側アプリケーションでポート番号の設定変更が可能でさえあれば問題なく通信できます。
ありがとうございます。おぼろげながら、ポートの『実体』が見えてきました。!(^^)!
プロトコルがあるものは、『専用の玄関口』があるようなもので、その、まさに「キー」となるべきものは、パケットの中に含まれているのでしょうか??
あ!思いついたのですが、ポートとは、入り口(通信先)のことで、出口(通信元)はどうなるのでしょうか?ランダムに割り振られるのでしょうか?
No.1
- 回答日時:
ポートとはTCP/UDPの通信の識別のための番号です。
番号としてはそれぞれ0~65535になります。なお、制御についてはNICより上のレベルの話で、OSのプロトコルスタック~アプリケーションの機能ということになります。
ポートを利用したハッキングの場合、多くは、そのマシンがあらかじめ開けてあるポートに対し、攻撃用のデータを投げつけることで行われます。なぜかというと、そもそもポートが閉じている場合、NICから上がってきたパケットを処理するOSのプロトコルスタック(相対的に低いレイヤ)で捨てられてしまい、攻撃が成立しないからです(評価者がいないと攻撃にならない)。ポートが開いている場合、OSのプロトコルスタックはより上位の層にパケットを渡します。その際、そのパケットを評価するアプリケーションなどに脆弱性があると、そこを突いた攻撃が可能になる、というわけです。
当然、ドライブごとOSを消去したPCは、例えNICにケーブルが刺さっていても、攻撃することは不可能です(攻撃用パケットを処理する評価者がいないため)。
ありがとうございます。
「ウエル-ノウン ポート」として、通信プロトコルなどにより、ポート番号が決まっていますが、仮に、FTPのプロトコルを、双方が意図的に、他のポートで実行することなどは可能ですか???
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JS/Packed.Agent.N が検出され...
-
この手のものは初めてなのでど...
-
社用メールから個人メールへ資...
-
Googleで画像を見ててGIFが勝手...
-
迷惑電話について相談です。 同...
-
windors PC 前面画像の警告
-
エクセルパスワードについて
-
同じドメイン内の詐欺メールの...
-
詐欺?文集オンライン 次のペー...
-
walmartから身に覚えのないメール
-
変換、解凍、圧縮サイトを使用...
-
ネット民の特定班ってどうやっ...
-
卒業論文について。短大2年です...
-
私の行っているバイト先は指紋...
-
Torブラウザ セキュリティに良...
-
UberEatsのフィッシング詐欺に...
-
ネットの世界
-
電子メールのリダイレクトURLは...
-
Yahoo知恵袋での利用制限について
-
Dアカウントについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「239.255.255.250:1900」宛の...
-
同セグメント内に流れているパ...
-
NT Kernel System(ntoskrnl.exe...
-
コンソール接続におけるパケッ...
-
ルータとブリッジの違い?
-
毎日、不正アクセスの集中攻撃
-
基本的なことですが、『ポート...
-
Etherealの使い方(A⇔B間)
-
Overlapping Fragment Attackに...
-
DOS攻撃の対処方法
-
スイッチングハブ
-
WindowsUpdateをするために必要...
-
アドレスの偽装について
-
パケットキャプチャーで社内か...
-
異なるサブネットで片やPing OK...
-
ルーターのセキュリティログにて
-
ログを取るソフトはあるのでし...
-
(1)以前、「2台目のPCでゲーム...
-
他の端末のMACアドレスから他の...
-
ルータのファイヤウォール機能...
おすすめ情報