アプリ版:「スタンプのみでお礼する」機能のリリースについて

ポート開放確認くん というサイトで80番ポートが開いているかを確認したら開いていないと表示されていました。
しかし、開いていなかったらネットが使えなくなると思うのですがそのようなことは起こるのでしょうか?

私の環境のでルータをいくつ使用しているかとか記述しようと思いましたが、
光用のルータもつながっているので見方が良くわかりませんでした。
LAN内のパソコン上からルータにいくつ接続しているか
簡単に調べることができるツールがあったら教えてください。

A 回答 (6件)

以前は、双方が80番ポートを開いて通信するのが当たり前でした。


しかし、それをやってしまうと、自宅に複数のPCがある場合、グローバルIPアドレスが複数必要になります。
これが「IPアドレスの枯渇問題」なのですが、それで誕生したのが「IPv6」です。

しかし、その後に技術が発達し、クライアント側は事前にwebサーバーに対して、ポート番号を知らせることで、クライアント側のポート番号は自由に変えられるようになりました。
これにより自宅のIPアドレスは「192.168.1.XX」といった感じで持ち、グローバルIPアドレスは1つだけで済むようになりました。

この回答への補足

勉強不足で理解しにくい部分があるのですが、次のように理解しました。

こちらの80番ポートは様々なアプリで使われて競合するおそれがあるので、
80番ポートでのやり取りを希望したアプリに対してサーバ側が別のポートを指定する。
それを、そのアプリが別のポートで送受信を行うことを受諾してパケットの送受信が可能となる。

疑問が生じたのですが、
・ポート番号を自由に変えられるのは、セキュリティーの問題や他のアプリとの競合が発生する問題はないのですか?
・IPアドレスの枯渇とポート番号の変更はどのような関係があるのでしょうか?

補足日時:2010/03/19 11:10
    • good
    • 0

一般的に固定のポート番号を使うのはサーバだけで、クライアントは接続の際に空いている適当なポート番号(1024~65535の適当な値)を使います。

通常のルータなどで設定してポートを開けておく必要があるのはサーバを立てるときだけです。ゲームなどでUDPを使うものだとUDPポートを開けておく必要があるかもしれませんが。
# TCP80番はWebサーバがhttpを受け付ける標準のポート番号です

ftpは特殊で元々はデータ転送時にサーバからクライアントにつなぎに行くのでポートを開けておく必要がありましたが、これもパッシブモードでは必要なくなりました。

自環境で中継しているルータの数ですが、適当な外部サイトへtracerouteコマンド(tracert)を打てば中継ルータがリストアップされるので、最初のグローバルIPの手前までが自LAN内での中継でしょう。
# 最近はtracerouteを遮断していることも多いですけど

この回答への補足

サーバとクライアントを混同していたように思えます。
上の問題は解決出来ました。

tracerouteを使って調べましたが、
1 <1 ms <1 ms <1 ms 192.168.0.1
2 1 ms <1 ms 1 ms 192.168.24.1
以下略

となっており、LANが二重になっていると思われますがこのパソコンの情報はipconfigでIPアドレス、サブネットマスクは分かりますが、
このパソコンから数えて1つめに経由したルータの一重目のLANにおけるIPアドレス、サブネットマスクはどのようにして調べるのでしょうか。

補足日時:2010/03/19 11:43
    • good
    • 0

インターネット上の不通の(TCP/IP という)接続では、サーバー(こっちがサービスを提供する方)とクライアント(こっちはサービスを受ける方)があります。


通常、「ポート解放」関連で話題にするのは、「サーバー側」のポートです。

ですから、自宅から、どこかの web ページを見に行く場合(こちらはクライアント)には、ポート解放は気にする必要はありません。

この接続の場合、

・クライアント側(サーバーを見ようとする方)が、自分のポートをひとつ準備して、サーバー側の、特定のポートに接続を求める
・サーバー側(ページを提供する方)は、自分が開放しているポート(Web なら、多くの場合は 80番)に接続要求があった場合に、接続に応答して、クライアントの要求に備える

