TCP と UDP の違いを本当に理解するためには、それぞれのプロトコルが信頼性機能をどのように実装し、通信をどのように追跡するのかを理解することが大切です。
Transmission Control Protocol(TCP)
TCP を最初に規定したのは RFC 793 です。 図に示すように、TCP はデータのセグメント化と再構成という基本機能に加えて、次の機能も提供します。
- セッションの確立によるコネクション型の会話
- 信頼性の高い配信
- 正しい順序でのデータ再構成
- フロー制御
セッションの確立
TCP はコネクション型プロトコルである。 コネクション型のプロトコルは、トラフィックを転送する前に、送信元デバイスと宛先デバイスの間で永続的な接続(セッション)をネゴシエートして確立するプロトコルです。 セッションの確立は、デバイス同士が通信するための準備です。 セッションの確立を通じて、これらのデバイスは定められた時間に転送できるトラフィックの量と、しっかり管理できる両者間の通信データをネゴシエートします。 セッションはすべての通信が完了して初めて終了されます。
信頼性の高い配信
TCP は信頼性の高いデータ配信を確保するための方法を実装できます。 ネットワーク用語としての「信頼性」は、送信側からのデータの各部分が確実に宛先に到達するようにすることを意味します。 さまざまな理由から、ネットワークで伝送中にデータの一部が破損したり、完全に失われたりする可能性があります。 TCP は、送信元デバイスに消失データや破損データを再送信させることで、すべての部分が確実に宛先に到達するようにすることができます。
同じ順序での配信
ネットワークに複数のルートがあって、それぞれの伝送速度が異なっていることがあるので、データが間違った順序で到達する可能性があります。 TCP は、セグメントに番号を付けて一定の順序で並べることにより、それらのセグメントが正しい順序で再構成されるようにします。
フロー制御
ネットワーク ホストのリソース(メモリや帯域幅など)の量は限られています。 これらのリソースに過度な負荷がかかっていることを TCP が認識した場合、TCP は送信元アプリケーションにデータ フローの速度を引き下げるように要求できます。 その場合、送信元から送信されるデータ量を TCP が調整します。 フロー制御によって、ネットワークでのセグメントの消失を防ぎ、再送信が必要になるのを回避できます。