OSI参照モデルの第4層で、端末間の信頼性ある通信を担う層。
トランスポート層とは、OSI参照モデル(=通信の役割を7つの層に分けて整理した世界共通の考え方)の第4層で、送信側の端末と受信側の端末の間で、データを過不足なく・正しい順序で届けるための信頼性を担う層です。
下のネットワーク層(IP)は「宛先まで運ぼうと努力する」だけで、途中でデータが欠けたり順番が入れ替わったりしても直してくれません。そこをカバーするのがトランスポート層です。必要に応じて抜けたデータを再送したり、順番を並べ直したりします。ここで扱うデータの単位をセグメントと呼びます。
身近な例で考えると、大事な書類を「配達確認付き」で送る郵便に似ています。普通郵便(IP)は届いたか分かりませんが、配達確認付き(TCP)なら相手が受け取ったかどうかを確認でき、届かなければ送り直せます。上の図解で第4層(赤くハイライト)がこの役割です。
トランスポート層にはTCPとUDPという性格の異なる2つのプロトコルがあり、用途に応じて使い分けます。
| 項目 | TCP | UDP |
|---|---|---|
| 正式名称 | Transmission Control Protocol | User Datagram Protocol |
| 接続 | コネクション型(事前に握手) | コネクションレス型(握手なし) |
| 信頼性 | 高い(再送・順序整列あり) | 低い(届く保証なし) |
| 速度 | やや遅い(確認の手間) | 速い(確認しない) |
| 用途 | Web・メール・ファイル転送 | 動画配信・音声通話・DNS |
両者の違いは「確実さ」と「速さ」のどちらを優先するかです。
・TCP:通信前に相手と握手(コネクション確立)し、届いたか確認しながら送る。1ビットも欠けてはいけないWebページやメール向き
・UDP:握手も確認もせず投げっぱなしで送る。多少欠けても困らない動画・音声のように、止まらず速いことが大事な用途向き
身近な例では、TCPは「受領印をもらう書留」、UDPは「ポストに投函するだけのチラシ」のような関係です。確実さが要るなら書留(TCP)、とにかく速く大量に届けたいならチラシ(UDP)、と覚えると区別しやすいでしょう。
ポート番号とは、1台のコンピュータの中で動いている複数のアプリ(通信プログラム)を区別するための番号です。IPアドレスが「どのPCか」を表すのに対し、ポート番号は「そのPCの中のどのアプリ宛てか」を表します。
同じPCがWebもメールも同時に使えるのは、ポート番号で通信を仕分けているからです。よく使われる番号はウェルノウンポート(0〜1023の予約番号)として決まっています。
・80 / 443:Web(HTTP / HTTPS)
・25:メール送信(SMTP)
・53:名前解決(DNS)
身近な例で考えると、マンションの「部屋番号」に似ています。建物の住所(IPアドレス)まで届いた郵便を、最後に部屋番号(ポート番号)で各家庭に届けるイメージです。IPアドレスとポート番号をセットにすることで、世界中のどのアプリにも正しくデータを届けられます。
TCPは実際にデータを送る前に、3回のやり取り(3ウェイハンドシェイク)で相手との接続を確立します。この事前の握手こそが「確実に届く」というTCPの信頼性の基盤です。
3つのステップの意味は次のとおりです。
・① SYN(Synchronize=同期):クライアントが「接続してもいいですか?」と要求を送る
・② SYN-ACK(SYN + Acknowledge=了解):サーバが「いいですよ、あなたの要求も受け取りました」と返す
・③ ACK(Acknowledge):クライアントが「了解しました、では始めます」と確認を返す
なぜ3回必要なのか。2回では「クライアントが送れて、サーバが受け取れる」しか確認できません。3回目のACKでサーバは「クライアントが自分の返事を受け取れる」を確認でき、両方向の通信路が正常かを確かめられます。身近な例では、電話をかけるとき「もしもし(SYN)→ はい(SYN-ACK)→ 聞こえますか(ACK)」と確認してから本題に入るのと同じ感覚です。
TCPとUDPの最も根本的な違いが「コネクション型」と「コネクションレス型」という考え方です。コネクション(=通信路・接続)を事前に確立するかどうかで、信頼性と速度が大きく変わります。
2つの方式を比較すると次のとおりです。
・コネクション型(TCP):データを送る前に3ウェイハンドシェイクで接続を確立し、通信が終わったら接続を切断する。「この部屋はあなた専用です」と席を確保してから話す電話のイメージ
・コネクションレス型(UDP):事前の接続確立なしにいきなりデータを送る。「ポストに投函」のように、受け取ってもらえたかどうか確認しない
コネクションを確立することにはオーバーヘッド(余分な手間・時間)がかかります。動画のリアルタイム配信など、多少のデータ欠けより遅延がないことを優先したい場合はUDPが向いています。一方、ファイル転送やWebページの読み込みなど1バイトも欠けてはいけない場合はTCPを選びます。用途に応じてトランスポート層のプロトコルを選ぶ、というのがこの層の設計の肝です。