OSI参照モデル 深掘り解説:第4層 トランスポート層

Index

  1. トランスポート層とは何をする層か
  2. 第3層と第4層の違い
  3. TCPとUDPの考え方
  4. ポート番号とソケットの見方
  5. TCPの3ウェイハンドシェイクとコネクション管理
  6. 再送制御、順序制御、フロー制御、輻輳制御
  7. UDPが使われる場面と注意点
  8. NAT、ファイアウォール、ロードバランサとの関係
  9. トランスポート層の障害切り分け
  10. まとめ

OSI参照モデルの第4層は「トランスポート層」です。

第3層のネットワーク層が「宛先のネットワークまで、どの経路で届けるか」を担当するのに対して、第4層は「どのアプリケーション同士の通信として扱うか」「届いたデータをどのように整えるか」を担当します。

Webサイトを見る、メールを送る、DNSで名前解決する、オンライン会議をする、ゲームサーバーへ接続する。こうした通信では、IPアドレスだけでなく、TCPやUDP、ポート番号が必ず関わっています。

この記事では、初心者の方にもイメージしやすいように、第4層を「TCPとUDP」「ポート番号」「コネクション」「トラブルシュート」の4つの視点から深掘りします。

1. トランスポート層とは何をする層か

トランスポート層の役割を一言で表すなら、端末同士の通信を、アプリケーション単位で届けるための交通整理です。

第3層では、IPアドレスを使って「どの端末へ届けるか」を判断します。しかし、1台の端末の中では、ブラウザ、メールソフト、SSHクライアント、チャットアプリなど、複数のアプリケーションが同時に通信しています。

このとき重要になるのが、次の3つです。

  • 通信方式を決めるTCPまたはUDP
  • アプリケーションを識別するポート番号
  • 通信の状態を管理するコネクションやセッションの考え方

第4層は「この通信はどのアプリケーション宛てか」「確実に届ける必要があるか」「順番を整える必要があるか」を扱います。

2. 第3層と第4層の違い

第3層と第4層はセットで出てくることが多いですが、見ている対象が違います。

観点第3層 ネットワーク層第4層 トランスポート層
主な目的宛先ネットワークまで届けるアプリケーション間の通信として届ける
主な識別子IPアドレスポート番号
主なプロトコルIPv4、IPv6、ICMPTCP、UDP
データ単位パケットセグメント、データグラム
判断内容次にどの経路へ転送するかどのアプリケーションへ渡すか、通信をどう制御するか

ざっくり言うと、第3層は「住所まで届ける」、第4層は「その建物のどの窓口に渡すか」を決めるイメージです。

たとえば、WebサーバーのIPアドレスが 203.0.113.10 だったとしても、それだけではHTTP、HTTPS、SSH、メール受信など、どのサービスへ接続したいのかは分かりません。そこで 443/tcp のようなポート番号を使って、HTTPSの通信であることを示します。

3. TCPとUDPの考え方

トランスポート層で代表的なプロトコルがTCPとUDPです。

TCPは、通信相手と接続を確立し、データの到達確認や再送、順序制御を行います。一方、UDPは接続確立を行わず、必要最小限の情報でデータを送ります。

観点TCPUDP
接続確立ありなし
到達確認ありなし
再送制御ありなし
順序制御ありなし
速度・軽さ制御が多い分、重め軽い
主な用途Web、メール、SSH、ファイル転送DNS、VoIP、動画配信、オンラインゲーム

TCPは「確実に、順番通りに届けたい通信」に向いています。Webページやファイルの中身が途中で欠けたり、順番が入れ替わったりすると困るためです。

UDPは「多少の欠落よりも、遅延の少なさを優先したい通信」に向いています。音声通話やリアルタイムゲームでは、古いデータをあとから再送するより、新しいデータを素早く処理する方が自然な場合があります。

4. ポート番号とソケットの見方

ポート番号は、端末上のアプリケーションやサービスを識別するための番号です。

よく使われるポート番号には、次のようなものがあります。

ポート番号プロトコル主な用途
20、21/tcpTCPFTP
22/tcpTCPSSH
25/tcpTCPSMTP
53/tcp、53/udpTCP、UDPDNS
80/tcpTCPHTTP
123/udpUDPNTP
443/tcpTCPHTTPS

通信をより正確に見るときは、IPアドレスとポート番号を組み合わせます。

  • 送信元: 192.168.1.10:51524
  • 宛先: 203.0.113.10:443
  • プロトコル: TCP

このように、IPアドレス、ポート番号、プロトコルを組み合わせた通信の端点をソケットと呼びます。

WebブラウザがHTTPSサイトへ接続する場合、宛先ポートは通常 443/tcp です。一方、送信元ポートはクライアント側が一時的に使うエフェメラルポートになります。

5. TCPの3ウェイハンドシェイクとコネクション管理

TCPでは、データを送る前にコネクションを確立します。この手順が3ウェイハンドシェイクです。

手順パケット意味
1SYNクライアントが接続開始を要求する
2SYN/ACKサーバーが要求を受け取り、応答する
3ACKクライアントが応答を確認し、接続が成立する

この流れにより、通信する双方が「これからTCP通信を始める」という状態を共有します。

接続が成立すると、TCPはシーケンス番号やACK番号を使って、どこまでデータを受け取ったかを確認します。通信が終わるときは、FINやACKを使って接続を閉じます。強制的に接続を切る場合はRSTが使われることもあります。

  • SYNを送っているがSYN/ACKが返らない
  • SYN/ACKは返っているがACKが続かない
  • 通信途中でRSTが返っている
  • 接続はできるがデータ転送が進まない

「ポートが開いているか」だけでなく、どの段階で止まっているかを見ると、原因を切り分けやすくなります。

