🍰

OSI参照モデルを調べてみた

2023/04/01に公開

はじめに

祝zenn初投稿🎉 ということで
エックスポイントワンでエンジニアしてます、まみたすです。
まだまだ新人エンジニアで、体系的にITの知識を得たいと思い、基本情報技術者試験の勉強していたところ、ネットワークの分野が、業務でも重要なのに「ムズカシイ...」と感じたので、問題でもよく出題されるOSI参照モデルについて調べてみました。
この内容は、グループ会社のスタジオディテイルズとのエンジニア交流会でも発表させていただきました。

1. 概要

プロトコルとOSI参照モデル

ネットワークを通じてコンピュータ同士がやり取りするための約束事をプロトコルといいます。プロトコルには様々な種類があり、それらを7階層に分けたのがOSI参照モデルです。
OSI参照モデルが定義されるまでは、ルールがなかったため、各メーカーがそれぞれのネットワークアーキテクチャを採用しており互換性がありませんでした。
1977年から1984年にかけてOSI参照モデルが定義され、ルールが統一されたことでどの国でもメーカーが異なっても、正しく通信できるようになりました。
ISO(国際標準化機構)が策定したOSI参照モデルは、実際の通信システムでは使われず、代わりに広くTCP/IPの階層モデルが使用されています。ただし、OSI参照モデルはネットワーク通信の基本的な考え方として重要であり、基本情報の問題でも頻出なので理解しておく必要があります。

2. OSI参照モデルにおけるデータの流れ

カプセル化と非カプセル化

実際、どのような流れでデータのやり取りが行われるのでしょうか。

送信側

送信側では、情報は上位層から順に処理され、各層が処理した情報はヘッダとしてデータの前に付加されます。
上位層の処理情報をヘッダとして下位層で包み込んでいくことをカプセル化といいます。具体的には、レイヤ7~レイヤ2でカプセル化を行い、レイヤ1でビット列のデータが電気信号となって送信されます。

受信側

受信側では、電気信号を下位層から順に処理していきます。レイヤ1で電気信号をビット列に戻し、レイヤ2ではL2ヘッダをもとに処理した上でL2のヘッダ情報を取り除き、レイヤ3へ引き渡します。下位層から上位層にいくにつれて、各層のヘッダを取り外していくことを非カプセル化といいます。レイヤ2~レイヤ7で非カプセル化を行うことで、最終的にアプリケーション上でもとのデータを受け取ることができます。

宅配便で例えると、荷物を梱包(カプセル化)して送り、受け取り側は梱包したダンボールなどを取り除いて(非カプセル化)荷物を受け取るというイメージです。

3. 各層の役割

アプリケーション層

アプリケーション層では、利用者が使うアプリケーションが通信できるようにするために、ルール(プロトコル)を定めます。
Webサイトを閲覧するには「HTTP」、メール送信には「SMTP」、ファイル転送には「FTP」など、それぞれの通信に適したプロトコルが用意されています。
これらのルールが決まっていることで、クライアント(送信側)とサーバ間(受信側)で問題なく通信できます。

プレゼンテーション層

プレゼンテーション層では、コンピュータ同士のデータ表現形式の違いを補正し、データを正しく表現することが役割です。
文字コードが異なっていると文字化けが発生してしまうように、データをどう「0」「1」で表現するのかルールを決める必要があります。文字に限らず画像や音楽などもデータ形式を統一する必要があります。
また、データの暗号や復号もプレゼンテーション層が担当しています。

セッション層

セッション層では、セッション(通信が始まってから終わるまでの一連の流れ)を管理し、プログラム間の会話の制御を行います。
通信の順番がおかしくならないように管理し、同期を行っていることで、例えば、AさんがBさんに手紙を送ったときに、Bさんに手紙が届く前にBさんがAさんに手紙を返してしまうような会話(返信)が成立しない状況にならないよう制御しています。

トランスポート層

トランスポート層は、送信元から送られたデータを確実に送信先に届けることができるよう、データ転送の信頼性を提供します。
この層には、TCPUDPという2つのプロトコルがあります。
TCPは通信相手とコネクションを取りながらデータを送信するため、正しくデータを送受信できる信頼性は高いですが、その分速度は遅めです。
一方、UDPは通信相手とコネクションを取らずにデータを送信するため、リアルタイム性があり、速度も早いですが、正しくデータを送受信できるとは限りません。使用例としてはライブ配信や音声通話がありますが、音声が途切れたとしてもリアルタイム性が重視されていますよね。
Webページをやり取りするためのプロトコルであるHTTPは、そのバージョンによりTCPかUDPで構築されるか異なっており、HTTP、HTTP/2はTCP、HTTP/3はUDPで構築されていて、HTTP/3はGoogleやFacebookなどでも採用されています。

ネットワーク層

ネットワーク層は、送信元のコンピュータから送信先のコンピュータまで、どのルートを経由して通信すればいいかを選択し、実際に選択したルートでデータを運びます。宅配便が住所を利用して荷物を届けるように、IPアドレスと呼ばれるインターネット上の住所を利用してデータを目的地まで届けることができます。

データリンク層

データリンク層は、同じ種類の通信媒体(LANケーブル、光ケーブル、無線など)で直接つながっている同一ネットワークの間で、正確にデータをやり取りする役割を担います。この層では、コンピュータの識別番号であるMACアドレスが使用されます。

物理層

物理層は、LANケーブルは何を使うか、コネクタはどんな形にするかなど、物理的・電気的な規格を決める役割を担います。また、ビットで表されたデータをLANケーブルなら電気信号、光ケーブルなら光信号、無線LAN(Wi-Fi)なら無線に変換する役割もあります。

4. 代表的なネットワーク装置

NIC(Network Interface Card)

コンピュータをネットワークに接続するために必要な拡張カードで、あらゆるネットワーク機器(スマホ、PC、ルータ、ブリッジetc)に搭載されています。
データ(ビット)を電気信号などに変換してケーブル上に流す、受け取る役割があります。

LANケーブル

NICで変換した電気的信号を、他の機器につなぐために必要な物理的ケーブルです。

リピータ

LANケーブルの限界距離を超えてしまうと信号が弱くなってしまい、まともに通信することができないのですが、リピーターを間に挟むことで、弱くなった信号を増幅させ、より長い距離の通信ができるようになります。例えるなら延長コードのような役割です。
リピータを複数にまとめたリピータハブも存在します。

ブリッジ

ブリッジはデータリンク層(第2層)の中継機能を提供し、セグメント間の中継役としてMACアドレス情報を確認し、その先に目的のMACアドレス情報となる装置があればパケットを転送します。
セグメントとは、論理的に1本のケーブルがつながっている範囲のことです。
複数のブリッジをまとめたスイッチングハブ(レイヤ2スイッチ)も存在します。
先述したリピーターハブが無条件にポート放出なのに対し、スイッチングハブは宛先MACアドレスのコンピュータが接続されているポートだけにパケットを転送することができます。

ルーター

ルーターはネットワーク層(第3層)の中継機能を提供し、異なるネットワーク間の中継役としてパケットの宛先IPアドレスを確認し、最適な経路へとパケットを転送します。家に置いている人も多いのではないでしょうか。
同じネットワーク内で通信をする場合は、ブリッジが転送可能ですが、ネットワーク外への通信を行う場合は、ルーターが必要になります。
ルーティングテーブルと呼ばれる経路情報を元に、最適な経路を選択(経路選択・ルーティング)します。
インターネットのような膨大な数のネットワークが接続されている場合、目的のネットワークまでルータを何台も経由することもあります。

ゲートウェイ

ゲートウェイはネットワーク層(第3層)以上においてプロトコル変換による中継機能を提供します。ネットワーク双方で使っているプロトコルの差異を相互変換することで、通信を行えるようにします。広義ではネットワーク間の通信を中継する仕組みの総称としても使われます。

各層と周辺機器のまとめ

試験問題にもよく出るのでまとめてみました。

補足:ルーターのモードの違い

ここまでで、「あれ、家にルーターはあるけどブリッジやゲートウェイはないな...🤔」と思いませんか。
一般的にルーターという商品を買うと、ブリッジやゲートウェイの機能が全部のせになっていて、ルーターモード、ブリッジモードなどモードの切り替えが可能になっています。

例えば、光回線終端装置(ONU)という光回線でのインターネット接続に必要な装置がルーター機能を持っている場合、ルータモードがオンのルーターがあると、二重ルーターになってしまい通信速度が不安定になることがあります。
ONUがルーター機能を持っている場合は自動的にルーター自身がブリッジモードに設定されるようになっています。無線LANルーターの場合は、無線LANアクセスポイントとして使用することを指します。
逆にルーター機能を持つ装置がない場合はルーターモードに設定されています。

5. 実践

これまでの教科書通りの説明だと「言ってる意味はわかるんだけどイメージが湧かないよ〜😮‍💨」となっていたので、OSI参照モデルの内容が生活や業務にどのように影響しているか考えてみました。

自分のネットワークの設定を確認する

ここではネットワーク設定からネットワーク層とデータリンク層の違いを確認していきます。

下のキャプチャのルーター欄のIPアドレスに注目してください。
無線LANルーターを介してPCとiPhoneが接続されているため、IPアドレスが同じになっていて、同一ネットワークであることがわかります。
ネットワーク層の中継を担うルーターは、IPアドレスを見て異なるネットワーク同士の転送はできますが、同一ネットワーク内にあるデバイスを区別することはできません。


PCとiPhoneのルーターのIPアドレスが一致

そこでデータリンク層が端末ごとに固有であるMACアドレスを見て、同一ネットワークの中の個体判定をしてくれます。


PCとiPhoneのMACアドレスは異なっている

VPCでネットワーク構築

VPCはAWS上に仮想ネットワークを作成できるサービスです。

普段、ルーターの電源を入れればネットに繋がるという体験をしていると思います。
一方、VPCではルーターの内部で起こっていることを一つ一つ設定しているので、ネットワーク接続の仕組みを紐解いていくことができます。

VPC作成

IPv4 CIDRでプライベートIPアドレスの範囲を指定します。
/16は前から16桁までは固定で、残り16桁のIPアドレス範囲を割り当てたコンピュータを同時に起動できる状態を指します。
これでVPCというネットワークの塊が1つできました。


192.168.0.0/16の範囲のVPCを作成

サブネット

VPCの中の小さなネットワークのグループのことで、アベイラビリティゾーンというデータセンターの中に作成します。
アベイラビリティゾーンは各リージョンの中に2つ以上存在し、一つが使用不可になってもサービスが稼働できる仕組みになっています。
先ほどVPC作成時に設定したIPアドレス範囲の中で、さらにサブネットのIPアドレス範囲を設定します。
サブネットは同じVPC内に複数作成できるのでIPアドレス範囲が被らないように設定します。



192.168.1.0/24と192.168.2.0/24の範囲のサブネットを作成

インターネットゲートウェイ

インターネットとVPCをつなぐ仮想ルーターです。
ゲートウェイにアタッチされたVPC(ルーター)は外界(インターネット)につながる出入り口が置かれた状態になる。

ルートテーブル

VPC内のサブネットで通信するための経路を定義するものです。
ルートテーブルには、サブネットで使用する送信先(IPアドレス)と、その送信先に対する次のターゲット(次に進むネットワーク機器)の情報が含まれます。
VPC内のネットワークからインターネットへの通信を行うために、全ての宛先(0.0.0.0/0)をインターネットゲートウェイに向ける設定にしています。
localは、VPC内のネットワークをさしています。

ルートテーブルは、サブネットに関連付けられ、サブネット内のリソースに適用されます。
192.168.1.0/24のサブネットはインターネットとつながり、192.168.2.0/24はつながっていない状態になりました。

外界と通信できないサブネットを作成している理由としては、外からアクセスできること自体が危険で、 VPC内のネットワークで問題ないものはパブリックにしないほうが安全だからです。
つまり、「インターネットから直接アクセスさせたくないもの」はプライベートサブネットに、「インターネットから直接アクセスさせたいもの」はパブリックサブネットに設置する必要があります。

これでやっとインターネットに接続できる状態を構築できました!!

おさらい(ルーターの作り方)

  • VPCでIPアドレス範囲を決めて枠組み
  • サブネットでVPC内部を分割
  • ゲートウェイでインターネットとの出入り口を作る
  • ルートテーブルで経路を定義し、サブネットごとに外界につなげるかどうか設定

ルーターの内部で自動的に起こっていることを全部手動でやるとこんな感じになります。

完成イメージ

まとめ

今回、本やネット記事で調べたり、先輩エンジニアやChatGPTさんに教えてもらって、全くわかってなかったOSI参照モデルに関連するネットワークの知識が少しついたような気がします。
基本情報の試験もこの分野は自信持って解けそう!と思えました。
取り上げた内容はネットワーク分野の一部に過ぎないですし、ネットワークへの理解が深まることで、日頃の業務の解像度は高くなると思うので今後も勉強していきたいです。

参考

GitHubで編集を提案
エックスポイントワン技術ブログ

Discussion