連載:アニメーションで見るパケット君が住む町(10)
TCP課長は几帳面でしっかりもの!
綱野衛二
Roads to Node
2010/7/26
10-3 正しい順番で荷物をやりとり
さて、TCP課長のデスクをちょっと見せてもらいましょう。「配送箱」「受取箱」と梱包用の道具がありますね。
TCP課長「まず最初にやる仕事は、上のサービス事業部から渡された荷物を、運ぶサイズに分割すること。このサイズはイーサ配送君など当社の運送部門で使っている段ボールのサイズで決まる。さらに次は……」
えっと、まずそこまでで。
サービス事業部から受け取った荷物を、運送部門で使っている段ボールのサイズに合うように分割するんですね。分割した荷物のことは、分かりやすいようにここでは「ケース」と呼びましょう。ケースの順番が分からないと元に戻すことができませんので、このケースに付ける送付票にケースの番号を振っていきます。これが「荷物のケース番号」です。
パケット君「『次に受け取る荷物のケース番号』ってのもあるよね?」
それは荷物のやりとりの説明のときにお話します。ともかく、いくつかのケースに分割して、送付票を付けて、「配送箱」に入れていくのです。
図10-6 ケース番号 |
その配送箱に入っている順番に従ってパケット君がケースを取り出して、運ぶわけですね。
パケット君「それが届け先に届いたら、向こうのTCP課長の『受取箱』に順番に入るわけ」
なるほど。パケット君たちの動きを省いて考えると、送信側の配送箱から届け先の受取箱へケースが届く形になるわけですね。ではここで、送信側のTCP課長の仕事をもう一度まとめましょう。
- サービス事業部からの荷物をケースに分割する
- ケースの番号などを送付票に書き、ケースに張る
- 順番に配送箱に入れる
という順番になります。
一方で受け取った側のTCP課長はどうするかというと、
- 受信箱にあるケースをケース番号順に並べ直す
- 受け取ったケースのケース番号を確認し、次に受け取る(予定)のケース番号を「次に受け取るケース番号」に書いて、送付票を作る
- 送付票を付けたケースを送信元に送り返す
TCP課長「ポイントは、『次に受け取るケース番号』を書いた送付票を送り返すという点だ。これにより、送信元にどのケースまで届いたかが分かるわけだ。そして……」
そうです、送信側から見れば「どこまで届いたか」を受け取り側が伝えてくれることになります。それにより、「届かなかった分があれば送り直す」ことができるようになるのです。
図10-7 ケース番号を使ったやりとり |
こんなふうに「確実に」荷物を届けることがTCP課長の役割、ということですね。
TCPの役割の2つ目が、「再送制御」です。
まず、上位プロトコルから渡されたデータを分割します。分割し、TCPヘッダを付けた状態のデータをセグメント(Segment)と呼びます。
セグメントはデータをMSS(Max Segment Size)というサイズに分割します。MSSはその使用する回線のMTUから決定されます。MSSは、MTUからIPヘッダとTCPヘッダの40バイトを引いた値になります。基本的な値は、イーサネットのMTUである1500バイトから40バイトを引いた1460バイトになります。
TCPは送信データを一時的に保管する「送信バッファ」、受信データを保管する「受信バッファ」を持っています。バッファにはバイトごとに番号が付けられており、送信バッファにデータを入れ、そのデータの先頭バイトの番号が「シーケンス番号」になります。
一方で受信側の「受信バッファ」には受信したデータが入ります。受信バッファの次の空きバイトの番号が「確認応答番号」です。
送信側はこの応答側から送信される受信を確認したというセグメント、つまり「確認応答」の「確認応答番号」に基づいて、送信したがエラーになったセグメントを送り直します。これを「再送制御」といいます。
図10-8 シーケンス番号と確認応答番号 |
10-4 相手の状態を確認しつつ送る
さて、TCP課長のデスクをもう一度見てみましょう。受信箱がいっぱいになりかかってますね。もし、いっぱいになったらどうするんですか?
TCP課長「いっぱいになってしまうと、もちろんそれ以上受け取れなくなる。それは非常に困ることになるので、これを防ぐために……」
UDP課長「受信箱の大きさを伝えておくんだよね〜」
最初の段階で、受信箱のサイズを教え合っておきます。この受信箱のサイズまでなら荷物を送っても大丈夫、ということが分かりますね。受信箱のサイズの分までならば、送信側は荷物を送っていい、ということになります。この受信箱のサイズは受信側が「次に欲しいケース番号」を送る際に、送付票に一緒に書かれて送られます。
図10-9 受信箱の大きさ |
パケット君「受信箱があふれないように、その大きさも伝えるんだよね。さすがTCP課長、仕事が細かいよね」
TCPの役割の3つ目が、「フロー制御」です。
TCPでのやりとりのポイントは、「受信バッファのサイズ」と「応答の回数」です。受信バッファのサイズを超えてデータを受信した場合、そのデータは破棄されます。TCPはこれを防ぐために、バッファのサイズを相手に伝えるという処理を行います。この相手に伝えるバッファのサイズを「ウィンドウサイズ」と呼びます。
そしてもう1つ、「応答の回数」ですが、これには「1つのセグメントを送信」、それに対する「確認応答を受信」「次のセグメントを送信」という基本的な流れがあります。
ですが、これではセグメントを1つ送るたびに確認応答を待つことになり、効率という点ではあまりいいとはいえません。そのため、いくつかのセグメントを連続して送信し、確認応答を待つ時間を減らす工夫がなされています。ですが、あまり多くのセグメントを連続して送り過ぎて、受信バッファをオーバーしてしまっては意味がありません。そこで、受信バッファのサイズ上限までデータを受け取ることができるよう、ウィンドウサイズまで連続して送ることになります。
図10-10 ウィンドウサイズとフロー制御 |
このように、相手のバッファからデータがあふれる(=オーバーフローする)ことがないようにする処理を「フロー制御」と呼びます。
10-5 おさらいとまとめ
4階商品受発注課の2人の課長、TCP課長とUDP課長。今回はTCP課長の仕事を紹介しました。
TCP課長は「しっかり」「確実」がモットーです。
TCP課長「そうです。荷物はすべからく『しっかり』と、そして『確実』に運ばれなければならないのです。まったくパケット君やUDP課長のような仕事っぷりでは……」
話が長いので続けましょう。TCP課長は、
- 相手へ荷物が送れること、荷物を受け取れることを確認
- 荷物を分割し、番号を付けて送る
- 荷物を受け取ったことを相手に伝える
- 受信箱から荷物があふれないように受信箱のサイズを伝える
などのことを行っているわけです。これはすべて「しっかり」「確実」に荷物を送るために行われる作業です。よくよく考えれば几帳面ですよね、TCP課長は。
TCP課長「……というわけで、荷物は確実に送られる、ということです」
あ、話終わりました?
今回はレイヤ4の2つのプロトコルのうち、TCPの役割を説明しました。
もともとデータ通信で使われている「パケット通信」は、回線を占有しないという利点の代わりに、「データの着信順が不同」「データのロスの可能性がある」などの欠点を抱えています。TCPはこれらの欠点をカバーするプロトコルです。
TCPのコネクションの確立から始まる通信は、
- 確認応答
- バッファにあるデータの並べ替え
- バッファに対するフロー制御
という制御により、データを正確に通信できるようになります。TCPはほかにもいくつか制御を行いますが、この3つがメインです。
上位レイヤのプロトコルは、TCPかUDPのどちらかを使うことになります。TCPを使うことにより、上位プロトコルがやりとりするデータは、データが「順番に」「欠けなく」届くことになります。つまり、TCPを使うと「データの受信の有無」や「データの並べ替え」を、上位プロトコルは考える必要がないことになります。そのため、現在の主要プロトコルであるHTTP、FTP、SMTP、TELNET、POPなどは、TCPを使用してデータ転送を行っています。
さて、次回は。
UDP課長「さ〜、パーッっと荷物送っちゃおうか〜」
おやおや、何だかノリのいいUDP課長のお仕事を紹介します。
10 TCP課長は几帳面でしっかりもの! | |
データ通信を確実に行うために必要な仕事 10-1 2人の上司 |
|
10-2 荷物が届くか事前に確認 | |
10-3 正しい順番で荷物をやりとり 10-4 相手の状態を確認しつつ送る 10-5 おさらいとまとめ |
関連記事 | |
ネットワーク・コマンド/ツール群の活用法を大紹介 連載 ネット・コマンドでトラブル解決 あなたのLANは健康ですか? 現状改善から一歩進んだ構築術まで 特集:基礎から学ぶネットワーク構築 レスポンスの悪いネットワークシステム どう検証し、解決していくか? 特集:ネットワークトラブルを解決する 運用管理に必須のツール/コマンド群 連載:24×365の運用管理 |
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
|
|