分かりやす〜い
コンピュータ技術情報

TOPに戻る
▼Network
ポートスキャン
┣ 通信開始
┣ スリーウェイ・
┃ ハンドシェイク

┣ ポートNo.
┣ RST
┣ 実際に行ってみる
┣ SYNスキャン
┣ FINスキャン
┣ Nortonのログ
┗ 危険性

Copyright(C) 2001-2003.ugpop. All rights reserved.




■デジタル用語辞典:
■ スリーウェイ・ハンドシェイク ■

前回はWEBページを見る時にサーバーとクライアント間でやり
取りされる文字列について説明しました。

クライアントパソコンがサーバーに対して「WEBページ見せて。」
という意味の文字列「GET / HTTP/1.0」を送信し、その後サー
バーからWEBページのデータが送られてくるのでした。

この様に、Yahoo!等のWEBページを見る時には、クライアント
とサーバーの間で文字列のやり取りが行われます。

ところでサーバーはいきなり「GET / HTTP1.0/」等の文字列を
送られてきて対応する事が出来るのでしょうか?


答えは「NO」です。

いきなりそのような文字列を送られてきてもサーバーは対応す
ることが出来ません。

何故対応できないかというと、「GET / HTTP1.0/」のような文
字列を受け入れる準備が出来ていないからです。
「文字列を受け入れる準備」というのは、具体的には文字列を
処理するプログラムを動作させたり、文字列を格納するバッフ
ァを確保したり、という事です。

では、サーバーに「文字列を受け入れる準備」をしてもらうに
はどうすれば良いのでしょうか?

それには、クライアントパソコン(依頼する側)からサーバー
(サービスする側)に対して「準備は良いですか?」と確認を
してあげる必要があります。

┌──────┐「準備は良いですか?」   ┌─────┐
│クライアント├─────────────→│WEB    │
│パソコン  │              │サ−バ− │
└──────┘              └─────┘
IE等でWEBページ             YAHOO等のWEBページを作成、
を見たい人               管理している会社や個人


上の図で、クライアントからサーバーに送出されているデータ
の事を「SYN」といいます。

「SYN」というのは、クライアントとサーバーが協調(Synch
ronize)して動作する為に送られるデータです。

サーバーはこの確認要求を受け取ると、「準備は良いですよ。
あなたの方も準備良いですか?」と返事を返してきてくれます。

┌──────┐「準備は良いですよ」    ┌─────┐
│クライアント│←─────────────┤WEB    │
│パソコン  │「あなたも準備良いですか?」│サ−バ− │
└──────┘              └─────┘
IE等でWEBページ             YAHOO等のWEBページを作成、
を見たい人               管理している会社や個人


上の図のサーバーからクライアントに送出されているデータで、
「準備は良いですよ」と言っている部分を「ACK」といいま
す。

「ACK」というのは、応答(Acknowledgement)という意味で
す。
クライアントからの準備確認に対して返事を返してあげている
のです。

また、「あなたも準備良いですか?」と言っている部分があり
ます。

これは、「サーバーからクライアントに対しての」準備確認の
要求です。

これも先ほどと同じ「SYN」といいます。

サーバーからクライアントに対して送られている「ACK」と
「SYN」ですが、意味が2つあるからと言って、データが2
回送られる事はなく、1つのデータとしてまとめて1回で送ら
れます。

クライアント側はこのサーバーからの応答(ACK)を受けて、
サーバーの準備が出来ているのだという事を認識します。
それとともに、自分は準備出来てるのかと問い合わせ(SYN)
を受けたわけですから、その返事を返してあげます。

┌──────┐「準備は良いですよ」    ┌─────┐
│クライアント├─────────────→│WEB    │
│パソコン  │              │サ−バ− │
└──────┘              └─────┘
IE等でWEBページ             YAHOO等のWEBページを作成、
を見たい人               管理している会社や個人


上の図で、クライアントからサーバーに送出されているデータ
の事を「ACK」といいます。

「ACK」というのは、応答(Acknowledgement)という意味で
す。
サーバーからの準備確認に対して返事を返してあげているので
す。

サーバーはこの応答を受けてクライアントの準備が出来ている
のだという事を認識します。

この一連のやりとりを見ていると、クライアントとサーバーが
お互いに「協調して動作しましょうね。」と言い合っているの
が分かります。

サーバーはこのやりとりを経て、文字列を処理する為のプログ
ラムを動作させたり、文字列を格納するバッファを確保したり
します。

つまりこれにより実際にデータを送受信する為の準備が整った
という事になるので、「呼が確立された」と言う事になります。


以上の一連のやり取りをまとめます。


1.クライアントからサーバーへ準備の確認(SYN)
┌──────┐「準備は良いですか?」   ┌─────┐
│クライアント├─────────────→│WEB    │
│パソコン  │              │サ−バ− │
└──────┘              └─────┘
IE等でWEBページ             YAHOO等のWEBページを作成、
を見たい人               管理している会社や個人


2.サーバーからクライアントへ応答&クライアントの準備の
  確認(ACK/SYN)
┌──────┐「準備は良いですよ」    ┌─────┐
│クライアント│←─────────────┤WEB    │
│パソコン  │「あなたも準備良いですか?」│サ−バ− │
└──────┘              └─────┘
IE等でWEBページ             YAHOO等のWEBページを作成、
を見たい人               管理している会社や個人


3.クライアントからサーバーへ応答(ACK)
┌──────┐「準備は良いですよ」    ┌─────┐
│クライアント├─────────────→│WEB    │
│パソコン  │              │サ−バ− │
└──────┘              └─────┘
IE等でWEBページ             YAHOO等のWEBページを作成、
を見たい人               管理している会社や個人

3回データのやり取りが行なわれています。
このサーバーとクライアントのやり取りの事を、まとめて

「スリーウェイ・ハンドシェイク」(3 way handshake)

と呼びます。

さて、この「スリーウェイ・ハンドシェイク」ですが、WEBペ
ージを見る為だけに行なわれるわけではありません。
実は他のサービスにおいても、このやり取りが行なわれていま
す。
メールを送る時にも、受信する時にも、FTPでファイル転送を
行なう時にも。
大方のサービスにおいて、です。

さて、ここでサーバーに注目してみましょう。

例えば、1台のサーバー上でメールサービスとWEBサービスを
2つ行なっているとします。
(WEBサービスというと、.NETのXML WEBサービスを思い浮かべ
る方がいらっしゃると思いますが、ここでは単に「WEBページ
を見る為のサービス」という意味で使っています。)

以下にその図を示します。

┌──────────────────┐
│       サーバー       │
│┌───────┐┌───────┐│
││メールサービス││WEBサービス││
│└───────┘└───────┘│
│                  │
└──────────────────┘

ここに先ほどの、スリーウェイ・ハンドシェイクを行なう為の
データが来たとします。

┌──────────────────┐
│       サーバー       │
│┌───────┐┌───────┐│
││メールサービス││WEBサービス││
│└───────┘└───────┘│
│             ↑    │
└─────────────┼────┘
              │
──────────────┘
 SYNデータ


このSYNデータですが、メールとWEBの2つのサービスが
行なわれているにも関わらず、WEBサービスの方へ届いてい
ます。

何故WEBサービスの方へ届いたのでしょうか?

大体想像が付く方もいらっしゃるかと思いますが、答えは次回
に行ないます。



▲このページの上へ

▲このページの上へ

←前に戻る    ▲このページの上へ    続きを読む→