という手順を踏みます。
ここで、サーバー側のポートは、こちらから指定する必要がありますから、あらかじめわかっている必要があります。
このため、(Web なら 80番というように)それぞれのサービスに対して、決まったポート番号を使う場合が多いのです。
(そうでない場合もあり得ます)

さて、セキュリティで怖いのは、「サービスを要求する方」よりも、「サービスを提供する方(サーバー)」です。
クライアント側は、つなぐ意志がある場合につなぎますが、そうでない倍にはつなぎません(ウイルスなどに感染した場合には、この前提が崩れるので、クライアント側でも怖い)

サーバー側は、「80番でつないで」と要求されれば、とりあえず、それに答えなければなりません。
ですから、「どこのどんなやつがつないでくるかわからない」訳です。
ですから、サーバーのセキュリティにはかなり力を入れます。

一方で、家庭のパソコンが、「単に情報を見に行くだけ」であれば、外からの接続要求はありません。
このために、「外に向かって開いている(サーバーとしての)ポートは極力閉じましょう」ということになります。
ですから、「読みに行く方」は、ポートを開いておく必要はありません。
(というか、読みに行くときに、あいているポートを自分で選んで使います)

パーソナルファイアウォールなどでも、この、「クライアント側(読みに行く方)のポートは気にしません。
サーバー側(データのありかを指定する)のポートを気にします。

ですから、「ポート解放」は、「間違って自分の方で、サーバーとしてのポートを開放していないか」の確認で、クライアントとしてのポートは問題ないということです。

もともと、インターネットの仕組み自体が、最初に接続を要求するのはどちらかという分類があり(接続した後は、双方向に通信できます)接続を要求する方(=クライアント)のポートは、自由に選択できます。
これに対して、接続を受ける方(=サーバ)のポートは、「クライアント側が事前に指定しなければならい」=「サーバー側はあらかじめ解放しておかなければならない」のです。
    • good
    • 0
この回答へのお礼

ありがとうございます。大変良く分かりました。

疑問に思ったことは、
こちらがルータを使っていて、サーバに接続要求するためにアプリがこちら側のポートを指定する時、
そのポートはルータに指定しておかないとサーバから送られたデータを受信出来ないと思いますが、
アプリが随時パソコンやルータのポートを閉じたり開いたりしているのでしょうか。

お礼日時:2010/03/19 12:07

補足ありがとうございました。



クライアント側
(ローカルIP:ポート)LAN(グローバルIP:ポート) WAN(サーバー側:ポート)
192.168.1.20:80<------->219.53.219.XXX:1000<------>www.xxx.com:80
192.168.1.30:80<------->219.53.219.XXX:1100<------>www.xxx.com:80

LAN内でローカルIPからグローバルIPへ変換するのがルーターの役割になります。
「IPアドレスとポート番号」が、番地(住所)のようなもので重複が許されません。
また、サーバーとクライアントで意識するのはWAN上のIPアドレスとポート番号です.
サーバーはクライアントからの要求があって初めて送信を行います。
その時にクライアントは、自分のポート番号を通知します。(1000,1100)
あくまでも自分のポート番号を決めるのはクライアント側です。

グローバルIPアドレスは、個々の自宅(?)により違いますので、それぞれの宅内でポート番号が重複しない限り、問題は起こりません。

セキュリティーに関しては、ルーターで開いたポートに対するサーバー以外からの受信を拒否する仕組みになっています。
    • good
    • 0
この回答へのお礼

よく分かりました。
ありがとうございます。

お礼日時:2010/03/19 12:42

ルータが行うポートに関する制御というのは、「こちらがサーバーとして指定されたときに、開放されていないポートへの接続要求なら、接続を拒否する」というだけのことです。



こちらが接続要求を行う場合(つまり、クライアントとして設定したポート)については、一切関知しません。
また、クライアントとして、相手のサーバーのポートを指定したとして、このポートも一切関知しません。
(関知する場合もありますが)

さて、「ポートが開放されている」というのはそもそもどういう場合でしょう?
これは、たとえば、「ポート開放確認くん」などのサイトが、あなたの自宅のパソコン(実際にはルータ)に対して、80番で接続要求をします。そして、接続が成立したとしたら、80番ポートは開放されているということになります。

