<ネスペちゃん01について>
ネスペちゃん01はネットワークの用語やセキュリテ
ィのお話について、「難しい」イメージから「意外と
面白い」に変えるのが目的です。そのため、あえて大
胆なたとえや、表現を使っています。
そんなわけで、結果的に、緻密さを犠牲にする部分が
あります。詳しく知りたい方は、さらに勉強しよう!
ってことで。よろしくお願いします。(にしの)
----
(前回までのお話)
TCPの働きは3つ。
(1)通信路を確立すること
(2)データを送信すること
(3)エラーがあれば、再送すること
前回は(1)の手順として「3WAYハンドシェイ
ク」について説明した。返答に応答を加えることで、
相互通信の許可の手数を減らすことができたにゃ。
復習すると
1 (クライアント)サーバさん、僕通信したいな。
2 (サーバ)いいけど、僕からも通信していい?
3 (クライアント)もちろん!オッケーだよ!
これ、ちょっと難しくやれば
1 SYN
2 SYN+ACK
3 ACK
ってなるのにゃ。
なんか、教科書でみたやつだ。
今回は前回のも踏まえつつ、(2)と(3)について
触れたいと思うにゃー。
え?3WAYハンドシェイクはもういいんじゃ?
いやいや、実は3WAYでデータのやり取りの確認作
業もやったりしてるにゃん。
データを送る
データは別に何Gでもまとめて送ればいいけど、もし
も送信途中で失敗すると、もう一度送り直さなければ
ならないにゃ。
地獄だよなー。
なので、データはセグメントという単位に分割される。
え?パケットじゃなくて?
お、鋭い! TCPではパケットのことをセグメント
と呼ぶ。ちなみに、パケットはIPでの呼び方。その
ほかにもフレームだとかデータグラムとかいう言い方
もするけど、ほとんど意味は一緒だから考えなくてい
い。
わっかりました。
分割される最大のセグメントの大きさをMSS(マック
ス・セグメント・サイズ)というにゃ。
セグメントを送信するときには先程の3WAYハンドシ
ェイクの考え方を使うにゃん。
たとえば、こうなる。
1 シーケンス番号としてランダムな数字を送信(たとえば10)
2 応答に1をプラスして返す(11)
3 シーケンス番号(11)にデータ(50バイト)を付けて送信
4 届いた印としてシーケンス番号にデータ量をプラスした値を返す(61)
5 シーケンス番号(61)にデータ(100バイト)を付けて送信
6 届いた印としてシーケンス番号にデータ量をプラスした値を返す(161)
これを送信側受信側双方向からやる。
たとえば、4のときにシーケンス番号が返ってこないと?
送信失敗したと考えて、再送する。
たとえば4のとき51とかいう数字が返ってくると?
送信失敗したと考えて、再送する。
じゃ、じゃあ62なら?
それも送信失敗と考える。TCPのこの送信話はまた次回も続く。
続くのかぃ。