TCPは全二重通信が可能!仕組み5つとTCPに向いているものとは?

TCPは全二重通信が可能!仕組み5つとTCPに向いているものとは?のアイキャッチイメージ

TCPとはどのようなプロトコル?

プロトコルというのは、ネットワークで情報をやりとりする際、その方法について双方の取り決めを行うことです。取り決めを行っていないと、双方の対話が成立しないため、あらかじめ取り決めておかなければいけません。TCPは、通信プロトコルのひとつで、安全面を重視したプロトコルです。そのため、確実に届けるという信頼性は高いのですが、転送速度はその分低いといった特徴があります。

UDPとの違い

TCPを説明する際に、よく引き合いに出されるのが、UDPです。簡単に言うと、UDPは、安全を重視したTCPと違い、相手に伝わっているかどうかの確認をいちいち取らない分、早く送ることができるというものです。TCPは到達しているかどうかを確認しながら通信するため、到達することに自信が持てますが、UDPは相手の反応など関係なく、送りっぱなしになります。つまりちゃんと到達するかどうかよりも、スピードの方を重視しているのです。

TCPの特徴3つ

データ伝送の信頼性の高いTCPにはいくつかの特徴があります。その特徴についてそれぞれ解説させていただきます。これらの特徴を把握することで、TCPをより深く理解することができるでしょう。下記にTCPの特徴を3つご紹介します。

TCPの特徴1:RFC793に規定されている

RFCというのは、IETF(インターネットの技術など、関連したものの基準の仕様をまとめて、文書として作成する組織)が、取りまとめをした文書のことを言います。インターネットの仕様はある一定の基準によって取りまとめておく必要があり、そのとりまとめをする組織がIETFといいます。RFCには、RFC793のように番号がふられており、それぞれその番号によって文書の内容が違います。RFC793は、TCPに関することが規定されています。

TCPの特徴2:コネクション型である

TCPは、英語の「Transmission Control Protocol」を略したものです。「Transmission」は、伝達とか伝送と訳されますので、つまりTCPは、伝送を制御するプロトコルという意味になります。ここで言う伝送とはコネクションという、通信する相手との、仮想の通信経路を確立させるもののことであり、ここでは「コネクション型」という言い方をされます。TCPはコネクション型の特徴を持ち、コネクションを制御して、安全で信頼性の高い通信を実現させています。

TCPの特徴3:全二重通信が可能

データ伝送を行う際に、経路が二本あれば、方向の違うものを同時に送受信することが可能ですが、経路が一本だと、同時に流すことはできません。この経路が二本ある状態のことを全二重通信といい、片方しかない経路のことを半二重通信といいます。TCPは全二重通信が可能なため、半二重通信のように途中でぶつかったりすることがなく、同時に二つの信号をスムーズに流すことができます。

TCPの仕組み5つ

TCPを構成している機能の仕組みについて、それぞれ説明させていただきます。TCPの仕組みは大きく5つに分けることができます。TPCヘッドやシーケンス番号、確認応答番号(AKC番号)、セグメントの制御機能、コネクションの管理機能など、さまざまな仕組みがそれぞれの役割を果たし、機能していることで、正しく構成されているといえます。それぞれの仕組みがどのような役割を果たしているのかを次に確認してみることにします。

TCPの仕組み1:ヘッダのみを参照する

TCPのデータ伝送をする際、その宛先や送信元のポート番号を文書の頭に付与して、ポート番号が何番であるかをヘッダに付け足しています。文書の頭にデータの情報を格納して付与し、新しいデータが作成されて、ネットワーク層へと送信されます。TCP形式の通信の際に付けられるヘッダをTCPヘッダといいます。TCPヘッダには属性や設定などが格納されており、そこに続く領域に本体が格納されており、ヘッダのみを参照すればわかります。

TCPの仕組み2:シーケンス番号の役割

インターネット上で長いデータを伝送する際には、一定の長さに分割する必要があり、それをパケットとして独立させてそれぞれのデータを送ります。シーケンス番号はパケットに付与する通し番号です。受信側でシーケンス番号を確認することで、通信途上でパケットを失ったり、正しい順番に並べたりすることができます。パケットに付ける番号をシーケンス番号といいます。

TCPの仕組み3:確認応答番号の役割

TCPはデータ伝送でデータを細かく分割しています。分割したパケットごとに番号がふられ、それがシーケンス番号と確認応答番号(ACK番号)と呼ばれています。シーケンス番号はTCPの接続時に番号の生成が行われます。確認応答番号は、送信時に「シーケンス番号+1」となっていた番号が、相手方へ受信した場合、「シーケンス番号+受信データバイト数」として応答するため、送信元が正しく相手方が受信したかを確認することができます。

TCPの仕組み4:制御機能がある

TCPにはフロー制御、誤り制御、ふくそう制御という3つの制御機能が備わっており、この制御機能によって、信頼性の高い通信を実現させているのです。フロー制御は、データを受け取る側の能力に合わせて、送信側のパケット量を調整するというものです。また、誤り制御は、パケットの順番が間違っていたり、途中で故障したりしたものを検出するものです。ふくそう制御は、ネットワークの混雑状態を見て、パケットの量を調節させます。

