見出し画像

3分間ネットワーク講座 第12回:TCPの仕組み ~確実な通信の秘密~


登場人物
• チャット先生(先生):プログラミング、データベース、ネットワークの達人。やさしく、たまにユーモアを交えて解説。
• ボット助手(ボット君):ネットワークに興味があり、勉強中。素朴な疑問をどんどん投げかける。


皆さん、こんにちは!チャット先生です。

前回は、データを確実に届けるTCPと、速度を優先するUDPの違いについて学びましたね。今回は、そのうちのTCP(Transmission Control Protocol)が、なぜ高い信頼性を実現できるのか、その複雑で賢い仕組みを解説していきます。


導入:TCPの「信頼性」を支える要素



ボット君: 先生、TCPが「確実」にデータを届けるって、具体的にどんな仕組みがあるんですか?

先生: いい質問だね。TCPの信頼性は、ただデータが届いたかを確認するだけでなく、データの順序も厳密に管理することで成り立っているんだ。その仕組みは主に以下の要素で構成されているよ。

  1. コネクションの確立(3ウェイハンドシェイク)

  2. 順序制御と再送

  3. フロー制御と輻輳制御




1. コネクションの確立:3ウェイハンドシェイク


先生: TCPは、データを送る前に、まず相手と「これから通信を始めますよ!」という約束(コネクション)を交わすんだ。この手順が「3ウェイハンドシェイク(3-way handshake)」だ。

  1. SYN(接続要求): 送信側が「通信を始めたい」と相手に伝える。

  2. SYN+ACK(接続許可と確認応答): 受信側が「OK、どうぞ」と接続を許可し、受け取ったことを伝える。

  3. ACK(確認応答): 送信側が「ありがとう」と応答を返し、通信開始。

先生: この3回のやり取りで、お互いが「通信できる状態」であることを確認してから本番のデータ送信に移ることで、通信の確実性を高めているんだ。




2. 順序制御と再送


先生: データ送信中、TCPはデータを小さなかたまり(セグメント)に分割して送るんだけど、その信頼性を担保するために、セグメントにシーケンス番号(順序番号)を振っているんだ。

ボット君: シーケンス番号?

先生: そう。この番号があるおかげで、もしデータがバラバラの順序で届いても、受信側で正しい順番に並べ直すことができるんだ。また、同じ番号のデータが複数届いた場合は重複を排除できる。

先生: さらに、受信側はデータを受け取るたびに「次の番号のデータが欲しい」という確認応答(ACK)を返す。送信側は、再送タイマー(RTO)と呼ばれる時間を設定していて、この時間内にACKが返ってこなければ、データが届かなかったと判断して同じデータを再送するんだ。




3. フロー制御と輻輳制御


ボット君: データを速く送りすぎると、相手のパソコンが処理できなくなったり、途中のネットワークが混雑したりしませんか?

先生: その通り!TCPはこの問題を防ぐために、データの送信量を賢く制御しているんだ。


フロー制御(Flow Control)


先生: これは「受信側の処理能力」に合わせた制御だよ。TCPはスライディングウィンドウ方式を使っていて、相手からのACKを待たずに、受信可能な量(ウィンドウサイズ)の範囲内で複数のデータを連続で送ることができるんだ。これにより効率が上がる一方で、受信側のバッファ(一時保存領域)が溢れないように調整しているんだよ。


輻輳制御(Congestion Control)


先生: こちらは「ネットワーク全体の混雑」に合わせた制御だ。ネットワークが混み合っていると(輻輳していると)、自動的に送信量を減らして混雑の解消を促すんだ。これにより、インターネット全体が安定して動くのを助けているんだよ。




4. 今日のまとめ


  • TCPの信頼性は、コネクション、順序制御、再送、そして送信量制御によって成り立っている。

  • 3ウェイハンドシェイクで通信を事前確認。

  • シーケンス番号で順序と重複を管理し、ACKと再送で欠落を防ぐ。

  • フロー制御(受信側能力)と輻輳制御(ネットワーク混雑)で効率と安定性を両立。

ボット君: TCPって、丁寧で、賢くて、周りの状況まで気遣いながらデータを送っているんですね!

先生: そうなんだ。これらの仕組みが連携しているおかげで、君はWebサイトを快適に、そして安全に見られるんだよ。


次回は、ネットワークのトラブルが起きたときに活躍するプロトコル、ICMPについて学ぶよ。通信のチェックによく使うpingtracerouteといったツールの仕組みを解説していきます。お楽しみに!


次回予告

第13回:ICMPとネットワーク診断 ~通信状態のチェックとトラブルシューティング~

#ネットワーク入門 #TCP #3ウェイハンドシェイク #シーケンス番号 #ウィンドウ制御 #IT初心者 #ネットワーク講座 #基本情報 #応用情報


いいなと思ったら応援しよう!

ナオユキ|物語と知識のコンシェルジュ もしこの記事が少しでも役に立ったり、楽しんでいただけたりしたら、チップをいただけるととても嬉しいです! いただいたチップは、今後のより良いコンテンツ制作のための書籍代📚とnote購入🗒️、他の方へのチップ代💰に使わせていただきます。 いつも応援ありがとうございます!