• 締切済み

ポートフォワーディングのローカルフォワードのTCP

ポートフォワーディングのローカルフォワードのTCPのコネクション数について。 ローカルpcから踏み台サーバ経由で目的のサーバにhttpでアクセスする場合を考えます。 OSは関係ないと思いますが、ここではローカルpcはWindows、それ以外はlinuxとします。 まずはsshコマンドで # ssh 踏み台サーバ -L 10080:目的サーバ:80 でポートフォワーディングします。 ローカルpcのブラウザから http://localhost:10080 へアクセスすると目的サーバへ転送される認識です。 この時、ブラウザの複数のタブで同一URLにアクセスしても接続は可能ですか? 私の考えではhttpのレスポンスの宛先ポートがsshのトンネルのせいでブラウザのどのタブに紐づくポートへ返していいか判断できないのではないかと思っています。 質問文が分かりにくい場合は補足させていだきますのでご回答のほどよろしくお願いします。

みんなの回答

  • asciiz
  • ベストアンサー率70% (6849/9742)
回答No.1

特に問題ないと思います。 ブラウザでは、宛先ホストのポート番号を指定しますが、TCP本来の通信でいうと、実は自分側にもポート番号があるんです。 通信元のIPアドレスとポート番号、通信先のIPアドレスとポート番号、全て指定したもので通信路が確立されたなら、データ送受信がなされます。 試しにコマンドラインから「netstat」と打ってみてください。 通常のhttpアクセスであれば、宛先ポート「:http(80番)」のセッションが、httpsアクセスであれば、「:https(443番)」というセッションが、現在表示中のブラウザのタブの数だけ、見つかります。 そしてそれら宛ての、発信元IPアドレスは同一ですが、全てポート番号が違います。(一般的には49152番以上なので、5万・6万番台がほとんど) なので、ポートフォワードがあっても通信は混じることなく、それぞれ区別できます。 (参考) >TCP/IP通信の状態を調べる「netstat」コマンドを使いこなす (1/2) >https://www.atmarkit.co.jp/ait/articles/0207/20/news003.html

jk111574
質問者

補足

すみません。もう少し詳しく聞かせてください。 例えば、ブラウザを2つ起動して、ローカルpcのlocalhost:10080へ接続したとします。 このとき、ソースポートとして40000と40001が割り当てられたとします。 httpのGETリクエストがそれぞれsshのトンネルを抜けて踏み台サーバを通り目的サーバの80番ポートとTCPコネクションが確立すると思います。 こよとき、踏み台サーバのソースポートとして50000と50001が割り当てられたとします。 この場合、40000と50000がペア、40001と50001がペアという情報は誰が制御してくれるのでしょうか?