インターネット初めて講座 » インターネットで活躍するコンピュータが話す言葉 » TCPプロトコル

TCPプロトコル

IPプロトコルは、
前項で述べたように「ネットワーク同士をつないで一つの大きなネットワークにできる」という特徴を持っていました。

ですが、
IPプロトコルはコンピュータのデータ通信に必要な「チェック機能」を持っていなかったのです。

コンピュータのデータ通信では、
パケット通信という形式がよく用いられます。

これはデータをパケットという小さな塊に分割し、
受け取った後でつなぎ合わせて元のデータに戻す、という方式です。

IPプロトコルでもこのパケット方式を使っているのですが、
IPプロトコルには「パケットが無事に着いたかどうか」をチェックする機能がなかったのです。

例えば、
本を一ページずつバラバラにして郵送する場合を考えてみてください。

この場合、全てのページが、一ページ目から順番に届いてくれれば、
元の本に戻すのは簡単です。

ですが、何ページかが欠けていたり、
或いは順番がでたらめに届いたとしたら、どうなるでしょう?
元の本の内容が何なのか、まるで分からなくなってしまうに違いありません。

IPプロトコルは、
まさにこの「でたらめな郵便」でした。

パケットが無事に着くかどうか、
また順番通り着くかどうかは運任せだったのです。

これでは、大切なデータを送るにはあまりに不安でした。

そこで開発されたのが、TCPプロトコルです。

TCPプロトコルは第四層のプロトコルで、
IPプロトコルを前提としています。

つまり、第三層がIPプロトコルでなければTCPプロトコルは使えません。

TCPプロトコルを使うということは、
IPプロトコルも使うということを意味しているのです。

「TCP/IP」と一括りで呼ばれることがあるのは、このためです。

TCPプロトコルの機能は、大きく三つ。

ポートを使ってアプリケーションを指定する」
「パケットの順番を整える」
「パケットが着いたことを確認する」

というのがそうです。

「ポートを使ってアプリケーションを指定する」というのは、
送られたデータがどのアプリケーションに対して送られたものかを指定する機能です。

例えば、一台のパソコンでメールソフトとブラウザをいっしょに動かしていたとしましょう。

この場合、送られてきたデータがメールソフト宛かブラウザ宛か分からないと、
困ったことになってしまいます。
(Webページ用のデータをメールソフトが受け取っても、ちゃんと表示することはできませんから……)

IPプロトコルだけではこの判断はできませんが、
TCPプロトコルでは「このデータはブラウザ宛、このデータはメールソフト宛」と届け先を指定できるのです。

「パケットの順番を整える」機能は、シーケンサ番号という番号を振ることで、
パケットの順番を分かるようにしたものです。

また、パケットを受け取ったコンピュータが「確かに受け取りました」というメッセージを送り主に返すことで
「パケットが着いたことを確認する」機能も持っています。

しばらく待ってもこの返事がなければ、
送り主は同じパケットを再び送り出すのです。

こうして信頼性を高めることで、
TCPとIPの組み合わせはインターネットで一般的なプロトコルとして使われるようになりました。

TCPと似た第四層のプロトコルにはUDPもありますが、
どちらかと言えばTCPの方が一般的なようです。