セグメントの順序制御

TCPには、シーケンス番号によって、伝送するセグメントに順序を与えています。シーケンス番号を付与することで、順序がバラバラになったり、セグメント消失の際、なにが消失してしまったかを見極めたりすることができます。シーケンス番号によって、セグメントの正しい順序制御ができる仕組みとなっています。

消失したセグメントの再送

もしデータ伝送を行う際に途中でセグメントが消失してしまった場合には、受信したとしても、ACK番号が更新されることはないので、再送されて正しく受信がされるまで、同じ番号のACK番号を返信し続けることになります。このことで、送信側は消失したセグメントがあることに気づくことができますし、またどこに消失したセグメントがあるかがわかるという仕組みになっています。

送信セグメント量の制御

データ伝送を効率よく行うには、送信するセグメントの量を調節する必要があります。スライディングウィンドウというフロー制御という仕組みは、受信したデータを一次的にためておくための領域のことです。この領域の容量は、セグメントサイズの整数の倍以上となっているため、データが完了するまで、受信したセグメントをたくさんためておくことができるため、送信セグメントの混雑が避けられるというものです。

TCPの仕組み5:コネクションの管理機能

TCPが通信を行う際には、送受信の双方から接続をする必要があります。それはTCPが全二重通信を提供するプロトコルのためです。そのためには、通信する双方で、コネクションを確立する必要があるので、双方で接続の確立を要求しなければなりません。TCPのコネクションの管理機能は、コネクションの確立において、3ウェイハンドシェイクという手順で行われます。またコネクションを切断するにはハーフクローズというプロセスで行います。

3ウェイハンドシェイク

TCPのコネクション管理機能として、3ウェイハンドシェイクというのは、3回送信することでコネクションを確立させるというものです。1.送信側からコネクションの確立のための要求を行い、TCPパケットを送信します。2.受信側は、これに対してACK番号を付与し、同時に受信側からの接続の確立の要求として、同TCPヘッダを送信します。3.送信側が受信側からのコネクションの確立の要求に対してACKパケットを送信します。

ハーフクローズ

TCPは片方だけが終了しても、もう片方の転送が継続され続けている可能性があるため、片方ずつ終了させる必要があります。コネクションを全て切断完了するには、送信側がコネクション終了の要求(FIN)を行い、受信側はこれを受けてACKを送信します。その後FINを続けて送信し、送信側が受け取ったら、最後にACKを送信します。その後しばらくしてコネクションは終了となります。このコネクション終了のことを、ハーフクローズと言います。

TCPに向いているもの3つ

TCPのさまざまな特徴や仕組みを見てきました。TCPにはさまざまな能力が備わっていることがわかりましたが、この通信機能が向いているものとはどういったものがあるのでしょうか。それぞれの性質や特性を生かした場所での活躍が、現在のインターネットを支え、発展していく鍵でもあります。安全で信頼性の高い、TCPの通信データ伝送に向いているものとして以下の、Web通信、メール通信、ファイル転送の3つをあげてみました。

TCPに向いているもの1:Web通信

TCPに向いているものとして、Web通信があります。Web通信は通信される相手に、ちゃんとデータ伝送されていることが求められていますので、伝送されたものがちゃんと届いているかということをはっきりとさせておかなければいけません。そのため、全二重通信であり、それぞれの通信に制御機能が備わっているTCPは、Web通信に向いている機能ということが言えます。

TCPに向いているもの2:メール通信

TCPに向いているものとしてメール通信があります。メール通信はデータ伝送の最も基本的な通信機能といえ、全二重通信など構造はまさしくメール通信を行うにあたって必要な機能を備えています。メール通信は必ず相手に送信受信することが求められ、失敗の許されない通信機能といえます。そのためには必ず相手に届いているか、逐一確認を行ってくれるTCPの機能は最適だといえるでしょう。

TCPに向いているもの3:ファイル転送

TCPプロトコルに向いているものとして、ファイル転送があります。Web通信やメール通信にも言えることですが、ごく個人的な通信作業においての、安全性というものは、もっとも通信機能に求められるものです。ファイル転送にしても、特にビジネスなどで使用される場合には、個人情報やコンプライアンスなどの観点から見ても、確実に双方で確認が取れることが重要視されており、その点、TCPはとても信頼性の高い通信プロトコルであるといえます。

TCPの仕組みを理解しよう

このようにTCPはさまざまな特徴を持ち、その仕組みによってさまざまな機能を発揮させています。これらの仕組みを理解することは、TCPを利用するにあたり、安全で最適な方法を選ぶことができます。どういった時に何を使っているか、把握しておくことが、今後インターネットを更に深く知り学んでいく上で、大切な要素となり得るでしょう。TCPの仕組みを理解し安全で安心な通信を使いこなしましょう。