図●TCPにおけるコネクションの管理とデータ送受信
図●TCPにおけるコネクションの管理とデータ送受信
[画像のクリックで拡大表示]

 TCP(Transmission Control Protocol)とは、IP(Internet Protocol)を使ったネットワークで、通信相手に確実にパケットを届けるためのプロトコル。確実にパケットを届けるため、TCPには2つの仕組みがある。(A)「コネクション」と、(B)「通信の制御機能」だ。

 TCPの通信で最も特徴的なのが、(A)のコネクションを確立することだ(の(1))。コネクションとは、通信するホスト同士(図ではパソコンとサーバー)がデータを収めたパケットを確実に相手に届けるために作る、仮想的な通信路だ。送り合うパケットは、コネクションを通って相手に届く。

 コネクションを確立するため、ホスト同士はまず、互いにメッセージをやり取りする。メッセージのやり取りがうまくいったホストの間に、コネクションが確立する。このメッセージのやり取りが1往復半(3回)あるため、「3ウエイハンドシェーク」という。

 通信を開始する側は、「SYN」というメッセージを相手に送る。これは「そちらに接続していいですか?」という意味のメッセージ。「SYN」を受け取った相手は、「いいですよ。こちらからも接続していいですか?」という意味で「SYN+ACK」というメッセージを相手に送る。「ACK」は「いいですよ」という意味だ。「SYN+ACK」を受け取った相手は、「そちらからも接続していいですよ」の意味で「ACK」を返す。これで双方向のコネクションが確立する。

 なお、通信が終わってコネクションを終了させる時は、「FIN」(終わります)というメッセージと、「ACK」を送り合う(図中の(3))。

 (B)の通信の制御機能は複数あるが、代表的な機能は「確認応答」だ(図中の(2))。これは、送信先がパケットを受け取った際に、送信元に「届いたよ」とメッセージを送ることだ。これにより送信元は、通信相手にパケットが届いたとわかる。  送信先からの応答がない場合、送信元はネットワーク上でパケットが損失(ロスト)したと判断して、再度送信する。