【サーバーNo.465】今更聞けない!TCPをサクッと解説

サーバー サーバー
この記事は約5分で読めます。
スポンサーリンク

TCPとは?

TCP(Transmission Control Protocol)とは、インターネット上でデータを確実に送受信するための通信プロトコルです。データが順番通りに届くように制御し、エラーがあれば再送信する機能を持ちます。

わかりやすい具体的な例

わかりやすい具体的な例1

TCPは、手紙のやり取りに例えることができます。例えば、あなたが友人に複数の手紙を送るとき、それぞれの手紙に番号をつけて順番通りに届けるようにします。もし手紙の一部が届かなかった場合、相手が「○番の手紙が届いていない」と知らせ、それを再送することで、最終的にすべての手紙が揃います。

sequenceDiagram participant Sender participant Receiver Sender->>Receiver: パケット1送信 Sender->>Receiver: パケット2送信 Receiver->>Sender: パケット2が欠損しました Sender->>Receiver: パケット2を再送 Receiver->>Sender: すべてのデータを受信しました

このように、TCPはデータが順番に正しく届くように確認しながら通信を行います。

わかりやすい具体的な例2

TCPは、オンラインショッピングでの荷物配送にも例えられます。複数の荷物を注文した場合、それらがバラバラに届くのではなく、すべての荷物が揃ってから配送が完了する仕組みになっています。もし途中で紛失した荷物があれば、再発送され、全ての荷物が揃うように管理されます。

sequenceDiagram participant Store participant Customer Store->>Customer: 商品A発送 Store->>Customer: 商品B発送 Customer->>Store: 商品Bが届いていません Store->>Customer: 商品Bを再送 Customer->>Store: すべての商品を受け取りました

このように、TCPはデータの欠損を防ぎ、確実に受信側に届ける役割を果たします。

スポンサーリンク

TCPはどのように考案されたのか

TCPは1970年代に、インターネットの基盤となる通信プロトコルとして開発されました。データ通信を確実に行うための方法を模索する中で、パケットの再送と順序制御の仕組みが考案されました。

sequenceDiagram participant UserA participant Network participant UserB UserA->>Network: TCP接続要求 (SYN) Network->>UserB: SYNパケット転送 UserB->>Network: ACK応答 Network->>UserA: ACK受信 UserA->>Network: データ送信開始

考案した人の紹介

TCPは、アメリカのコンピューター科学者ヴィント・サーフ氏ロバート・カーン氏によって開発されました。彼らは、分散型ネットワークを構築する際に、信頼性の高いデータ転送を実現するプロトコルが必要であると考え、TCP/IPモデルを提案しました。

考案された背景

1970年代のコンピュータネットワークは、異なるシステム間での通信が困難でした。そこで、通信の信頼性を高めるために、データを小さな単位(パケット)に分けて送信し、正しく受信できる仕組みを作る必要がありました。これが、現在のインターネットの基礎を築くことになりました。

TCPを学ぶ上でつまづくポイント

多くの初心者がつまずくポイントの一つは、TCPの「3ウェイハンドシェイク」です。これは、通信を確立するための手順で、3回のやり取りが必要になります。このプロセスがなぜ必要なのかを理解することが、TCPを学ぶ上で重要です。

スポンサーリンク

TCPの構造

TCPは、送信元と受信先の間でデータを分割し、各パケットが正しく届くように制御する構造を持ちます。データはシーケンス番号を持ち、受信側が順序通りに組み立てることができます。

flowchart TD; A[アプリケーション層] -->|データ送信| B[トランスポート層 (TCP)] B -->|パケット化| C[ネットワーク層 (IP)] C -->|ルーティング| D[データリンク層] D -->|物理転送| E[受信側]

TCPを利用する場面

TCPは、信頼性の高い通信が求められる場面で使用されます。

利用するケース1

ウェブサイトの閲覧時、TCPはウェブページのデータを確実に転送するために使われます。

flowchart LR; User-->Server[Webサーバー] Server-->User

利用するケース2

電子メールの送受信にもTCPが利用され、データの欠損を防ぎます。

sequenceDiagram participant Client participant MailServer Client->>MailServer: メール送信要求 MailServer->>Client: 受信確認
スポンサーリンク

あわせてこれも押さえよう!

  • HTTP
  • ウェブページを表示するためのプロトコル

  • IP
  • インターネット上のデータ転送を制御

  • UDP
  • 高速なデータ転送に適したプロトコル

  • DNS
  • ドメイン名とIPアドレスを変換

  • SSL/TLS
  • 安全な通信を実現するプロトコル

まとめ

TCPは、データを確実に送信し、インターネットの基盤を支える重要なプロトコルです。これを理解することで、ネットワークの仕組みを深く理解できます。

スポンサーリンク