PR

TCPとは?ネットワーク初心者向けにわかりやすく3分で解説

IT-Skills

TCP (Transmission Control Protocol) とは、OSI参照モデル第4層:トランスポート層で動作する信頼性の高い通信を担保するためのプロトコルです。

別名伝送制御プロトコルとも呼ばれ、その名の通り「伝送/通信」を「制御」することが目的のプロトコルです。

このページではIT初心者向けにTCPとは何か?を人に説明できるレベルになるまで、1から分かりやすく解説します。

このページで学べる内容
  • TCP (Transmission Control Protocol) とは?
  • TCPの仕組み
    • 3ウェイハンドシェイク
  • TCPヘッダ

ネットワークエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。

スポンサーリンク

TCPとは?

TCPとは わかりやすく

TCP (Transmission Control Protocol) とは、OSI参照モデル第4層:トランスポート層で動作する信頼性の高い通信を担保するための通信プロトコルです。

UDP (User Datagram Protocol) と同様、IP(Internet Protocol)の上位プロトコルとしての役割を果たします。

TCPIP,トランスポート層
TCP/IP:OSI参照モデル

上記の説明だけではいまいちピンとこない方のために、ここから先はネットワーク初心者向けにもう少しわかりやすい表現を用いて解説していきます。

TCPの役割をわかりやすく:インターネット通信の仕組み

インターネット通信では、OSI参照モデルの第1層(物理層)~第3層(ネットワーク層)のプロトコルがお互い有機的に動作することにより、通信機器同士のEnd-to-Endの通信環境が確立されます。

End-to-Endの通信環境が確立」された状況を現実世界に例えると、手紙を送るときに相手の住所とこちらの住所が明確になっており、あとは手紙を送れば相手にしっかりと届くことが想定される状況です。

OSI参照モデル第4層トランスポート層―TCP (Transmission Control Protocol) は、確実に相手にデータが届けられるための通信品質の担保を行うことが主な役割です。

例えば、相手に手紙を出したとしましょう。しかし、例えば台風が来ていたり道がボロボロだったりすると、手紙は濡れ文字は読めず相手は何を言っているかを理解できないかもしれません。

TCP

そこでTCP (Transmission Control Protocol) では、データの内容が適切に送られているかどうか?を判定し、もしデータ転送時に何らかのエラーがあれば再送するなどといった役割を提供しています。

TCP

冒頭で説明した通りTCP (Transmission Control Protocol) は別名「伝送制御プロトコル」とも呼ばます。その理由が何となく理解いただけるかと思います。

ここからはより具体的にTCPのイメージを掴めるようTCPの仕組みを詳しく解説していきます。

プロトコルとは

プロトコルとはコンピュータとコンピュータがネットワークを通じて通信する際に決められた約束事・決まりのこと。

製造メーカーも、OSもCPUも異なるコンピュータ同士が何事もなく通信できるのはプロトコルが事前に決まっているおかげです。逆に言えば、プロトコルが存在しないとお互いにデータを交換したりファイルを連携したりなどの通信を行うことができません。

プロトコルは日常会話に当てはめて説明することもできます。普段私たちがお互い話をすることができているのもプロトコル(何語で話すか?)が決まっているからです。

TCP,プロトコル

「プロトコル」をより詳しく知りたい方は以下の記事をご覧ください。

TCPの仕組みを分かりやすく解説

TCP (Transmission Control Protocol) がどのように通信の品質を担保しているのか―。

ここからはより具体的にTCPの仕組みを解説します。TCPを理解するために必要なのは以下の3点です。

TCP理解の鍵
TCPのポイント
  • コネクションの確立:3ウェイハンドシェイク
  • 再送制御:ACK
  • 順序制御:シーケンス番号

ネットワーク初心者のうちはよく分からない用語もあるかもしれません。その場合は適宜必要となる前提知識も合わせて解説していきますのでご安心ください。

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

TCP (Transmission Control Protocol) ではコネクション型通信を提供します。すなわち、実際にデータ転送を行う前に「正常に相手と接続できているか?」を確認したうえで通信を開始します。

コネクション型通信

TCPにおいては、このコネクションの確立を以下の3ステップで行うため、その仕組みを3ウェイハンドシェイクと呼びます。

TCP 3ウェイハンドシェイク

分かりやすく説明すると、相手のコンピュータに「接続して良い?」と聞いて、それに対して応答を返してもらっているだけ。決して難しく考える必要はありません。

