まず、(1)から行きましょうか。
> ・サーバOSが起動したとき > ・サービスを手動で開始したとき > など...
という理解で良いでしょう。 サーバプログラムを起動する方法はいろいろありますが、 どの方法で起動してもサーバプログラムの動作は一緒ですから、 どんな格好で起動しても同じように考えていいと思います。
次に(2)の方ですが、 そもそも『サーバ』っていうのは、 サーバプログラムを動かすからサーバとして動作しているだけであって、 OSやハードウェアがサーバとして動作しているわけではありません。 サーバ向けに最適化されたOSとかハードウェアというのはありますけど、 基本的な仕組みの面から見たときには、 OSやハードウェアには、サーバもクライアントも無い訳です。 だから、クライアントパソコンでサーバプログラムを動かして、 サーバとして使うこともできます。(性能面の問題はあるかもしれませんが) というわけなので、サーバプログラムの動きはどうなのか、 クライアントプログラムを動きはどうなのか、 という視点で見た方がいいですね。
それで、ポート番号を割り当てる件ですが、 ポート番号そのものにはサーバとクライアントの区別はありません。 ポート番号を割り当てるソケットには、 接続を待ち受ける側(recipient)なのか、 接続しに行く側(initiator)なのか区別が必要です。 接続を待つか、接続しに行くか という動作の違いを制御する必要があるからです。 しかし、ポート番号の方は、 本来、ソケットを識別するための単なる番号に過ぎないので、 サーバもクライアントもありません。 個々のソケットを識別できさえすれば、何番でもいいんです。
ただし、OSによっては特定のポート番号(例えば1024番以下)を 使う際には特権が必要になる場合があります。 (特権についてはOSの解説を参照してください。) その場合は、プログラムに特権ポート番号を使う権限を与えないといけません。 この特権という考え方自身は、本来、 サーバとかクライアントとかとは関係ないのですが、 サーバプログラムには特権を与えて特権ポート番号を使うという例が昔は多かったので、 特権ポート番号はサーバ用というやり方が慣習化していました。 しかし、今ではサーバプログラムの種類が増えてしまい、 1024番には収まらなくなってしまったので、 1024番以下はサーバ用という慣習は崩れています。
で、この慣習から1024番以下のポート番号をwell-knownポートと呼ぶ場合もありますが、 本来のwell-knownの意味は少し違います。 well-knownというのは、皆が知っているということです。 つまり、サーバ側のポート番号は皆が知らないといけませんから、 サーバ側で使うポート番号を登録制にして、 その登録状況を見ることで皆にポート番号がわかるようにするという意味です。 これが本来のwell-knownの考え方です。 こちらは人間の制度というかルールの問題であって、 先ほどのOSの特権のような、機械側の機能や制約に関係するものではありません。
More information about text formats
本来、ポート番号にサーバとクライアントの区別はない
まず、(1)から行きましょうか。
> ・サーバOSが起動したとき
> ・サービスを手動で開始したとき
> など...
という理解で良いでしょう。
サーバプログラムを起動する方法はいろいろありますが、
どの方法で起動してもサーバプログラムの動作は一緒ですから、
どんな格好で起動しても同じように考えていいと思います。
次に(2)の方ですが、
そもそも『サーバ』っていうのは、
サーバプログラムを動かすからサーバとして動作しているだけであって、
OSやハードウェアがサーバとして動作しているわけではありません。
サーバ向けに最適化されたOSとかハードウェアというのはありますけど、
基本的な仕組みの面から見たときには、
OSやハードウェアには、サーバもクライアントも無い訳です。
だから、クライアントパソコンでサーバプログラムを動かして、
サーバとして使うこともできます。(性能面の問題はあるかもしれませんが)
というわけなので、サーバプログラムの動きはどうなのか、
クライアントプログラムを動きはどうなのか、
という視点で見た方がいいですね。
それで、ポート番号を割り当てる件ですが、
ポート番号そのものにはサーバとクライアントの区別はありません。
ポート番号を割り当てるソケットには、
接続を待ち受ける側(recipient)なのか、
接続しに行く側(initiator)なのか区別が必要です。
接続を待つか、接続しに行くか
という動作の違いを制御する必要があるからです。
しかし、ポート番号の方は、
本来、ソケットを識別するための単なる番号に過ぎないので、
サーバもクライアントもありません。
個々のソケットを識別できさえすれば、何番でもいいんです。
ただし、OSによっては特定のポート番号(例えば1024番以下)を
使う際には特権が必要になる場合があります。
(特権についてはOSの解説を参照してください。)
その場合は、プログラムに特権ポート番号を使う権限を与えないといけません。
この特権という考え方自身は、本来、
サーバとかクライアントとかとは関係ないのですが、
サーバプログラムには特権を与えて特権ポート番号を使うという例が昔は多かったので、
特権ポート番号はサーバ用というやり方が慣習化していました。
しかし、今ではサーバプログラムの種類が増えてしまい、
1024番には収まらなくなってしまったので、
1024番以下はサーバ用という慣習は崩れています。
で、この慣習から1024番以下のポート番号をwell-knownポートと呼ぶ場合もありますが、
本来のwell-knownの意味は少し違います。
well-knownというのは、皆が知っているということです。
つまり、サーバ側のポート番号は皆が知らないといけませんから、
サーバ側で使うポート番号を登録制にして、
その登録状況を見ることで皆にポート番号がわかるようにするという意味です。
これが本来のwell-knownの考え方です。
こちらは人間の制度というかルールの問題であって、
先ほどのOSの特権のような、機械側の機能や制約に関係するものではありません。