OSI参照モデルの第7層(アプリケーション層)とは?役割と身近な例

OSI参照モデルの第7層(アプリケーション層)のアイキャッチ画像

※本記事にはプロモーションが含まれます。

OSI参照モデルの一番上にあるのが第7層(アプリケーション層)です。ブラウザでWebページを見る、メールを送る、URLからサーバーの場所を調べる、といった、私たちがふだん使うサービスの通信のルールがこの層にあたります。

この記事では、アプリケーション層の役割、HTTP・DNS・メールなどの身近な例、TCP/IPモデルでの位置づけ、Webサーバーやプロキシとの関係、よくあるトラブルと確かめ方を解説します。

OSI参照モデルの第7層アプリケーション層を強調した7層図と、その役割・身近な例
目次

アプリケーション層とは?役割をひとことで

ブラウザはHTTP/HTTPS、メールソフトはSMTP、アプリはDNSというそれぞれのプロトコルで通信するイメージ図

アプリケーション層は、アプリが「何を」やりとりするかのルールを決める層です。下の層が「どう運ぶか」を受け持ってくれるので、アプリケーション層は「このページをください」「このメールを届けてください」「この名前のIPアドレスを教えてください」といった、やりとりの中身に集中できます。

なお、ここでいう「アプリケーション」はブラウザなどのソフトそのものではなく、ソフトが使う通信のルール(プロトコル)のことです。ブラウザはアプリケーション層のプロトコル(HTTP)を使って通信する、と考えます。

アプリケーション層の身近な例

用途プロトコル身近な場面
Webページを見るHTTP/HTTPS(RFC 9110)ブラウザでサイトを開く、アプリがAPIを呼び出す
名前からIPアドレスを調べるDNS(RFC 1034・1035)www.example.com を入力すると、裏でIPアドレスを調べている
メールを送るSMTP(RFC 5321)メールソフトから送信する、サーバー間でメールを中継する
メールを受け取るIMAP、POP3メールソフトで受信箱を見る
ほかのコンピューターを操作するSSHサーバーにログインしてコマンドを打つ
ファイルを送るFTP、SFTPサーバーにファイルをアップロードする

RFC 1122は、アプリケーション層のプロトコルを、利用者に直接サービスを提供する「ユーザープロトコル」(Telnet、FTP、SMTPなど)と、名前の解決や管理など共通の機能を提供する「サポートプロトコル」(DNS、SNMPなど)の2種類に分けて説明しています。データの呼び方(PDU)は、一般に「データ」や「メッセージ」です。

HTTPのやりとり

ブラウザがGETリクエストを送り、Webサーバーがステータスコード付きのレスポンスを返す図と、主なステータスコード

HTTPは、ブラウザ(クライアント)がリクエストを送り、Webサーバーがレスポンスを返す、という形のやりとりです。レスポンスには、結果を表す3けたのステータスコードが付きます(RFC 9110)。

ステータスコード意味よくある場面
200 OK成功ページがふつうに表示された
301 Moved Permanently恒久的に移動したURLが変わり、新しいURLに転送された
404 Not Found見つからないURLのまちがい、ページが削除された
500 Internal Server Errorサーバー内部のエラーサーバー側のプログラムや設定の問題
503 Service Unavailable一時的に利用できないアクセス集中やメンテナンス中

Webサーバーとアプリケーション層

Webサイトを公開するには、HTTPのリクエストを受け取ってレスポンスを返すWebサーバーが必要です。自分でサーバーを用意して設定する方法のほかに、Webサーバーがすでに用意されたレンタルサーバーを借りる方法もあります。どちらの場合も、ブラウザとWebサーバーの間で行われているのは、アプリケーション層のHTTPのやりとりです。「ページが開かない」ときにステータスコードを見ると、問題がブラウザ側か、Webサーバー側かの見当がつけやすくなります。

まず手軽にWebサイトを公開してみたい人は、レンタルサーバーを使う方法もあります。

エックスサーバー

DNS:名前からIPアドレスを調べる

人がURLに書くのは www.example.com のような名前ですが、通信に必要なのはIPアドレス(第3層)です。DNSは、名前に対応するIPアドレスなどの情報を調べるしくみで、RFC 1034・1035で定められています。DNSが答えられないと、ネットワークがつながっていても「サイトが見つかりません」となります。

プロキシ・ファイアウォールとアプリケーション層

アプリケーション層の中身(URLやHTTPのヘッダーなど)を見て動くしくみもあります。

  • プロキシサーバー:ブラウザの代わりにWebサーバーへアクセスし、結果を中継する。HTTPの中身を見て、キャッシュしたり、アクセスを制限したりできる。くわしくはプロキシサーバーとは?仕組みとVPNとの違いで解説しています
  • アプリケーションゲートウェイ型ファイアウォール、WAF:通信の中身まで見て、あやしいリクエストを止める。IPアドレスやポート番号(第3〜4層)だけを見るファイアウォールとのちがいは、ファイアウォールの重要性と仕組みを徹底解説で紹介しています
  • L7ロードバランサー:URLのパスなどを見て、通信を複数のサーバーに振り分ける

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

RFC 1122が定めるTCP/IPの4つの層では、OSIのアプリケーション層はアプリケーション層にあたります。ただし、RFC 1122によると、TCP/IPのアプリケーション層は、OSIの上の2つの層(プレゼンテーション層とアプリケーション層)の機能をまとめたものです。また、TCP/IPには独立したセッション層もないため、一般に第5〜7層の役割をまとめてTCP/IPのアプリケーション層が受け持つと説明されます。

そのため、HTTPの中には文字コードの指定(Content-Type の charset)や圧縮の指定(Content-Encoding)、Cookieによるセッションの管理など、OSIでいえば第5〜6層にあたる役割もふくまれています。

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

よくある症状と原因

  • 「サイトが見つかりません」と出る:DNSで名前が引けていない(URLのまちがい、DNSの設定や障害)
  • 404が出る:URLのまちがい、ページの移動や削除
  • 500番台が出る:Webサーバー側の問題(プログラムのエラー、アクセスの集中、メンテナンス)
  • メールが送れない:送信サーバーの設定(サーバー名、ポート番号、認証)のまちがい

アプリケーション層の問題を調べる前に、下の層(IPアドレスがあるか、相手まで届くか)が問題ないかを先に確かめておくと、原因をしぼりやすくなります。

コマンドで確かめる

次のコマンドは、名前の問い合わせやWebページの取得を1回だけ行う確認用です。

dig www.example.com

DNSに名前を問い合わせ、結果を表示します。ANSWER SECTION にIPアドレスが出ていれば、名前は引けています。status: NXDOMAIN なら、その名前は見つかりませんでした。dig がない環境では nslookup www.example.com でも確かめられます。

curl -I https://www.example.com/

Webページの本文は取らずに、レスポンスのヘッダーだけを表示します。1行目の HTTP/2 200 や HTTP/1.1 404 Not Found のステータスコードを見ると、Webサーバーが何と答えているかがわかります。

curl -v https://www.example.com/ -o /dev/null

名前の解決、接続、TLS、HTTPのリクエストとレスポンスまで、やりとりの流れを順に表示します(本文は捨てます)。どの段階で止まっているかを見ると、どの層の問題かの見当がつきます。

よくある質問

HTTPとHTTPSは同じ層?

HTTP自体はアプリケーション層のプロトコルです。HTTPSは、HTTPをTLSで暗号化して送るしくみです。TLSは、役割としては第5〜6層に近いと説明されることが多いものの、OSIに合わせて作られたプロトコルではないため、資料によって扱いが異なります。

アプリケーション層=アプリのこと?

ちがいます。アプリケーション層は、アプリが使う「通信のルール」です。たとえば、ChromeもSafariも別のアプリですが、どちらも同じHTTPというアプリケーション層のプロトコルを使ってWebサーバーと通信します。

DNSはどの層?

DNSは、アプリケーション層のプロトコルです。RFC 1122では、名前の解決などの共通の機能を提供する「サポートプロトコル」の一つとして挙げられています。ふだんは意識しませんが、Webページを開く前に、ほとんどの場合DNSの問い合わせが行われています。

まとめ

  • アプリケーション層は、アプリが何をやりとりするかのルールを決める、OSI参照モデルの一番上の層
  • HTTP、DNS、SMTP、SSHなどが身近な例。HTTPのステータスコードは問題の見当をつける手がかりになる
  • プロキシ、WAF、L7ロードバランサーは、この層の中身を見て動く
  • TCP/IPのアプリケーション層は、OSIの第5〜7層の役割をまとめて受け持つ
  • 確かめるときは dig(名前の解決)、curl -I(ステータスコード)、curl -v(やりとりの流れ)を使う

前の層は第6層(プレゼンテーション層)です。OSI参照モデル全体の流れは、シリーズの全体解説の記事で紹介しています。

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

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

参考資料

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

この記事を書いた人

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

コメント

コメントする

目次