あなたも勘違いしてるかも?「TCP」と「UDP」の違いとは?

こんにちは、Tomです。

今回は、

「TCPとUDPの違い」

について、お話していきたいと思います。

さっそく学んでいきましょう!

1.はじめに

まず、TCPもUDPもどちらもトランスポート層のプロトコルです。

この2つのプロトコルの違いを説明する前に、「トランスポート層の役割」について説明する必要があります。

 

トランスポート層の役割は、

「アプリケーションに対して、信頼性の高い通信を提供すること」

です。

 

そして、アプリケーションに対して“通信を提供”するためには、アプリケーション層から受け取ったデータをインターネット層に転送する時に、

“どのアプリケーションから受け取ったデータなのか”

を識別しなければいけません。

 

逆に、

インターネット層から受け取ったデータをアプリケーション層に転送するときに、

“どのアプリケーションから送られてきたデータなのか”

という情報を識別する必要があります。

 

そのような、アプリケーションの識別は

「ポート番号」

を用いて行っています。

 

つまり、トランスポート層は、

「ポート番号を用いて、アプリケーションを識別する」

という役割を担っているのです。

 

これは、インターネット層が、

「IPアドレスを用いて、宛先ネットワークを識別する」

という役割や、

ネットワークインターフェイス層が、

「MACアドレスを用いて、宛先ホストを識別する」

という役割を持っているのと同じようなことです。

なので、トランスポート層のプロトコルであるTCPもUDPも、

「ポート番号を用いて、アプリケーションを識別する」

という役割を持っている点は同じです。

「ポート番号」に関する詳しい解説は下の記事にまとめましたので、こちらをご覧ください。

CEHCK!ポート番号とは?

では、この異なる点はどこでしょうか?

2つのプロトコルの違いについて議論するために、まずはそれぞれのプロトコルを理解しましょう。

2.TCPとは?

まず、TCPとは、

Transmission Control Protocol

の略で、コネクション型のプロトコルです。

英語の「transmission」とは、「伝達、伝送」という意味があります。

つまり、TCPは

「伝送を制御するプロトコル」

ということになります。

また、「コネクション型」とは、通信を行う相手との間で「コネクション」という仮想的な通信路”を確立するもののことを言います。

なので、ここでいう「伝送」とは「コネクション」のことになります。

 

そして、TCPには信頼性の高い通信を実現するために、コネクションを制御する機能がたくさんあります。

例えば、

  • 再送制御
  • ウィンドウ制御
  • フロー制御
  • 順序制御

などです。

TCPはこれらの制御機能を使って、データを確実に相手側のアプリケーションに送信することを実現しているのです。

TCPがどんなものなのか、お分りいただけたでしょうか。

 

TCPに関する詳しい内容は下の記事をご覧ください。

CEHCK!コネが重要?TCP/IPの「TCP」とは?

 

また、TCPのさまざまな制御に関しては、下の記事をご覧ください。

おすすめ!

コンピュータが握手?3ウェイハンドシェイクとは?
シーケンス番号が手掛かり?TCPの「順序制御」とは?
再配達します!TCPの「再送制御」とは?
一気に送っていいよ!TCPの「ウィンドウ制御」とは?

3.UDPとは?

次に、UDPとは、

User Datagram Protocol

の略で、コネクションレス型のプロトコルです。

 

UDPはTCPのようなコネクションを制御する機能はありません。

というか、そもそもコネクションを確立しません。

コネクションレス型だからです。

 

ではなぜコネクションを確立しないのか?

それは、信頼性の高い通信を提供するプロトコルではないからです。

 

「トランスポート層は信頼性の高い通信を提供するんじゃなかったんですか!?」

と混乱されたかもしれません。

 

確かにトランスポート層の役割は、信頼性の高い通信を提供することです。

しかし、実際にその役割を担っているのはTCPです。

UDPは、信頼性の高い通信は保証しません。

その代わり、TCPと違って色んな制御を行わないので、高速な通信を可能にします。

 

UDPは、

「ポート番号を識別してアプリケーションにデータを転送する」

という最低限の仕事をして、あとは何もしません。

 

そのため、アプリケーション層から受け取ったデータに、ポート番号の情報だけ付加してインターネット層に渡します。

これにより高速な通信が可能になるため、高速性が求められるものに対してはUDPの方が向いています。

 

例えば、IP電話なんかがそうです。
IP電話とは、LINEやSkypeなどの電話機能のことです。

IP電話では、音声をデータに変換し、IP通信でパケットを伝送して電話を可能にしているのですが、
トランスポート層にTCPを用いたらどのようなことが起こるでしょうか?

 

通信回線が空いているときは問題ないです。

しかし、回線が混み合っている場合は、IP電話の音声パケットが届かないということが発生します。

TCPなので、そんな時は再送制御によって届くまで何回も音声パケットを送ってもらいます。

そうすると、電話を受けている方は、パケットが届くまで、

「この間はありが………….」

といったように、途中で相手の音声が止まってしまいます。

TCPはデータを確実に届けるという重要な役割を担っていますが、このような効率性が求められる通信には向きません。

TCPが再送制御を行わなくても、人間が「ごめん、もう一度いって」と言えば済む話だからです。

 

なので、こういう効率性が求められる通信ではUDPを使います。

UDPを使えば、

「この間はありが…うございました」

といった具合に途中の音声が途切れてしまいますが、ある程度わかるならそのまま会話は続きますし、
わからなければ、先ほども言ったように聞き返せばいいのです。

 

UDPがどのようなものなのか、わかっていただけたでしょうか。

UDPに関する詳しい解説は下の記事をご覧ください。

CEHCK!UDPとは?たったこれだけ!

4.TCPとUDPの違い

TCPとUDPについて学んだので、その違いをまとめてみましょう。

主な違いは、

コネクションを確立するかしないか

です。

コネクションを確立するからTCPは信頼性が高くなるし、転送速度は遅くなるのです。

UDPの場合はその逆です。

つまり、TCPとUDPの違いは、簡潔に言ってしまえば、

「コネクションを確立するかどうか」

ということだけです。

その他の特徴や用途、上位プロトコルなどは、

  • コネクションを確立した結果、信頼性が高くなる(またはその逆)
  • コネクションを確立するから、転送速度が遅くなる(またはその逆)
  • データを確実に届ける必要があるプロトコルだからコネクションを確立する(またはその逆)

というだけです。

あまり難しく考える必要はありません。その他の詳しい動作などは、TCP、UDPのところでご紹介した記事を参考にしてください。

コネが重要?TCP/IPの「TCP」とは? UDPとは?たったこれだけ!

5.まとめ

いかがでしたでしょうか?

TCPとUDPの違いだけでなく、トランスポート層の役割やポート番号についてもお話しましたが、
今回のお話した内容は、ネットワークを理解する上で重要な内容です。

記事内で紹介したTCPやUDPなどの詳しい内容を解説した記事もご覧になって、ぜひ自分の知識にしてください。

それでは、今回も最後まで読んでくださり本当にありがとうございました。

この分野も記事を書いてほしい!
ここがわらかないから教えてほしい
など、ブログを読んで疑問に思ったこと・気づいたことなど、何でもメールしてください!

  お問い合わせはこちら