
■ ポートNo. ■
前回はクライアントがサーバーに接続する時にはスリーウェイ
・ハンドシェイクが行なわれる事を説明しました。
スリーウェイ・ハンドシェイクとは、以下の3つのやり取りの
事をいうのでした。
1.クライアントからサーバーへ準備の確認(SYN)
2.サーバーからクライアントへ応答&クライアントの準備の
確認(ACK/SYN)
3.クライアントからサーバーへ応答(ACK)
今回は1台のサーバー上で複数のサービスが行なわれていた場
合にどのようにしてサービスが行なわれるのか説明を行ないま
す。
例として1台のサーバー上でメールとWEBの2つのサービス
が動作していた場合の図を示します。
┌──────────────────┐
│ サーバー │
│┌───────┐┌───────┐│
││メールサービス││WEBサービス││
│└───────┘└───────┘│
│ │
└──────────────────┘
ここにスリーウェイ・ハンドシェイクの1回目のデータが来た
とします。
┌──────────────────┐
│ サーバー │
│┌───────┐┌───────┐│
││メールサービス││WEBサービス││
│└───────┘└───────┘│
│ ↑ │
└─────────────┼────┘
│
────→────→────┘
SYNデータ
このSYNデータですが、メールとWEBの2つのサービスが
行なわれているのに、何故WEBサービスの方へ届いたのでし
ょうか?
物理的なデータの入り口は1つしかないわけですから、誰かが
このデータをどちらのサービスに渡すかを判断してあげなけれ
ばなりません。
実はこの判断はOS(オペレーティングシステム)により行わ
れています。
そして、その際の判断材料として「ポートNo」というものが
使用されます。
「ポートNo」はクライアントパソコンがWEBサービスの要
求を出す時にデータの中に設定するものです。
以下に「ポートNo」によりOSがデータを振り分ける図を示
します。
┌──────────────────┐
│ サーバー │
│┌───────┐┌───────┐│
││メールサービス││WEBサービス││
│└───────┘└───────┘│
│ ↑ │
│┌────────────┼───┐│
││ OS ┌───┘ ││
││PortNo80はこっち│ ││
│└────────┼───────┘│
└─────────┼────────┘
│
───→────→─┘
SYNデータ
Port No:80
「ポートNo」という言葉の響きから、ハードウェアで制御が
行なわれているのではないかと思っていた方も多いのではない
でしょうか。
実は全くそんなことは無く、ポートNoはソフトウェアにより
制御が行なわれているのです。
さて、スリーウェイ・ハンドシェイクの1回目が行なわれて、
無事にSYNデータがWEBサービスに届きました。
WEBサービスは応答(ACK)を返すとともに、クライアン
トパソコンが正常に動作しているかを確認する為のデータ(S
YN)を送出します。
┌──────────────────┐
│ サーバー │
│┌───────┐┌───────┐│
││メールサービス││WEBサービス││
│└───────┘└───┬───┘│
│ ↓ │
│┌────────────┼───┐│
││ OS ┌───┘ ││
││ ↓ ││
│└────────┼───────┘│
└─────────┼────────┘
│
←───←───←─┘
SYN/ACKデータ
あとは、クライアントからの応答を受信すればスリーウェイ・
ハンドシェイクが完了します。
┌──────────────────┐
│ サーバー │
│┌───────┐┌───────┐│
││メールサービス││WEBサービス││
│└───────┘└───────┘│
│ ↑ │
│┌────────────┼───┐│
││ OS ┌───┘ ││
││PortNo80はこっち│ ││
│└────────┼───────┘│
└─────────┼────────┘
│
───→────→─┘
ACKデータ
Port No:80
以上は、WEBサービスが正常に稼動していた場合のやりとり
です。
それでは、もしWEBサービスが稼動していなかったらどのよ
うな動きをするのでしょうか?
答えは次回に。