お金をかけずにサーバーの勉強をしよう

サーバープログラムってどういうものなのでしょう

2023年5月24日

メニューへ戻る

サーバープログラムってどういうものか。

もう本当に根っこの根っこなんですけど、サーバーってのはサーバープログラムを動かしているからサーバーなんであって、サーバー用の機械だからサーバーなんじゃありません。

じゃ、そのサーバープログラムってのは何者かって話なんですけど、これはネットワークの通信とは切っても切り離せない関係にあります。

ということで私が「初心者にどうやって教えようか」って考えてきて頭の中に描いた絵をご披露しようという寸法です。


いきなりですが、私に子供が 2人いて、そこに 2人ずつの孫がいるとしますわ。

孫ってね可愛いって言いますね。
孫のなかった人が他人に孫自慢されるとムカつくそうですが、実際に自分の孫が生まれるとそれはもう可愛いそうですよ。
私の知り合いからも、自慢の孫が世界一可愛いと自慢されたことがありますし。

自分もきっとそうなるだろうけど、結婚する気あるのかなアイツ…という危機感を感じております。

私の過程の事情はどうでも良いですが、上の仮定の家庭(なんつって)の関係をテーブルにしてみます。

おじいちゃん(私)長女Aくん(男)(24)
Bちゃん(女)(20)
長男Cちゃん(女)(10)
Dくん(男)(5)

でもって、長女・長男それぞれの家に自家製の野菜をダンボールに入れて送ろうと思います。

ダンボールの中には、それぞれの孫宛てに封書(&お小遣い)を入れておきます。
荷物送付 1


封書の中の手紙はこんな風。

Aくんへ
元気ですか。
いつまでも雇われをやってないでそろそろ起業しなさい。
おじいちゃんが連帯保証人になってあげます。
当面のお小遣いとして 2千万円入れておきますので資本金にでも使って下さい。
ママと税務署には内緒だよ。

Bちゃんへ
元気ですか。
大学は楽しいですか?
自動車免許を取ったらおじいちゃんの家にドライブがてら遊びにきてね。
自動車購入代金として 500万円入れておきますけど足りないかも。ゴメンね。
ママには内緒だよ。

Cちゃんへ
元気かな?
学校でも塾でもお勉強ばっかりで大変だよね。
この前ゲーミング PCが欲しいって言ってたよね。
50万円入れておきますので、最新の NVIDIAの入った BTOパソコンでも買ってね。
お父さんには内緒だよ。

Dくんへ
げんきにようちえんにいってますか?
おじいちゃんもげんきです。 Dちゃんのためにじゅにあにーさをつくりました。たのしみにしててね。
おとうさんにはないしょだよ。おじいちゃんとのやくそくだ。

※我が家での場合を想定した仮定となっております。


この荷物を送る図です。
荷物送付 2
荷物を送る時の住所を見ているのは郵便局で、荷物を開梱して中に入っている封書の宛先を確認するのは長女と長男です。
郵便局は中に何が入っているかなんて見ちゃいません。

届いたらばお孫ちゃん達は大喜びして、私の指示に従って行動するでしょう。


ネットワーク・サーバーOS・サーバープログラムの関係における仕組みもこれと同じです。
それぞれのお孫ちゃんがサーバープログラムに位置する感じです。
サーバプログラム図

荷物の箱に相当する IPパケットに書いてある宛先の IPアドレスを持つ OSまで届けるのはネットワーク機器の仕事です。

届いた IPパケットを開梱して封書に相当する TCPパケットを取り出し、ポート番号に従ってサーバープログラムに届けるのは OSの仕事です。

届いた TCPパケットを開封して手紙に相当する中味を読んでどうするかはサーバープログラムの仕事です。

ポート番号は OSが 0〜65535まで持っていて、サーバープログラムはこれを必要な分だけ OSから借りている格好になります。
名の知れたサーバープログラムがどの番号を使うかはほぼスタンダードとして決まってしまっていて、勝手に同じ番号にするのは混乱の元なのでやめましょう。

なお、0〜1024は「ハイポート」と言って OSの管理権限を持つユーザーが実行するサーバープログラムでしか利用できません。
(よって超有名所のサーバープログラムばかりが名を連ねています)


上の手紙の中味ではそれぞれの相手の年齢や生活に沿って言葉遣いを変えていますが、言葉遣いの差異が httpなどのアプリケーションプロトコルってところです。

本当は IPパケットを入れる「イーサーネットフレーム」っていう通信に必須の仕組みがあるんですが、ここでは割愛しています。


サーバー「プログラム」の説明ではなくて、通信の説明になってしまっているようですが、Excelみたいに単体で動くプログラムとサーバープログラムの差異という点では、このようにサーバープログラムはネットワークから入ってくるデータを待っているプログラムと言えますので、このような説明にならざるを得ないと思います。

伝わったかな?


開発フレームワークを使わずにネットワークプログラムを作るタイプの本を 1つやると一気に理解が深まりますね。

私はこれをやりましたが、凄く良かったです。

でもって、これは宝物なのです。