6. 再送制御、順序制御、フロー制御、輻輳制御

TCPが信頼性の高い通信を実現できるのは、いくつかの制御を組み合わせているためです。

制御役割見るポイント
再送制御届かなかったデータを送り直すパケットロス、タイムアウト、重複ACK
順序制御分割されたデータを正しい順番に並べるシーケンス番号、ACK番号
フロー制御受信側が処理できる量に合わせるウィンドウサイズ
輻輳制御ネットワーク混雑を避けるスループット低下、再送増加

たとえば、回線品質が悪い環境では、パケットロスが増えてTCPの再送が発生します。再送が増えると、見かけ上の通信速度は大きく低下します。

また、受信側の処理が追いつかない場合、TCPウィンドウが小さくなり、送信側が一度に送れる量が制限されます。この場合、回線帯域に余裕があってもスループットが出ないことがあります。

トランスポート層を理解すると、「回線は速いはずなのに、なぜアプリケーションが遅いのか」を分解して考えられるようになります。

7. UDPが使われる場面と注意点

UDPはTCPのような接続管理や再送制御を持ちません。その分、ヘッダが小さく、処理もシンプルです。

  • DNSの問い合わせ
  • NTPによる時刻同期
  • 音声通話やビデオ会議
  • 動画ストリーミング
  • オンラインゲーム
  • QUICを使うHTTP/3

UDPは「信頼性がないから劣っている」というものではありません。必要な制御をアプリケーション側で持たせたり、多少の欠落を許容したりする設計では、UDPの軽さが大きな利点になります。

ただし、ファイアウォールやNAT環境では、UDP通信の扱いに注意が必要です。UDPは明確な接続終了がないため、NATテーブルやセッションテーブルのタイムアウトが短く設定されていると、通信が途中で途切れることがあります。

8. NAT、ファイアウォール、ロードバランサとの関係

トランスポート層は、NAT、ファイアウォール、ロードバランサと深く関係します。

NATでは、内部端末のプライベートIPアドレスとポート番号を、外部向けのIPアドレスとポート番号へ変換します。多くの家庭用ルーターや企業ネットワークでは、この仕組みによって複数端末が1つのグローバルIPアドレスを共有しています。

機器・機能第4層で見るもの代表的な用途
NATIPアドレスとポート番号内部端末と外部通信の対応付け
ファイアウォールプロトコル、送信元・宛先ポート、状態通信許可・拒否
ロードバランサTCP/UDPセッション、ポート複数サーバーへの振り分け

ファイアウォールでは、送信元IPアドレス宛先IPアドレスプロトコル送信元ポート宛先ポート を組み合わせて通信を制御します。この組み合わせは5タプルと呼ばれることがあります。

通信障害を調べるときは、IP到達性だけでなく、「対象ポートが許可されているか」「戻り通信が許可されているか」「NAT変換後のポートが正しく対応付いているか」を確認する必要があります。

9. トランスポート層の障害切り分け

トランスポート層の問題を調べるときは、まず第3層までの到達性と、第4層のポート到達性を分けて考えます。

おすすめの流れは次の通りです。

  1. 宛先IPアドレスへ到達できるか確認する
  2. DNS名ではなくIPアドレスで接続を試す
  3. 宛先ポートが正しいか確認する
  4. TCPの場合、接続確立できるか確認する
  5. UDPの場合、アプリケーション側の応答やログを確認する
  6. ファイアウォールやセキュリティグループの許可設定を確認する
  7. NATやロードバランサのセッション状態を確認する
  8. パケットキャプチャでSYN、ACK、RST、再送の有無を見る

Windows、macOS、Linuxでは、次のようなコマンドがよく使われます。

目的WindowsmacOS / Linux
TCP接続確認Test-NetConnection <host> -Port 443nc -vz <host> 443
通信中ポート確認netstat -anoss -tanpnetstat -an
名前解決確認nslookupdignslookup
パケット確認Wireshark、pktmontcpdump、Wireshark
経路確認tracerttraceroute

ここで大切なのは、ping が成功しても、目的のアプリケーションポートへ接続できるとは限らないことです。

ICMPは通っていても、443/tcp がファイアウォールで拒否されていればHTTPS通信はできません。逆に、ICMPが拒否されていても、TCPの対象ポートは正常に使える場合があります。

10. まとめ

トランスポート層は、IPで届いた通信をアプリケーション単位の通信として成立させるための層です。

第4層を理解すると、単に「サーバーにつながらない」と見るのではなく、「IP到達性はあるか」「対象ポートは開いているか」「TCPハンドシェイクは完了しているか」「RSTや再送が出ていないか」「UDPのセッションタイムアウトが起きていないか」と分解して考えられるようになります。

最後に、今回のポイントを整理します。

  • 第4層は、TCPやUDPを使ってアプリケーション間の通信を扱う
  • 第3層はIPアドレス、第4層はポート番号を見る
  • TCPは接続確立、到達確認、再送、順序制御を行う
  • UDPは軽量で、リアルタイム性を重視する通信に向いている
  • ソケットはIPアドレス、ポート番号、プロトコルを組み合わせた通信の端点
  • NAT、ファイアウォール、ロードバランサは第4層情報を使って通信を制御する
  • ping だけでなく、対象ポートへの接続確認が重要

第4層がわかると、ネットワークとアプリケーションの境界が見えやすくなります。

第3層が「目的地までの道を選ぶ技術」だとすれば、第4層は「目的地のどの窓口へ、どの通信方式で届けるかを整える技術」です。OSI参照モデルの中でも、アプリケーション障害とネットワーク障害の切り分けに直結する層なので、ぜひTCP、UDP、ポート番号の考え方から押さえていきましょう。

参考リンク

コメントを残す

Smart Logic Tech Blogをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む