- ベストアンサー
ポート番号について教えてください
ポート番号において (前者)IPマスカレード機能において、1つのグローバルIPアドレスで複数のコンピューターが同時に通信を行うため、ポート番号をプライベートアドレス(PC)ごとに適当に割り当てて、通信のつどポート番号を変換し、限りあるグローバルIPアドレスの枯渇を防ぐ場合と (後者)ポートを指定し、識別番号をつけることによってどのアプリケーションでデータを受け取るかを決める場合と 同じ「ポート番号」という言葉が使われていますが、この違いはなんなのでしょうか。 自分で考えてみたのですが、 前者は、IPマスカレード機能はルーターの1つのグローバルIPアドレスを複数のポート番号に割り当てることによりLAN上の複数のプライベートIPアドレスを利用できるようにしたもので 後者は、LAM側にあるPCのプライベートIPアドレスに複数のポート番号を割り当てて同時に複数のアプリを動かすことを実現している違いでしょうか。 つまり、何に対してポート番号を割り当てるかの違いがあるかということです。 また、この2つはルーターの設定で行うと考えてよいのでしょうか。 ややこしい質問かもしれませんが、どう把握したらよいか教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>例えば、後者では、アプリが使用するポート番号で、ホームページを見るときは80番、メールを送信するときは25番を使うみたいなのですが、前者では、これをグローバルIPアドレスに割り当てるポート番号として重複して80番や25番といった番号は使えなくなってしまうのでしょうか。 80番や25番などのウェルノンポートは、「サーバ側」のポート番号です。 クライアント側は任意の(TCP/IPのドライバ等が適当に付ける)ポート番号を使用します。 ルータ側で静的マスカレードなどの設定がされている場合は、関連づけられたポート番号は「送信側ポート番号」には使用されないはずです。 Webサーバに接続したとき、クライアント側が12345番ポートからサーバ側の80番ポートに接続すると、 クライアントからの送信パケットには送信元IPアドレスにクライアントマシンのIPアドレス、送信元ポートに12345番、宛先IPアドレスにサーバのIPアドレス、宛先ポート番号に80番。 というヘッダがついて送信されます。 サーバ側からのパケットの場合、送信元IPはサーバのIP、ポート番号は80番で、宛先はクライアント側のIP、宛先ポート番号は12345番となります。 ルータはこの間に入って、宛先、送信元のそれぞれの情報を記憶、書き換えた上でパケットを中継します。 サーバ宛に送るときはIPアドレスをルータ自身のIPアドレスに、ポート番号はルータが任意に決めた番号に。 サーバから戻ってきたら宛先をクライアント側の情報に書き換えて返してくれます。
その他の回答 (3)
- jjon-com
- ベストアンサー率61% (1599/2592)
#1への補足は,用語の使い方から理解の仕方まで,すべて的はずれだと思います。 この補足を読んで,IPとTCPが別のプロトコルだということをそもそも把握していないのでは?と思いました。だから,TCPポート番号という言葉が分からないし,202.150.AA.BB.80という奇異な表記が登場するし,Webサーバの待ち受けTCPポート番号80番をWebブラウザのポート番号と混同している,ということになるのでしょう。 TCP/IPの基礎をすべて解説するのはシンドイので,書籍なりWebサイトの解説記事なりで勉強なさってください。 とりあえず,図解があった方が分かりやすいでしょうから,Googleイメージ検索 http://images.google.co.jp/ にて「IPマスカレード」でキーワード検索して見つかったページを2例ほど紹介しておきます。 http://www.itbook.info/study/nat6.html http://w3-pre.apc.ehdo.go.jp/21301/mid/2-3.html
お礼
この質問版とネットだけの情報で理解しようとしましたが私には無理でした。 教えていただいたホームページのアドレス(上の方アドレスの図2つ)とWr5さんからいただいた回答を何度も比較しながら読んでみて、なんとなくですが少し理解できたように思います。細かいことはわからないままですがアドバイスしていただいて助かりました。 それと図解のあるホームページはよかったです。
- outerlimit
- ベストアンサー率26% (993/3718)
後者が本来のポート番号の使用法です そのためにポート番号が生まれました 前者はIPアドレス枯渇対策のために ポート番号を利用すれば いわゆるIPマスカレードで実現できることに気づいた人が提唱して広まったのです 結果からの視点のみだからわからないのです(難しく考えすぎています) インターネット、TCP/IPの歴史を勉強すれば、疑問は解消します
- jjon-com
- ベストアンサー率61% (1599/2592)
質問文中で表現されている理解でよいと思います。 前者も後者も原理的にはいっしょだと思うので,私なりの言葉で表現してみます。 まず後者の場合。 例えば,インターネットに直接接続されている1台のPC上でWebブラウザのウィンドウを10枚 開いて,10箇所のWebサイトを同時に閲覧しているとします。 ・1台のPCにIPアドレスが1つ割り当てられている。 ・各ウィンドウに別々のTCPポート番号を1つずつ割り当てている。 TCPポート番号によって識別しているから,混信することなく,各ウィンドウにそれぞれのWebページが表示されるわけです。 前者のイメージも同じでして。 例えば,1台のルータ(1つのグローバルIPアドレス)を共有利用して,組織内の100台のPCがそれぞれウィンドウを2枚ずつ開いて,Webサイトを同時に閲覧しているとします。 ポイントは, インターネット側からすると,100台のPCがアクセスしているようには見えず(プライベートIPアドレスはインターネット上で使用できませんから), 1台の巨大なPC(=ルータ)が 100×2=200枚のWebブラウザウィンドウを開いてアクセスしているように見える ということです。つまり, ・1台のPC(=ルータ)にIPアドレスが1つ割り当てられている。 ・各ウィンドウに別々のTCPポート番号を1つずつ割り当てている。 という原理は変わりません。 ただ,インターネット側からは関知する必要のない組織内部のLAN側では,実をいうと1台のPC画面に表示された200枚のウィンドウではなくって,ルータの各TCPポート番号で送受信されるパケットは対応づけられた各PCに転送されていた,ということになります。 >また、この2つはルーターの設定で行うと考えてよいのでしょうか。 「設定で」という表現がちょっと引っかかりました。 インターネットに直接接続できるPCはこれを自動的におこないますし,プライベートIPアドレス~グローバルIPアドレスの変換機能を持つルータもこれを自動的におこないます。
補足
回答ありがとうございます。 前者も後者もIPマスカレードという原理を使う点では一緒と考えればいいんですね。 ただ、TCPポート番号という言葉が使われていたのですがこの辺がよくわかりませんでした。 後者では、アプリが使用するプロトコルTCP/IPにおけるポート番号ということでなんとなくわかったのですが、前者でも、TCP/IPにおけるポート番号と考えてよいのでしょうか。 例えば、後者では、アプリが使用するポート番号で、ホームページを見るときは80番、メールを送信するときは25番を使うみたいなのですが、前者では、これをグローバルIPアドレスに割り当てるポート番号として重複して80番や25番といった番号は使えなくなってしまうのでしょうか。 さらに例えると、グローバルIPアドレスが 202.150.AA.BBだとすると 202.150.AA.BB.80(80はポート番号)や 202.150.AA.BB.25(25はポート番号)は 重複して使えないのでしょうか。
お礼
初めて知る概念でしたのでこの文を理解するのに少々時間がかかりましたが役に立ちました。 簡単に要点だけまとめてあるのでとてもよかったです。