3ウェイハンドシェイクを技術的に解説すると、コネクションの確立を要求するパケットをSYNと呼び、それに対する応答パケットをACKと呼びます。

TCP 3ウェイハンドシェイク
3ウェイハンドシェイク
3ウェイハンドシェイクの仕組み
  • ①:SYN(コネクション確立要求パケット)を送る
  • ②:ACK(応答パケット)とSYNを送る
  • ③:ACKを送る

「SYN」は「同期」を意味するSynchroから。「ACK」は「確認」を意味するAcknowlegementの省略系です。

この3つのステップのうちどれか1つでも失敗するとコネクションの確立が行えないため、データ転送を行うことができません。

コネクションを確立するまでに3回のパケット転送を行うことから、この方法を3ウェイハンドシェイクと呼びます。

各種資格試験でよく問われる用語なのでしっかり覚えておきましょう。

TCPではデータ通信を開始する前に、まずは相手との仮想通信回路を確立します。このようにすることで、途中でデータが喪失したりエラーが発生した際に対応できる環境を整えます。

コネクション切断時のハンドシェイク

TCPではコネクションの切断時にも同様にハンドシェイクを行います。

考え方はコネクション確立時と同じですが、コネクション切断時のパケットはFINと呼ばれる点が異なります。

TCP 3ウェイハンドシェイク

TCP再送制御:ACK

続いては、コネクション確立後の実際の通信を制御する仕組みです。

TCPでは3ウェイハンドシェイクによってコネクションを確立した後に実際のデータ転送フェーズを開始します。

TCPではこのデータ転送フェーズにおいても先ほどと同様に、ACKを用いて通信品質の担保を行います。

TCP シーケンス番号

日常会話と同じように、相手の相槌を確認しながらデータを転送するようなイメージです。

ここで、もし相手の相槌を確認できない場合(=ACKが返ってこない場合)はデータが正しく転送されていないと判断できるようになります。その場合TCPでは一定時間経過後再び同じデータを転送する再送処理が行われます。

TCP シーケンス番号

ACKを確認しながらデータ転送を行い通信品質の担保を行うのがTCPの大きな特徴の1つです。

TCP順序制御:シーケンス番号

ですが、ACKだけでは通信品質の担保を行うことができない場合があります。

例えば以下のような場合です。

TCP シーケンス番号

何らかの理由でACKが喪失したため、クライアントは同じデータを再送していますが、サーバ側からするとACKが届かなかっただけであって受け取るべきデータは受け取れています。これでは、サーバ側は誤ってデータを重複した状態で受け取ってしまうことになります。

このような場合にデータの識別を行うために用いられるのがシーケンス番号(ACK番号)です。

TCP シーケンス番号

シーケンス番号を識別することで、受け取り済みのデータを確認します。また、シーケンス番号はデータの重複を避けるだけではなく以下のようにデータの順序制御も行う役割があります。

TCP シーケンス番号
シーケンス番号/ACK番号の考え方
#説明数字の考え方
シーケンス番号送信するデータを識別する番号ACK番号+データ長
ACK番号次に受信するべきデータを識別する番号シーケンス番号+データ長+1
TCPの概要まとめ
  • TCP (Transmission Control Protocol) とは、OSI参照モデル第4層:トランスポート層で動作する信頼性の高い通信を担保するためのプロトコル
  • TCPは以下の仕組みで通信品質の担保を行う
    • コネクションの確立:3ウェイハンドシェイク
    • 再送制御:ACK/確認応答
    • 順序制御:シーケンス番号

TCPヘッダフォーマット

最後にTCPパケット(TCPセグメント)のヘッダのフォーマットを紹介します。

パケットの中身をすべて覚える必要はありませんが、どのようなデータをやり取りしているのか?を知ることでTCPへの理解をより深めることが可能になります。

TCPヘッダ

ネットワークエンジニアを目指したい方は

TCPをはじめとして、ネットワークの基礎を1から学びたい方はこちらの書籍を購入してがっつり学びましょう!

さくっと手軽に読める内容ではないのですが、ネットワークエンジニア全員が必ず読破している本と言っても過言ではありません。是非この機会にチャレンジしてみてみましょう。

blank
インターネットのプロトコルTCP/IP入門書の決定版!

ITを1から学びなおしたい方は

システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。

正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。

無料で読めるようにしてあります。累計12万人に参考にしていただきました!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
IT-SkillsNetwork
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました