メインコンテンツへスキップ
見出し画像

TCPとは?通信の信頼性を高める仕組みを初心者向けに解説

    HTTPSはTCP 443、SSHはTCP 22と表されますが、そもそもTCPとは何でしょうか。この記事では、通信を始める手順や、データの順番を管理して届かなければ送り直す仕組みを、前提知識から整理します。

    TCPとは

    TCPは「Transmission Control Protocol」の略で、ネットワーク通信で使われる決まりごとの一つです。プロトコルとは、機器同士が同じ方法で通信するためのルールを指します。

    TCPの役割をひと言で表すと、相手と通信できる状態を作り、データの順番や到着を確認しながら届けることです。Webサイトの閲覧やメールなど、データが抜けたり順番が入れ替わったりすると困る通信で広く使われています。

    ただし、TCPを使えば必ず届くわけではありません。通信できる範囲で欠落や順序の乱れを検出し、再送などで信頼性を高める仕組みです。

    画像

    IPアドレスとポート番号との関係

    インターネットでは、IPがIPアドレスを手掛かりに、データを宛先の機器まで運びます。一台のサーバでは複数のサービスが動くため、届け先を区別するポート番号も必要です。

    IPアドレスを建物の住所に例えるなら、ポート番号は建物内の窓口です。代表例には、HTTPSのTCP 443、HTTPのTCP 80、SSHのTCP 22があります。実際の通信では、送信元と宛先それぞれのIPアドレスとポート番号を組み合わせて接続を区別します。

    画像

    通信前に接続を確認する

    TCPでは、いきなり本題のデータを送るのではなく、最初に相手と通信を始められるか確認します。この手順が「3ウェイハンドシェイク」です。

    1. PCからサーバへ、接続を始めたいというSYNを送る

    2. サーバが、了解を示すSYN+ACKを返す

    3. PCがACKを返し、接続が成立する

    SYNやACKは、TCPの状態を伝える目印です。このやり取りで双方が通信を始められることを確認します。ただし、接続の成立は相手の身元を証明したことを意味しません。

    画像

    データの抜けや順序の乱れに対応する

    ネットワークでは、データを小さな単位に分けて送ります。TCPは、それぞれのデータの位置が分かるように番号を付けます。受信側は届いたことをACKで知らせます。

    送信側は、一定時間たってもACKを受け取れなければ、途中で失われた可能性があると判断して再送します。順番が入れ替わって届いた場合は番号を基に並べ直し、同じデータが重複した場合も調整します。

    さらに、受信側の処理能力に合わせる「フロー制御」や、混雑に応じて送信量を調整する「輻輳制御」も備えています。

    画像

    ファイアウォールとTCPの関係

    ファイアウォールは、送信元・宛先のIPアドレスやTCPポート番号などをルールと比較し、通信を許可するか拒否するか判断します。例えば「インターネットからWebサーバのTCP 443は許可する」と設定できます。

    ステートフルファイアウォールでは、3ウェイハンドシェイクなどから通信の状態も追跡します。内部PCが開始したTCP通信を記録し、その通信に対する正しい応答を通す、といった判断が可能です。

    UDPとの違い

    UDPは、TCPのような接続確認やACK、再送を標準では行いません。その分、処理が比較的シンプルで、多少の欠落より速さを優先する音声・映像配信、オンラインゲームなどで使われます。DNSの問い合わせにもUDPがよく使われます。

    TCPとUDPは、順番や到着確認を重視するか、遅延の少なさを重視するかで使い分けます。なお、HTTP/3はUDPを基にしたQUICを利用します。

    TCPだけでは通信内容を守れない

    TCPは、データの到着や順番を管理しますが、通信内容を暗号化したり、通信相手が本物か確認したりする仕組みではありません。

    一般的なHTTPSでは、TCPの上でTLSを利用し、暗号化やサーバ証明書による確認を行います。つまり、TCPがデータを順番に届け、TLSが通信内容を保護するように、役割の異なる仕組みを組み合わせています。

    まとめ

    TCPとは、相手との接続を確認し、データの順番や到着を管理しながら届けるためのプロトコルです。3ウェイハンドシェイクで接続を始め、ACKや再送によって通信の信頼性を高めます。

    IPアドレスが機器を示し、ポート番号がサービスを区別し、TCPがデータのやり取りを管理します。役割を分けて考えると、「TCP 443」も理解しやすくなります。

    あわせて読みたい関連記事


     
     
     
    情報処理試験、セキュリティ・Webアプリ開発を学ぶ現役SE。初心者目線で、つまずいたIT用語や仕組みを整理しています。心理・セルフケア、本から学んだことも発信。Amazonのアソシエイトとして、Yotsuhaは適格販売により収入を得ています。

    あなたへのおすすめ