返信

まず、(1)から行きましょうか。

> ・サーバOSが起動したとき
> ・サービスを手動で開始したとき
> など...

という理解で良いでしょう。
サーバプログラムを起動する方法はいろいろありますが、
どの方法で起動してもサーバプログラムの動作は一緒ですから、
どんな格好で起動しても同じように考えていいと思います。

次に(2)の方ですが、
そもそも『サーバ』っていうのは、
サーバプログラムを動かすからサーバとして動作しているだけであって、
OSやハードウェアがサーバとして動作しているわけではありません。
サーバ向けに最適化されたOSとかハードウェアというのはありますけど、
基本的な仕組みの面から見たときには、
OSやハードウェアには、サーバもクライアントも無い訳です。
だから、クライアントパソコンでサーバプログラムを動かして、
サーバとして使うこともできます。(性能面の問題はあるかもしれませんが)
というわけなので、サーバプログラムの動きはどうなのか、
クライアントプログラムを動きはどうなのか、
という視点で見た方がいいですね。

それで、ポート番号を割り当てる件ですが、
ポート番号そのものにはサーバとクライアントの区別はありません。
ポート番号を割り当てるソケットには、
接続を待ち受ける側(recipient)なのか、
接続しに行く側(initiator)なのか区別が必要です。
接続を待つか、接続しに行くか
という動作の違いを制御する必要があるからです。
しかし、ポート番号の方は、
本来、ソケットを識別するための単なる番号に過ぎないので、
サーバもクライアントもありません。
個々のソケットを識別できさえすれば、何番でもいいんです。

ただし、OSによっては特定のポート番号(例えば1024番以下)を
使う際には特権が必要になる場合があります。
(特権についてはOSの解説を参照してください。)
その場合は、プログラムに特権ポート番号を使う権限を与えないといけません。
この特権という考え方自身は、本来、
サーバとかクライアントとかとは関係ないのですが、
サーバプログラムには特権を与えて特権ポート番号を使うという例が昔は多かったので、
特権ポート番号はサーバ用というやり方が慣習化していました。
しかし、今ではサーバプログラムの種類が増えてしまい、
1024番には収まらなくなってしまったので、
1024番以下はサーバ用という慣習は崩れています。

で、この慣習から1024番以下のポート番号をwell-knownポートと呼ぶ場合もありますが、
本来のwell-knownの意味は少し違います。
well-knownというのは、皆が知っているということです。
つまり、サーバ側のポート番号は皆が知らないといけませんから、
サーバ側で使うポート番号を登録制にして、
その登録状況を見ることで皆にポート番号がわかるようにするという意味です。
これが本来のwell-knownの考え方です。
こちらは人間の制度というかルールの問題であって、
先ほどのOSの特権のような、機械側の機能や制約に関係するものではありません。

<code>Only

  • 使用できるHTMLタグ: <code>
  • 文字で図を描く場合に<code>と</code>で囲んでください
画像認証
機械的なスパムメッセージ送信を防止するために画像認証を設けています。ご協力ください。
Image CAPTCHA
Enter the characters shown in the image.