[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

3ウェイハンドシェイク

pointこの用語のポイント

point接続するときの手順だよ

point「データを送っていい?」「いいよー!こっちからも送っていい?」「いいよー!」な手順を踏むよ

pointTCPで採用されているやり方だよ

スポンサーリンク

簡単に書くよ

3ウェイハンドシェイクとは

他のコンピュータと接続するときのやり方のひとつ
であり

「TCP」と呼ばれるやり方で通信するときに使われる接続のやり方
であり

「こっちから何か送っても、いいかなー?」(質問)「いいともー!こっちからも送って、いいかなー?」(返事&質問)「いいともー!バッチ来いや~!」(返事)の3回のやり取りをして接続するやり方
です。

image piyo

詳しく書くよ

データを送るよ」「OK。こっちも送るよ」「OK」の3回のやり取りを経て接続を確立するのが「3ウェイハンドシェイク」です。
3回のやり取り(3ウェイ)を経て握手(ハンドシェイク)するイメージです。

……と、いきなり言われても分からないかもしれませんね。
大丈夫です。
順番に説明していきます。

例えば、そうですね。

ピヨ太君が、ぼーっとしていました。

3ウェイハンドシェイク

ピヨ子さんも、ぼーっとしていました。

3ウェイハンドシェイク2

ピヨ太君はピヨ子さんとお話がしたいです。
そこで、ピヨ子さんに「ちょっと喋ってもいいかな?」と聞きました。

3ウェイハンドシェイク3

ピヨ子さんは「いいわよー」と答えて、ピヨ太君の話を聞く態勢に入りました。
ついでに「私も喋っていいかしら?」と聞きました。

ピヨ太君のつまらない話を聞いてるだけでは眠くなりますからね。
自分も喋りたいと思ったのでしょう。

3ウェイハンドシェイク4

ピヨ太君は「いいよー」と答えました。
そして、ピヨ子さんの話を聞く態勢に入りました。

3ウェイハンドシェイク5

これでピヨ太君もピヨ子さんも相手から喋る許可をもらいました。
お互いの話を聞く態勢も整っています。
楽しく、ぺちゃくちゃ、お喋りできるでしょう。

3ウェイハンドシェイク6

このようなやり方で接続を確立するのが3ウェイハンドシェイクです。

ピヨ太君とピヨ子さんの間では

1.「ちょっと喋ってもいいかな?」
2.「いいわよー」「私も喋ってもいいかしら?」
3.「いいよー」


の3回のやり取りが行われました。
これが「3ウェイ」です。

3回のやり取りを経て、お互いが喋ったり聞いたりできる状態になりました。
「お互いが喋ったり聞いたりできる」は言い換えると「通信できる」です。
あるいは「接続が確立した」状態とも言えます。
これが「ハンドシェイク」に相当します。

合体させると「3ウェイハンドシェイク」です。
3回のやり取りを経て、通信できる状態を作りました。

実際のところ、これだけです。
難しくないでしょ?

それでは、ちょっとだけ応用編です。
実際のコンピュータの世界のやり取りに置き換えて見てみましょう。

コンピュータ同士のやり取りでは意思疎通にパケットを使います。
パケットは「通信用に細切れにしたデータ」ね。
よく分からない人は「通信中のデータ」くらいの理解でもかまいません。

3ウェイハンドシェイク7

やり取りするパケットの中には「SYN」と呼ばれる目印と「ACK」と呼ばれる目印がくっついています。
この目印が大事です。

SYNは「送っていい?」な質問用の目印だと思ってください。
SYNが「1」のパケットは「送っていい?」な質問のパケットです。

ACKは「いいよー」な返事の目印だと思ってください。
ACKが「1」のパケットは「いいよー」な返事のパケットです。

以上を踏まえて、ピヨ太コンピュータ(ピヨ太PC)がピヨ子コンピュータ(ピヨ子PC)にに接続するまでの流れを見ていきましょう。

まずはピヨ太PCの出番です。

ピヨ太PCピヨ子PCに対して「送っていい?」な質問をします。
具体的には「SYN=1、ACK=0」になっているパケットを送りました。

3ウェイハンドシェイク8

次はピヨ子PCの出番です。

質問を受け取ったピヨ子PCピヨ太PCに対して「いいよー」な返事をします。
「SYN=0、ACK=1」になっているパケットを送ることにしました。

あと「私も送っていい?」な質問をします。
「SYN=1、ACK=0」になっているパケットを送ることにしました。

実際に送ろうとしたピヨ子PCは気付きました。
「SYN=0、ACK=1」な返事と「SYN=1、ACK=0」な質問は合体させられそうです。
「SYN=1、ACK=1」にすれば、返事と質問が一緒に伝わるはずです。

2回も送るのは面倒くさいです。
合体して1回で送ってしまいましょう。

ピヨ子PCピヨ太PCに対して「SYN=1、ACK=1」になっているパケットを送りました。
「いいよー」な返事と「私も送っていい?」な質問を一度に送ったのです。

3ウェイハンドシェイク9

最後は、またピヨ太PCの出番です。

質問を受け取ったピヨ太PCピヨ子PCに対して「いいよー」な返事をします。
「SYN=0、ACK=1」になっているパケットを送りました。

3ウェイハンドシェイク10

これで2人とも相手から「送っていいよー」な許可をもらいました。
相手から送られてきたデータを受け取る心の準備もバッチリです。

この状態は「接続が確立された状態」と言えそうです。
ピヨ太PCピヨ子PCは通信できるでしょう。

3ウェイハンドシェイク11

めでたしめでたし。

実際には、もう少し複雑ですけどね。
取りあえずは、これが基本的な考え方です。

1.送っていい?
2.いいよー!送っていい?
3.いいよー!


の3回のやり取りを経て、接続を確立します。
その際にやり取りするデータは

1.「SYN=1、ACK=0」のパケット
2.「SYN=1、ACK=1」のパケット
3.「SYN=0、ACK=1」のパケット


です。

なお、3ウェイハンドシェイクはTCPの話で、よく出てきます。
TCPでは、3ウェイハンドシェイクで接続するからです。
TCPの詳細については用語「TCP」の説明を、ご覧ください。

image piyo2

一言でまとめるよ

まぁ「3ウェイハンドシェイク」って単語が出てきたら「『送っていい?』『いいよー。こっちも送っていい?』『いいよー』な手順を踏む接続のやり方なんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク