P167のIPマスカレードとNATについて

ナイペータです。
戸根先生、質問よろしくお願いします。

タイトルのように、IPマスカレードとNATについて質問です。

といいますのも、あるクライアントからサーバにパケットを送る場合、
送信元のクライアントが使用するポート番号は、1024以上の任意の番号を使用するため、ルータでIPアドレスのみを変更する(NAT)の機能だけでクライアントの認識が、可能なのでは?わざわざ、ルータでIPアドレスとポート番号の両方を変える必要って??というのが質問の意図です。

IPマスカレードでは、「外部に対して一つのグローバルアドレスしか
利用できない場合、社内ネットワークの複数の端末を見分けるのにポート番号を利用する」とあります。
図 3.20の「アドレスとポートの対応表」にあるLAN側のポート番号欄の番号がすべて同じであることに疑問が出ています。複数あるクライアント端末が任意の同じポート番号(例えば、1025番を使って通信しているクライアントが複数ある)を使用して通信することは、可能なのでしょうか?少し、私自身混乱しています。

お忙しい中、恐れ入りますがよろしくお願いします。
ナイペータ

名前: 
ナイペータ
日時: 
04/05/19 19:09

コメント

ナイペータさん,こんばんわ。

> 送信元のクライアントが使用するポート番号は、
> 1024以上の任意の番号を使用するため、
> ルータでIPアドレスのみを変更する(NAT)の機能だけで
> クライアントの認識が、可能なのでは?

クライアント側のポート番号は,未使用のものを適当に見繕って使います。
すると,複数のクライアントが,たまたま,
同じ値のポート番号を使うことだってあるでしょう。
IPアドレスのみを変更するNATだとそのときに困るんです。
だから,IPアドレスとポート番号を両方一緒に書き換えるんですね。

> 図3.20の「アドレスとポートの対応表」にあるLAN側のポート番号欄の
> 番号がすべて同じであることに疑問が出ています。

これは,複数のクライアントがたまたま同じポート番号を使う,
という上の状況を絵にしたものです。(笑)
実際には,OSが適当にポート番号を決めるのですが,
OSが同じだったら,ポート番号を決める部分のプログラムが同じなので,
複数のクライアントのポート番号が同じになることはよくあります。

> 複数あるクライアント端末が任意の同じポート番号を使用して
> 通信することは、可能なのでしょうか?

可能です。
といいますか,ソケットを作るときにポート番号を指定すると,
指定したポート番号を使って通信し,
ソケットを作るときにポート番号を指定しないと,
OSに組み込んであるTCP/IPソフトが未使用の番号を適当に見繕います。
これは,クライアントでもサーバでも同じです。
通常,クライアント側のポート番号は何でもよいのでポート番号を指定しません。
だから,適当な番号を見繕って使うわけです。
サーバの方はアプリケーションの種類によってポート番号が決まっているので,
ソケットを作るときにその番号を指定するということですね。

戸根先生 早速の回答、ありがとうございました。

今まで、今回の部分に関してこのような疑問は持たなかったのですが
じっくりと『ネットワークはなぜつながるのか』を考えながら読んでいたら
疑問におもったのでした。

これで、疑問が解消されました!

お忙しい中、ありがとうございます。

ナイペータ