SYN+ACKパケット
SYNパケットとACKパケットが合体したパケットだよ
「いいよー」な返事と「送っていい?」な質問が混ざっているよ
3ウェイハンドシェイクの話で出てくるよ
簡単に書くよ
SYN+ACKパケット(読:シン+アックパケット 英:SYN+ACK packet)とは
「3ウェイハンドシェイク」と呼ばれるやり方で接続を確立するときにやり取りされるデータのひとつ
であり
「いいよー」な返事に相当するデータと「こっちからも送って、いいかなー?」な質問に相当するデータが合体したデータ
です。
ちょっと小難しいけど正確に書くと
SYNパケットとACKパケットが合体したパケット
(通信用に細切れにされたデータ)のこと
であり
SYNフラグとACKフラグに1がセットされたパケットのこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・パケット
・3ウェイハンドシェイク
・SYNパケット
・ACKパケット
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
パケットは「通信用に細切れにしたデータ」です。
突然ですが、フランスパンを食べるところを想像してみてください。
一本丸々咥えたら息が詰まりますよね?
ですから、フランスパンを食べるときは、ちぎって少しずつ食べます。
通信も同じです。
一度にまとめて送ろうとすると、線が詰まってしまいます。
いえ、もしかしたら詰まらないかもしれませんが、なんか大変そうです。
そこで、通信するときは一旦データを細かく分割してから送ります。
細切れになって送られたデータは受け取り側で元の形に復元されます。
このときの
送るために細切れにしたデータ
がパケットです。
3ウェイハンドシェイクは「送っていい?」「いいよー。こっちも送っていい?」「いいよー」な手順を踏む接続のやり方です。
例えば、ピヨ太コンピュータ(ピヨ太PC)がピヨ子コンピュータ(ピヨ子PC)に接続するとしましょう。
まずはピヨ太PCがピヨ子PCに対して「送っていい?」な質問パケットを送ります。
それに対して、ピヨ子PCはピヨ太PCに「いいわよー」な返事パケットと「私も送っていい?」な質問パケットを合体させたパケットを返します。
それに対して、ピヨ太PCはピヨ子PCに「いいよー」な返事パケットを送ります。
これで2人とも相手から「送っていいよー」な許可をもらいました。
相手から送られてきたデータを受け取る心の準備もバッチリです。
この状態は「接続が確立された状態」と言えます。
このような
1.「送っていい?」な質問パケットを送る
2.「いいわよー」な返事パケット+「送っていい?」な質問パケットを送る
3.「いいよー」な返事パケットを送る
の3回のやり取りを経て接続を確立させるのが3ウェイハンドシェイクです。
この3ウェイハンドシェイクの流れでやり取りされた
1.「送っていい?」な質問パケット
2.「いいわよー」な返事パケット+「送っていい?」な質問パケット
3.「いいよー」な返事パケット
のうち
1.「送っていい?」な質問パケット
を「SYNパケット」と言います。
2を飛ばしますが
3.「いいよー」な返事パケット
を「ACKパケット」と言います。
以上を踏まえて
2.「いいわよー」な返事パケット+「送っていい?」な質問パケット
が「SYN+ACKパケット」です。
SYNパケットとACKパケットを合体させたパケットだから「SYN+ACK」です。
まとめて書くと
1.「送っていい?」な質問パケット(SYNパケット)
2.「いいわよー」な返事パケット+「送っていい?」な質問パケット(SYN+ACKパケット)
3.「いいよー」な返事パケット(ACKパケット)
となります。
以上で、ざっくりとした説明は終わりです。
なんとなく分かれば満足な人は、ここから先を読む必要は ありません。
次は、ここまでの説明と同じ内容を、もう少し細かく説明してみます。
先ほど同様、ピヨ太PCがピヨ子PCに接続するとしましょう。
やり方は3ウェイハンドシェイクです。
まずはピヨ太PCがピヨ子PCに対して「送っていい?」な質問パケットを送ります。
このとき送られるのは「SYN=1、ACK=0」のパケットです。
SYNは「送っていい?」な質問用の目印だと思ってください。
SYNが「1」のパケットは「送っていい?」な質問のパケットです。
ACKは「いいよー」な返事の目印だと思ってください。
ACKが「1」のパケットは「いいよー」な返事のパケットです。
次にピヨ子PCはピヨ太PCに対して「いいわよー」な返事パケットと「私も送っていい?」な質問パケットを合体させたパケットを返します。
「SYN=1、ACK=1」のパケットです。
最後にピヨ太PCからピヨ子PCに対して「いいよー」な返事パケットが送られます。
「SYN=0、ACK=1」のパケットです。
これで接続が確立されました。
やり取りされたパケットは
1.「SYN=1、ACK=0」のパケット
2.「SYN=1、ACK=1」のパケット
3.「SYN=0、ACK=1」のパケット
です。
これが
1.「送っていい?」な質問パケット
2.「いいわよー」な返事パケット+「送っていい?」な質問パケット
3.「いいよー」な返事パケット
に相当します。
それぞれの呼び方が
1.SYNパケット
2.SYN+ACKパケット
3.ACKパケット
です。
気が向いたら、全部まとめて覚えてあげてください。
一言でまとめるよ
まぁ「SYN+ACKパケット」って単語が出てきたら「『いいよー』な返事パケット
(通信用に細切れにされたデータ)と『送っていい?』な質問パケットが合体したパケットなんだな~」と お考えください。
おまけ
■訳してみるよ
「SYN」は多分「synchronize(シンクロナイズ)」の略です。
「synchronize(シンクロナイズ)」の意味は「同期する」とか「同時に起こる」とかです。
「ACK」は「acknowledgment(アクナレッジメント)」の省略表現だそうです。
「acknowledgment(アクナレッジメント)」の意味は「了承」とか「承認」とか「認知」とかです。
「packet(パケット)」の意味は「小包」とかです。
何となく くっつけると
同期用+了承の小包
となります。
小分けにしたデータを小包にして相手に送りつけるイメージですかね。
■検索してみる?






