OSI参照モデルの第4層(トランスポート層)とは?役割と身近な例

OSI参照モデルの第4層(トランスポート層)のアイキャッチ画像

OSI参照モデルの第4層(トランスポート層)は、パソコンの中の「どのアプリあての通信か」をポート番号で区別し、データを確実に、または速く届けるための層です。TCPとUDPという2つのプロトコルが代表です。

この記事では、トランスポート層の役割、TCPとUDPのちがい、ポート番号、TCP/IPモデルでの位置づけ、つながらないときの確かめ方を解説します。

OSI参照モデルの第4層トランスポート層を強調した7層図と、その役割・身近な例
目次

トランスポート層とは?役割をひとことで

1台のコンピューターに届いた通信を、ポート番号(443番・22番・53番)で正しいアプリへ振り分けるイメージ図

第3層(ネットワーク層)のIPは、データを「どのコンピューターまで」届けるかを受け持ちます。でも、1台のコンピューターの中では、ブラウザ、メールソフト、チャットアプリなど、たくさんのアプリが同時に通信しています。トランスポート層は、届いたデータを正しいアプリに渡し、アプリどうしの通信(エンドツーエンドの通信)を成り立たせる役割をもちます。

RFC 1122でも、トランスポート層はアプリケーションのためにエンドツーエンドの通信サービスを提供する層とされ、主なプロトコルとしてTCPとUDPが挙げられています。

  • アプリの区別:ポート番号で、どのアプリ(サービス)あてかを見分ける
  • 確実に届ける(TCP):届いたかを確認し、足りないものは送り直し、順番をそろえる
  • 流れの調整(TCP):相手やネットワークが受け止められる量に合わせて、送る速さを調整する
  • 手軽に速く送る(UDP):確認や送り直しをせず、少ない手順で送る

TCPとUDPのちがい

TCPUDP
正式名Transmission Control Protocol(RFC 9293)User Datagram Protocol(RFC 768)
つなぎ方最初に接続を作る(コネクション型)接続を作らずに送る(コネクションレス型)
確実さ届いたかを確認し、失われたら送り直す。順番もそろえる届くことや重複しないことを保証しない
手順の多さ多い(そのぶん確実)少ない(そのぶん軽くて速い)
データの呼び方(PDU)セグメントデータグラム
向いている用途の例Webページ(HTTP/1.1・HTTP/2)、メール、ファイル転送、SSHDNSの問い合わせ、音声・動画の通話、オンラインゲーム、QUIC

RFC 768はUDPについて、最小限の手順でメッセージを送るためのもので、届くことや重複しないことは保証されないとしています。順番どおりに確実に届けたいアプリはTCPを使うように、とも書かれています。

TCPの「3ウェイハンドシェイク」

TCPの3ウェイハンドシェイク。SYN、SYN+ACK、ACKの3回のやりとりで接続ができる図

TCPは、データを送る前に、相手と次の3回のやりとりで接続を作ります。RFC 9293では、これを3ウェイハンドシェイクと呼んでいます。

  1. 送る側:「つなぎたいです」(SYN)
  2. 受ける側:「わかりました。こちらからもつなぎたいです」(SYN+ACK)
  3. 送る側:「わかりました」(ACK)

このあとでデータのやりとりが始まり、終わるときはFINというしるしを使って接続を閉じます。

UDPの上で確実さを作るQUIC

最近は、UDPの上に確実な通信や暗号化のしくみを自分で組み立てるQUIC(RFC 9000)も使われています。RFC 9000はQUICを「UDPを使った、多重化された安全なトランスポート」と位置づけています。HTTP/3はこのQUICの上で動きます。「UDP=確実ではない」という基本を知ったうえで、その上に工夫を重ねる方法もある、と覚えておくとよいでしょう。

ポート番号とは

ポート番号は、0〜65535までの番号で、「そのコンピューターの、どのサービスあてか」を表します。IPアドレスが建物の住所なら、ポート番号は部屋番号のようなものです。

番号の範囲は、RFC 6335で次の3つに分けられています。

範囲呼び方説明
0〜1023システムポート(ウェルノウンポート)よく使われるサービスに割り当てられた番号
1024〜49151ユーザーポートIANAにより、さまざまなサービスに割り当てられる番号
49152〜65535ダイナミックポート割り当てられず、通信のたびに一時的に使われる番号

よく見る番号の例としては、HTTPの80番、HTTPSの443番、SSHの22番、DNSの53番などがあります。番号とサービスの対応は、IANAの登録簿で公開されています。

家のルーターで「外から来た通信のうち、このポート番号あてのものを、この機器へ回す」という設定をするのがポートフォワードです。くわしくはポートフォワードとは?自宅サーバー・SSHで使う手順と注意点で解説しています。

TCP/IPモデルではどこにあたる?

RFC 1122が定めるTCP/IPの4つの層では、OSIのトランスポート層はそのままトランスポート層にあたります。名前も役割もほぼ同じなので、対応がいちばんわかりやすい層です。TCPやUDPのヘッダーには送信元と宛先のポート番号が入り、その外側を第3層のIPのヘッダーが包みます。

ファイアウォールとトランスポート層

パケットフィルタリング型やステートフルインスペクション型のファイアウォールは、IPアドレス(第3層)に加えて、ポート番号やTCPの接続の状態(第4層)を見て、通すか止めるかを決めます。「443番だけ通す」のようなルールは、第4層の情報を使ったものです。種類ごとのちがいはファイアウォールの重要性と仕組みを徹底解説でくわしく紹介しています。

よくあるトラブルと確かめ方

よくある原因

  • サーバー側でサービスが起動していない(そのポートで待ち受けていない)
  • ファイアウォールでそのポート番号あての通信が止められている
  • ポート番号のまちがい(例:HTTPSなのに80番につないでいる)
  • ポートフォワードの設定ミス(転送先の機器やポートがちがう)

コマンドで確かめる(Linuxの例)

次のコマンドは、自分のパソコンの状態を表示したり、相手のポートに一度つないでみたりするだけの確認用です。宛先には、自分が管理するサーバーや、ふだん使っている公開サービスを指定してください。

ss -tuln

自分のパソコン(またはサーバー)が、どのポートで待ち受けているかを一覧で表示します。-t がTCP、-u がUDP、-l が待ち受け中のもの、-n が番号のまま表示、という意味です。サーバーで「Webサーバーを起動したのに443番が一覧にない」なら、サービスの起動や設定を疑います。

curl -v https://example.com/

-v を付けると通信の途中経過が表示されます。Connected to example.com (…) port 443 と出れば、第4層(TCPの接続)までは成功しています。ここで止まって時間切れになる場合は、ファイアウォールや経路を疑います。

nc -zv 192.168.1.20 22

nc(netcat)が入っている環境では、指定したポートにTCPでつながるかだけを確かめられます。例は、家のLANの自分のサーバー(192.168.1.20)のSSH(22番)につながるかを見るものです。自分が管理していない機器に対して、たくさんのポートを順番に試すような使い方はしないでください。

よくある質問

TCPとUDP、どちらが優れている?

どちらが上ということはなく、用途による使い分けです。確実さが大事なWebページやファイル転送はTCP、多少欠けても速さや遅れの少なさが大事な通話やゲームはUDP、という選び方が基本です。

ポート番号は変えてもいい?

サービスによっては、設定で待ち受けるポート番号を変えられます。その場合、つなぐ側も同じ番号を指定する必要があります。ただし、番号を変えるだけで安全になるわけではないので、認証や更新などの対策も合わせて行いましょう。

「L4ロードバランサー」とは?

IPアドレスとポート番号(第4層までの情報)を見て、通信を複数のサーバーに振り分ける装置やサービスのことです。HTTPの中身(URLなど)まで見て振り分けるものは、L7ロードバランサーと呼ばれます。

まとめ

  • トランスポート層は、ポート番号でアプリを区別し、アプリどうしの通信を成り立たせる層
  • TCPは確実さ重視(3ウェイハンドシェイク、送り直し、順番の整理)。データの呼び方はセグメント
  • UDPは手軽さ・速さ重視で、届くことを保証しない。データの呼び方はデータグラム
  • ポート番号は0〜65535。0〜1023はシステムポート(RFC 6335)
  • TCP/IPでも「トランスポート層」。確かめるときは ss -tuln、curl -v を使う

前の層は第3層(ネットワーク層)、次の層は第5層(セッション層)です。どちらもシリーズの記事で解説しています。

OSI参照モデル シリーズ記事

このシリーズでは、OSI参照モデルの全体像と、7つの層を1つずつ解説しています(各記事は順に公開予定です)。

参考資料

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次