HTTPの基礎を徹底解説:OSI参照モデルで理解するコンピュータ通信の仕組み
執筆:Cher Don
OSI参照モデル(Open Systems Interconnection)とは

本シリーズについて
この連載では、Web通信の基礎を段階的に解説していきます。
(第1部) DNSはどのように動作するのか?
(第2部) ネットワークスタックとOSIモデル 【今ここ】
(第3部) HTTPメソッドとフォーマット
(第4部) クライアントの識別
(第5部) Basic認証/Digest認証
(第6部) HTTPSとSSL/TLSの仕組み
OSIモデルの全体像
OSIモデル(Open Systems Interconnection Model)は、コンピュータシステムにおける電気通信を標準化した階層モデルです。このモデルは、特定の技術には依存せず、通信に関わる「階層(レイヤー)」に着目する点が特徴です。それでは、各レイヤーの役割を見ていきましょう。

一般的な5層構造のOSIモデル
1. アプリケーション層
接続が確立された後、アプリケーション同士がネットワーク越しにやり取りできるようにする層です。たとえば、Webブラウザ(アプリケーション)からサーバーへの通信がこれに該当します。この層で使われる代表的なプロトコルには、HTTPやTELNETなどがあります。
Hypertext Transfer Protocol(HTTP)
HTTPは、インターネット上でファイルを転送するための一連のルールです。ブラウザにURLを入力すると、ブラウザはそのWebページに対してHTTPリクエストを送信します。するとホスト側は、画像、テキスト、動画、スタイルシートやフォントといったページを構成するすべての要素を含んだWebページを返却します。
2. トランスポート層
ホスト間(端末間)のメッセージ伝送を担う層です。代表例としてTCPとUDPがあります。
Transmission Control Protocol(TCP)
TCPは最も広く使われるコネクション型プロトコルです。ネットワーク上の通信セッションを確立・維持する方法を定義しており、クライアントとホストの間のコネクション(ソケットと呼ばれます)を、3ウェイハンドシェイクによって確立します。

データを要求するユーザーは、まずSYNパケットをサーバーへ送り、同期(Synchronize)を要求します。サーバーはそれに対してSYN-ACKを返答し、パケットを確認(Acknowledge)したこと、こちらも接続したいことを伝えます。最後にユーザーがACKを送信することで、コネクションが確立されます。
TCPが広く採用されているのは、以下のような優れた特性を持つためです。
コネクション型通信
エンドポイント間でハンドシェイクを行い、データ交換前に接続を保証します。データはストリーム(パケット列)として送信されます。
信頼性
チェックサムによって、送受信されたデータパケットが同一であることを検証します。欠落や破損がある場合は、NACKメッセージを送信者に送り、パケットの再送を要求します。
順序制御
各パケットには番号が付与されて送信されるため、TCPは受信したパケットを正しい順序に並べ替えてからアプリケーションへ渡します。
フロー制御
データ送信レートを調整し、バッファのオーバーラン/アンダーラン(受信側の処理速度を超える送信、またはその逆)を防ぎながら効率を高めます。詳細は後述の「TCPスロースタート」のセクションで解説します。
多重化(マルチプレキシング)
同じソケット上で複数の情報ストリームを同時に送信できます。これはソケットの異なるポートを使って実現されます。マルチプレキシングとパイプライン処理の違いについては、記事の後半で詳しく説明します。
User Datagram Protocol(UDP)
UDPはTCPと似ていますが、コネクションレス型のプロトコルであり、まさにTCPの対極に位置します。そのため信頼性がなく、順序も保証されません。失われたパケットは再送されないため、データに抜けが生じる可能性があります。

しかし、この特性こそがリアルタイム性の高いアプリケーション、たとえばインターネット電話(VoIP)に適しています。3ウェイハンドシェイクなしで即座に送信できるため高速だからです。さらにVoIPでは、パケットが多少欠落しても人間の耳は短い音声の途切れにうまく対応できるため、実用上ほぼ問題になりません。
3. ネットワーク層
ネットワーク接続のためのデータ経路(ルーティング)を提供する層です。データパケットを、論理的に最適な経路でネットワーク上を移動させます。
Internet Protocol(IP)
IPはデータパケットの構造を定義し、送信元と宛先の情報をラベルとして付与します。送信元・宛先情報はIPアドレスとして表され、IPv4形式(例:104.16.121.127)またはIPv6形式(例:2001:db8:0:1234:0:567:8:1)があります。
4. リンク層/物理層
OSIモデルの最下層にあたる部分です。リンク層ではローカルエリアネットワーク(LAN)内での情報伝送を扱い、物理層では電気的・機械的な媒体を介して、符号語やシンボルという形で信号を伝送します。
経路の可視化
tracert google.comコマンドを使うと、クライアント側(あなたのPC)からホスト(google.com)までの通信経路を追跡できます。

上の例では、自分のデバイス192.168.1.254からルーター10.243.128.1を経由し、ポルトガルにあるインターネットサービスプロバイダ(ISP)などを通って目的地へ到達している様子がわかります。
補完関係にあるレイヤーたち
TCP/IPモデル

TCPは失われたパケットの再送を要求し、順序を整え直す
IPはあくまでパケットの構造に責任を持つだけです。パケットが破損したり失われたりしても、それを修復する仕組みはありません。そこで登場するのがTCPです。TCPはパケットに番号を付けて送信し、クライアント側では失われた・破損したパケットの再送を要求した後、受信したパケットを正しい順序に並べ替えます。
HTTP/TCPモデル
先に述べたように、HTTPはTCPハンドシェイクで確立された接続を通じてリクエストを送ります。では、両者はどのように補完し合っているのでしょうか?
HTTP永続接続(Persistent Connections)
1つのTCP接続上で複数のHTTPリクエスト/レスポンスをやり取りできる機能です。リクエストごとに新規接続を開く必要がないため効率的です。

永続接続時のレスポンス例
これはHTTPヘッダーのConnection: Keep-Aliveによって実現されます。デフォルトでは、アイドル状態が30秒続いた後にConnection: Closeを含むレスポンスを受け取ると、接続は閉じられます。
TCPスロースタート(Slow Start)
前述の通り、TCPはフロー制御をサポートしています。これはTCPスロースタートと呼ばれる仕組みによって実現され、ネットワーク輻輳(こんそう)を未然に防ぐ手法です。

送信側には輻輳ウィンドウ(CWND)、受信側には受信ウィンドウ(RWND)があります。データ量が輻輳ウィンドウや受信ウィンドウのサイズを超えると、それぞれバッファオーバーランやアンダーランが発生します。
これを防ぐため、送信側は最初に小さな輻輳ウィンドウ(CWND = 1)でパケットを送り、受信側の許容量を少しずつ探ります。
受信側がACKを返すたびに、送信側はパケット数を倍増させていき、ACKが届かなくなった時点で停止します。こうして最適なパケット数が判明すると、以降は他の輻輳制御アルゴリズムがその速度を維持します。
協調動作のまとめ
つまりTCPスロースタートは、接続が閉じられる前に最適なパケット数を見つけ出します。これにより、バッファオーバーラン(送信が受信能力を超えること)のリスクなく、ホストからクライアントへのデータ転送量を最適化できるのです。
その他のHTTP機能
HTTPパイプライン処理(Pipelining)

HTTP/1.1で導入されたこの機能は、レスポンスを待たずに同じソケット上で複数のリクエストを一度に送信できるものです。ただし、新しいHTTP/2ではTCPマルチプレキシングに置き換えられました。
両者の決定的な違いは次の点です。どちらも同じソケット上で複数のリクエストを一度に送れますが、パイプライン処理ではレスポンスが順序どおりに返される必要があります。つまり、リクエストが(A, B, C)の順なら、Bが正しく配信されない限りCを受け取れません。
一方、マルチプレキシングでは順序は問われないため、より速い配信が可能になります。
これらの手法は、冪等(べきとう)なメソッドとの相性が最高です。冪等メソッドとは、リクエスト回数にかかわらず同じ結果を返すメソッドのことで、たとえばWebページを何度リクエストしても同じページが返ってくるようなケースが該当します。
並列接続(Parallel Connections)
Webページを開いたとき、動画バー、サムネイル、ボタンなど複数の要素が同時に読み込まれるのを見たことはありませんか?

複数コンポーネントの同時読み込み|写真提供:Cloudflare Mobile SDK
これは並列接続によって実現されています。複数のTCP接続を同時に確立することで、各コンポーネントを順番待ちではなく同時に読み込めるのです。
ただし、一見速く見えても、クライアント側の帯域幅には限りがあります。すべての並列接続が限られた帯域を奪い合うと、各コンポーネントの読み込みは比例して遅くなり、総合的な読み込み速度の面ではメリットゼロになることもあります。
まとめ
OSIモデルを活用すれば、ネットワークの全体像と、ハードウェアからソフトウェアまで各層がどう相互作用するのかを容易に理解できます。
一般に、OSIモデルは優れた教材であると同時に、トラブルシューティングの参考資料としても有用です。また設計の場面でも、各層の機能を精査するため、層ごとに設計を吟味する思考を促してくれる点で役立ちます。
今回はOSI 5層モデルを扱いましたが、識別・認証・データ暗号化まで含むOSI 7層モデルも存在します。
以上がHTTP入門シリーズの第2部でした。DNSサーバーの重要性を扱った第1部もぜひご覧ください。次回の第3部では、HTTPリクエストの構造を掘り下げていきます!
こんにちは!Cher Donです。現在はデータサイエンスを専攻しており、Paralegal BotのCTOを務めています。私のウェブサイトは下記からどうぞ。お読みいただきありがとうございました!
Piqued;
質の高いコンテンツを提供。難しい概念をわかりやすく解説します。私たちも同じ悩みを経験してきました… www.piqued.co
無料でプログラミングを学びましょう。freeCodeCampのオープンソースカリキュラムは、これまで4万人以上を開発者として就職させてきました。さあ、始めましょう!
-
開いているTCP/UDPポートを見つける方法|Windowsでの確認手順を徹底解説
この記事にたどり着いたということは、実行しようとしているアプリケーションが「ポートがブロックされている」とエラーを出しているか、あるいはネットワーク上の特定の「ポート」を開いたままにしておくことがセキュリティ上の問題になり得ると耳にしたことでしょう。 どちらの理由であっても、この記事を読み終える頃には、ポートとは何かを理解し、自分のパソコンで開いているポート・閉じているポートを確認する方法までマスターできるはずです。 ネットワークポートとは何か? まず知っておくべきなのは、ここで扱うポートは仮想のものであるという点です。ルーターやテレビ、ゲーム機、パソコンなどにある物理的なネットワーク端子と
-
Sky Broadbandに障害発生か?原因の確認方法と対処法を徹底解説
Skyは、イギリス全土で最も人気のあるTV、ブロードバンド、モバイルサービスプロバイダーのひとつです。しかし、大企業であってもトラブルが起こらないわけではありません。 例えば、2025年10月20日(月)、Sky BroadbandおよびSky Talkに問題が発生していることを同社が公式に確認しました。さらに、AWSサーバー上で稼働するSnapchat、Slack、Amazon Prime Video、Alexaなどのウェブサイトやサービスにも障害が波及しています。 ここでは、「Skyがダウンしているのか?」と疑問に思ったときに、状況を確認するための方法をご紹介します。 Skyはダウンしてい