思わず、あれれ?って思ってしまう。知ってるのに実
はあまり解らないかもしれない。プロでもちょっとは
間違えるかもしれない?ネスペの知識をおさらいする。
超ベリベリ最高な連載「ネスペのあれれ?」
今回でとりあえず、最終回とさせていただきます。
試験も、近いのでね(笑 好評でしたので、来秋にで
ももう一度、帰ってきたいのですが。読者様全員が合
格してしまえば、実現しませんので。ぜひその方向で
お願いしたいところです。
お題は「3WAYハンドシェイク」です。
それでは、最後のお知らせです。
イケてる作者にしのAFによるイケてる電子書籍「ネ
スペちゃん29」「セスペちゃん29」なうおんせー
る!ネスペ・セスペを受検される皆様読んで!(切望)
ちなみに、インスタ映えはぜんぜんしないです。よろ
しくお願いします。
いまさら!という方もいらっしゃるかと思いますが。
このあいだ、twitterで「さて、2wayじゃなぜダメなん
でしょうか?」みたいなのを見つけて、「あ!これい
いですね!右も左もいいですね!」の波が止まらなく
なり、テーマにした次第です。
そうですよね、なぜ3wayじゃなきゃだめなのでしょう
か。
というわけで、ざっくり説明させてください。
解説しよう
TCPは、相手の応答があってはじめて通信を開始する
プロトコルです。よって、データを送信する前にコネ
クションを確立させます。そのやりとりが3WAYハン
ドシェイクです。
(A)接続編
AとBのあいだでコネクションを確立することにしま
す。まずは、
(1)AからBへ
SYN(接続を開始していいですか?)のメッセージを
送ります。このときフラグは
SYN=1 ACK=0 シーケンスNO=0
となります。
※確認応答番号はこの段階では存在しません。
(2)BからAへ
SYN+ACK(いいですよ!こちらからもいい?)
のメッセージを送ります。このときフラグは
SYN=1 ACK=1 シーケンスNO=0 確認応答番号=1
となります。
ちなみに、確認応答番号は
「データサイズ+シーケンス番号」です。
(3)ふたたびAからBへ
ACK(もちろんどうぞ!)と返します。
フラグは
SYN=0 ACK=1 シーケンスNO=1 確認応答番号=1
このようになります。
たとえば、もし2WAYでやめていたとしたら。BはA
からの返事をずーっと待ち続けることになります。
「ピザ注文していい?」
「いいよ!届けていい?」
「・・・・」
これではピザ屋は電話を切れないのです。
ピザ屋は他の注文を受け付けることができません。
これをSYN FLOOD攻撃っていいましたよね。
(B)データのやりとり編
ここでは、実際の通信の様子をフラグだけ見てみます。
データは全て100byteだとしましょう。
(4)AからB 100byte送信するよ!
SYN=0 ACK=1 シーケンスNO=1
確認応答番号=1
(5)BからA こっちも100byte送信するよ!
SYN=0 ACK=1 シーケンスNO=1
確認応答番号=101
(6)AからB 受け取った!100byte送信するよ!
SYN=0 ACK=1 シーケンスNO=101
確認応答番号=201
(7)BからA 受け取った!100byte送信するよ!
SYN=0 ACK=1 シーケンスNO=201
確認応答番号=201
コネクションを確立後はこんな感じになります。
シーケンス番号はコネクション確立時のものを引き続
き使います。
確認応答番号はシーケンス番号に受け取ったデータサ
イズを足していきます。
ここでは書ききれないのですが、切断の際は4WAYハ
ンドシェイクになります。
※AからFIN BからACK
BからFIN AからACK
というわけで、15回に渡る連載ありがとうございま
した。とりあえずは今回でおしまいですが、皆さんの
声があれば、来秋にでももう一度戻ってきます!
これを読んでいただいた皆さまが、全員合格しますよ
うに!お祈りいたします!(終)