TCPポートの自動選択について – 固定ページ 2 – プログラミング – Home

TCPポートの自動選択について
 
通知
すべてクリア

TCPポートの自動選択について

固定ページ 2 / 2

るし
 るし
(@るし)
ゲスト
結合: 16年前
投稿: 19
Topic starter  

書き込んだあとで思ったのですが

>で、ためしにFTPサービスを起動していないパソコンでFTPポート(21)を使って
>TCPサーバポートを開いてみのたですが。

よく考えればこれはサーバーとしてポートを使用する場合であり、クライアント
としてのポートの自動割り当てのケースとは違いましたね。

いろいろ試してるとこんがらかって・・・^^;。

m(__)m。


返信引用
dogatana
 dogatana
(@dogatana)
ゲスト
結合: 16年前
投稿: 4
 

> 以下のようにservicesファイルに自分の予約したポートを定義します。
> myapp 52300/tcp #My App
> その後、この端末で300個のサーバーポートを開き、他の端末から300個
> の接続を行ってみたところ、netstatの表示結果が以下のようになりました。

実現したいサーバとクライアントの関係を検証する項目になっていないかも。
「この端末」というのは「サーバーポートを開き」とあるので、サーバです
よね。で、servicesの登録は、「この端末」=サーバで行ったということで
すよね?
問題は、クライアント(192.168.3.2)がサーバ(home31)に接続するとき、
クライアント側で自動割当されるポート番号を制御したいとということと
理解したのですが、そうだとすればsevicesの設定による動作検証はクライ
アント側で行う必要があると思います。

servicesはポート番号を名前によって参照するもので、予約=自動割当
禁止とする、というのとは無関係じゃないでしょうか。
(RFCにはあたっていませんので、あくまで推測ですが)

> TCP home31:3125 192.168.3.2:52298 ESTABLISHED
> TCP home31:3126 192.168.3.2:52299 ESTABLISHED
> TCP home31:3127 192.168.3.2:myapp ESTABLISHED
> TCP home31:3128 192.168.3.2:52301 ESTABLISHED
> TCP home31:3129 192.168.3.2:52302 ESTABLISHED

ここでは3125~3129がサーバが待ち受けで使用するポート番号と理解しました。
そもそもサーバが待ち受けで使うポートが300個もあるのでしょうか?

多くのサーバは、1つのポート番号で待ち受けし、クライアントから接続
された場合、別プロセスもしくはスレッドに処理を引き継ぐ構成になって
いますが、想定されているシステムでは本当に300個の待ち受けポートが
必要なのかという確認です。

もし、それだけ必要であるのなら、各ホストの起動時に、即座に使用しない
分も含めて、使用したいポートで(ダミーでも良いので)サーバを立ち上げ
てしまうってのはだめですかね?


返信引用
るし
 るし
(@るし)
ゲスト
結合: 16年前
投稿: 19
Topic starter  

dogatana 様
お世話になります。

ご指摘の通り、日本語間違いです^^;。


------------
>その後、この端末で300個のサーバーポートを開き、他の端末から300個
>の接続を行ってみたところ、netstatの表示結果が以下のようになりました。
------------

修正
------------
その後、別の端末で300個のサーバーポートを開き、この端末(servicesを定義
した側のパソコン)から300個の接続を行ってみたところ、netstatの表示結果
が以下のようになりました。
------------
何回も読み返していたつもりなのですが・・・^^;;;;。

>servicesはポート番号を名前によって参照するもので、予約=自動割当
>禁止とする、というのとは無関係じゃないでしょうか。
試した結果からはその通りのように思いました。

>そもそもサーバが待ち受けで使うポートが300個もあるのでしょうか?

300台程度の装置で相互接続する場合を想定しています。試験端末は2台、また
通信アプリもサーバ兼クライアントのアプリ1本しかありません。
そのため、双方の装置にサーバ定義300個と接続先定義300個を作って相互
接続を行い、テストを行っています。
通常の運用であれば、各端末には1個のサーバ(全端末で共通ポート)を作成し、
他の299台からの接続を受け入れることになります。


返信引用
るし
 るし
(@るし)
ゲスト
結合: 16年前
投稿: 19
Topic starter  

>試してませんが、Windowsではレジストリに登録して予約ができる模様。

上記の内容について試してみました。
※OSはVISTA

テストアプリにてクライアントに使用されたポートが49???~52000の範囲だったので
ReservedPorts について、49200~52000の範囲を指定してみました。
しかしながら、この設定値はまったく無視されて、クライアント用としてポートが
確保されました。

次にMaxUserPortについてですが、設定値5000で定義して再起動を実施。
その後、アプリを起動してみると、クライアントに割り当てられるポートが
1025~となりました。この設定は有効なようです。そこでReservedPortsとの
設定値の関係がないかなぁと思い、調べようとしていたところ、不意にOSがリブート。
その後、OSのログイン画面まではくるのですが、そこから自動的に再起動を行うとい
うへんな状態になってしまいました。

やむなく、セーフモードで起動しレジストリからMaxUserPort定義を削除したのですが、
リブートする現象は変わらず・・・・。MaxUserPort=65534を指定してみたのですが
またしても変わらず。VISTAの復元処理により、なんとか正常に戻りました
(一部、インストール情報が書き換わったのか、起動しなくなってしまったアプリが
ありますが^^;;)。

OSが不安定になってしまった現象がVISTAによるものなのかわわかりませんが、
このような状況なので、原因がはっきりしないことにはこのパラメータは
使えないなぁという結論です。


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

大きなお世話で申し訳ないのですが、

OSのほうを設定するとなると、300台ほどのPC全部やらないといけないのは
仕様として大変じゃないかしら


返信引用
るし
 るし
(@るし)
ゲスト
結合: 16年前
投稿: 19
Topic starter  

>OSのほうを設定するとなると、300台ほどのPC全部やらないといけないのは
>仕様として大変じゃないかしら

環境構築前であれば、マスター端末を作成してHDDイメージコピーすればいいですね。
既に環境が出来上がっていて、途中から組み込む場合でも以下のように。

1.レジストリ登録するバッチをネットワークで全端末に一括コピー
  スタートアップにバッチへのショートカットも同時に作成
2.全端末の再起動
3.ネットワーク経由で全端末のバッチ、ショットーカット登録を一括削除


返信引用
るし
 るし
(@るし)
ゲスト
結合: 16年前
投稿: 19
Topic starter  

追加、補足

1.レジストリ登録するバッチをネットワークで全端末に一括コピー
  スタートアップにバッチへのショートカットも同時に作成
2.全端末の再起動
3.ネットワーク経由で全端末のバッチ、ショットーカット登録を一括削除
4.全端末の再起動

※管理端末から全端末について一括再起動する仕組みは既にあります。
 


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました