3分間ネットワーク講座 第12回:TCPの仕組み ~確実な通信の秘密~
登場人物
• チャット先生(先生):プログラミング、データベース、ネットワークの達人。やさしく、たまにユーモアを交えて解説。
• ボット助手(ボット君):ネットワークに興味があり、勉強中。素朴な疑問をどんどん投げかける。
皆さん、こんにちは!チャット先生です。
前回は、データを確実に届けるTCPと、速度を優先するUDPの違いについて学びましたね。今回は、そのうちのTCP(Transmission Control Protocol)が、なぜ高い信頼性を実現できるのか、その複雑で賢い仕組みを解説していきます。
導入:TCPの「信頼性」を支える要素

ボット君: 先生、TCPが「確実」にデータを届けるって、具体的にどんな仕組みがあるんですか?
先生: いい質問だね。TCPの信頼性は、ただデータが届いたかを確認するだけでなく、データの順序や量も厳密に管理することで成り立っているんだ。その仕組みは主に以下の要素で構成されているよ。
コネクションの確立(3ウェイハンドシェイク)
順序制御と再送
フロー制御と輻輳制御

1. コネクションの確立:3ウェイハンドシェイク
先生: TCPは、データを送る前に、まず相手と「これから通信を始めますよ!」という約束(コネクション)を交わすんだ。この手順が「3ウェイハンドシェイク(3-way handshake)」だ。
SYN(接続要求): 送信側が「通信を始めたい」と相手に伝える。
SYN+ACK(接続許可と確認応答): 受信側が「OK、どうぞ」と接続を許可し、受け取ったことを伝える。
ACK(確認応答): 送信側が「ありがとう」と応答を返し、通信開始。
先生: この3回のやり取りで、お互いが「通信できる状態」であることを確認してから本番のデータ送信に移ることで、通信の確実性を高めているんだ。



2. 順序制御と再送
先生: データ送信中、TCPはデータを小さなかたまり(セグメント)に分割して送るんだけど、その信頼性を担保するために、セグメントにシーケンス番号(順序番号)を振っているんだ。
ボット君: シーケンス番号?
先生: そう。この番号があるおかげで、もしデータがバラバラの順序で届いても、受信側で正しい順番に並べ直すことができるんだ。また、同じ番号のデータが複数届いた場合は重複を排除できる。
先生: さらに、受信側はデータを受け取るたびに「次の番号のデータが欲しい」という確認応答(ACK)を返す。送信側は、再送タイマー(RTO)と呼ばれる時間を設定していて、この時間内にACKが返ってこなければ、データが届かなかったと判断して同じデータを再送するんだ。




3. フロー制御と輻輳制御
ボット君: データを速く送りすぎると、相手のパソコンが処理できなくなったり、途中のネットワークが混雑したりしませんか?
先生: その通り!TCPはこの問題を防ぐために、データの送信量を賢く制御しているんだ。

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

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

4. 今日のまとめ
TCPの信頼性は、コネクション、順序制御、再送、そして送信量制御によって成り立っている。
3ウェイハンドシェイクで通信を事前確認。
シーケンス番号で順序と重複を管理し、ACKと再送で欠落を防ぐ。
フロー制御(受信側能力)と輻輳制御(ネットワーク混雑)で効率と安定性を両立。
ボット君: TCPって、丁寧で、賢くて、周りの状況まで気遣いながらデータを送っているんですね!
先生: そうなんだ。これらの仕組みが連携しているおかげで、君はWebサイトを快適に、そして安全に見られるんだよ。

次回は、ネットワークのトラブルが起きたときに活躍するプロトコル、ICMPについて学ぶよ。通信のチェックによく使うpingやtracerouteといったツールの仕組みを解説していきます。お楽しみに!
次回予告
第13回:ICMPとネットワーク診断 ~通信状態のチェックとトラブルシューティング~
#ネットワーク入門 #TCP #3ウェイハンドシェイク #シーケンス番号 #ウィンドウ制御 #IT初心者 #ネットワーク講座 #基本情報 #応用情報
いいなと思ったら応援しよう!
もしこの記事が少しでも役に立ったり、楽しんでいただけたりしたら、チップをいただけるととても嬉しいです!
いただいたチップは、今後のより良いコンテンツ制作のための書籍代📚とnote購入🗒️、他の方へのチップ代💰に使わせていただきます。
いつも応援ありがとうございます!