インターネットをはじめとするIPネットワークは意外と頼りない。データを複数のIPパケットに収めて送り出しても,その途中で一部のパケットが消えたり,順番が変わったりすることがしばしば発生する。送ったIPパケットが確実に相手に届くとは限らない。

IPネットで確かな通信を保証

 そこで登場するのがTCP(transmission control protocol)というプロトコルだ。WebブラウザとWebサーバーの間,メーラーとメール・サーバーの間など,IPネットワークを介してアプリケーション同士がきちんとデータをやりとりする必要がある場面で利用されている。

 IPネットワークで通信するアプリケーションのほとんどは,データを誤りなく転送するときにTCPを使う。データにTCPヘッダーを付けてTCPパケットを作り,それをIPパケットに収めて相手に送っている。あまり意識することはないが,TCPはとても身近で,IPネットワークに無くてはならないプロトコルなのだ。

 そこでこの記事では,TCPがどのようにアプリケーション間のデータを転送しているのか,考え方とそれに基づく具体的なしくみを見ていく。読み終われば,TCPのふるまいが理解できるはずだ。

 まずLesson1では,TCPとはどんなプロトコルなのかを説明する。全体像をつかめば,細かな機能がわかりやすくなるはずだ。ヘッダーを中心とするTCPパケットの中身もLesson1で見ておこう。

 続くLesson2~4で,TCPで実現している機能を順番に見ていくことにしよう。

 Lesson2は,アプリケーション間でデータを確実にやりとりするための仮想的な通信の通り道についての解説だ。この仮想的な通信の通り道は,TCPの根本を支えるしくみ。TCPを理解する上でも重要なポイントである。

 続くLesson3で,やりとりするデータをきちんと相手に届けるためのメカニズムを学習しよう。IPネットワークを使って転送しているTCPパケットは途中で消えたり順番が入れ替わったりすることがある。そこでTCPには,失われたパケットを送り直したり順番をそろえたりするしかけが組み込まれている。ここまで理解できればTCPの基本はわかったといってもいい。

 最後にLesson4で,TCPによるデータ転送の効率を上げるためのしくみを解説する。相手が受け取れないほど大量のデータを送ったりしないように,TCPは転送ペースを調整するメカニズムや,途中でデータが無くなったとき効率よく送り直したりするためのオプションを備えている。

 終了テストでは,TCPの考え方としくみの理解度をチェックする。基本的な考え方から,オプションまで,知識を問う問題を幅広く用意した。解けなかった問題があれば,関連するLessonを再確認するといい。論述問題まで正解できれば,TCPを十分理解できたといっていいだろう。