一方で、こちらから、サーバーにアクセする場合、「自宅のパソコンに対して、80番で接続要求を出す」ということは、(普通は)ありません。

だから、自宅にサーバがあるのでなければ、ポートを開放する必要はないのです。

どちらに対して接続要求を行うか、そして、その(ルータが制御する)ポートは、どちらに(接続要求を行う側=クライアント or 接続要求されるほう=サーバー)割り当てられたものかを認識すれば、混乱はなくなると思います。

また、各ルータのLAN設定ですが、それは、ルータのLAN設定を確認するしかありません。

自分のパソコンの、デフォルトゲートウエイが、通常最初のルータになっているはずです。
最近のルータであれば、http://(その IP アドレス)で、設定画面が見られます。
(ID・パスワード必要だと思いますが)

そこで確認したものが、そのルータがゲートウエイとして使用しているルータのアドレスになりますので、同じように、そのルータの設定を確認するという流れになります。

> tracerouteを使って調べましたが、
> 1 <1 ms <1 ms <1 ms 192.168.0.1
> 2 1 ms <1 ms 1 ms 192.168.24.1

であれば(普通は)

最初のルータ
IP address : 192.168.0.1
サブネットマスク : 255.255.255.0 (192.168 はクラスCのアドレスなので、これはほぼ確定)

次のルータ
IP address : 192.168.24.1
サブネットマスク : 255.255.255.0

です。

あと、パソコンが、Web を見に行くときに、こちら側のポート番号として、80番を使うことはまずありません。(絶対なかったかな?)

クライアント側のポート番号は、その時点でそのパソコンが使ってないポート番号から、勝手に選びます。
なので、そもそもそ、クライアント側のポート番号を、あらかじめ知っていて解放するなどということも不可能です。
※そうでなければ、ひとつのパソコンから、同時に2つのWeb ページが見られなくなります。
クライアント側で指定するポート番号は、重なってはならないので。

サーバー側は、80番に接続要求を出したのが、どの IP address の、どのポート番号を使っているかを組み合わせて識別します。
ですから、ひとつのパソコンから、同時に、同じサイトに接続しても、クライアント側のポート番号によって、別々のページを混乱なく表示できるわけです。
    • good
    • 0
この回答へのお礼

接続要求をする側とされる側をまた分けないといけなかったのですね。
理解したと思ったのにまだサーバとクライアントを混同していたようです。

お礼日時:2010/03/19 13:31

ANo.1=ANo.4さんの回答には勘違いが含まれているように思います。


ANo.4の例でクライアント側ポート番号に80番を使っていますが、Webにおいてクライアント側に80番を使うことはありません。
# OSによっても違うが1023番以下の番号はOSでサーバ用に予約されていて
# クライアントアクセスで指定することはできなかったりする

TCP/IPの通信は(相手IPアドレス、相手ポート番号、自分IPアドレス、自分ポート番号)の4つ組で識別されます。通信はクライアントから開始するわけですが、そのとき自分IPアドレスは分かっていますし自分ポート番号は使っていない番号をOSから貰えばよいですが、相手IPアドレスと相手ポート番号はサーバから指定されたものを使います。IPアドレスは当然サーバごとに異なりますが、ポート番号は共通で構わないので通常は80番を使うことになっています。

なお、家庭用ルータに入っているローカルIPアドレスをルータ自身のグローバルIPアドレスに置き換えて通信する機能はNAT等と呼ばれ、家庭用ルータでは一般的ですが全てのルータにある機能ではありません。
NAT機能では、LAN内のパソコン等から開始するTCP/IP通信について、外部にルータ自身が開始したかのように装って通信し、その応答を元のパソコン等のローカルIPアドレス、ポート番号に変換して返します。
逆に外部から開始されてルータに送られた通信は、LANのどのパソコン等に送るか決められないためどこにも送られません。これを送れるようにするためにはどのポート番号への通信をどのパソコンに送るかというポート設定が必要です。

最後にフレッツ光を使っているようでしたら二重ルータはトラブルの原因になりますので、自分のルータをブリッジ設定にするなどして二重ルータを解消した方が良いでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ブリッジ設定について調べてみようと思います。

お礼日時:2010/03/19 13:39

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