OSI参照モデルとTCP/IPの関係を整理する
概要
OSI参照モデルとTCP/IPの各階層の役割と、TCP/IPで実際に利用されている代表的なプロトコルについて整理した。
動機
プロトコル関連で用語が多すぎてわけがわからなくなったので、一度知識を整理したかった。
内容
OSI参照モデル
OSI参照モデルはISOが作成したネットワーク・プロトコルの理論モデルである。ネットワークの通信を7つの階層に分け、送信側は上位レイヤから順にヘッダ情報を付加して送信し、受信側は下位レイヤから順にヘッダ情報をデコードしていき最終的にデータが見れる形にする。ヘッダ情報を付加していくことをカプセル化と呼び、反対に情報をデコードしてヘッダを外すことを逆カプセル化(=非カプセル化)と呼ぶ。7つの階層には次のような名前がついている。
・物理層
・セッション層
・プレゼンテーション層
・アプリケーション層
物理層
実際に物理的な媒体を通して情報を伝達する層。光や電気信号、電波などを利用してコンピュータ内の「0」「1」を伝達する。コネクタやケーブルなどの規格も規定されている。
データリンク層
同一ネットワーク内のデータ転送を行う階層。誤り制御、回復制御、送受信のタイミングなどが規定されている。
ネットワーク層
異なるネットワーク間のデータ転送を行う階層で、送信元と送信先のエンド2エンド通信を確立する。ルーティングやコネクションの確立・開放などが規定されている。
トランスポート層
エンド2エンド通信の信頼性を確保する層。受信確認によってデータが確実に受信されるようにする。その他にも、順序制御、フロー制御、回復制御、データ多重化などデータ転送に必要な多くの機能が規定されている。
セッション層
受信したデータをアプリケーションごとに振り分ける。例外報告などの動作も規定されている。
プレゼンテーション層
データの表現形式を一致させる。表現形式の制御、変換、圧縮、暗号化などの方式が規定されている。
アプリケーション層
各アプリケーションで利用するデータの形式やルールを提供する。ファイル操作、メールなどのユーザに近い機能が規定されている。
TCP/IP
理論モデルとしてOSI参照モデルが存在しているが、実際に広く使われているのはTCP/IPというプロトコルである。OSI参照モデルではネットワーク通信を7つの層に分割しているのに対し、TCP/IPでは4つの層に分割している。4つの階層には次のような名前がついている。
・アプリケーション層
・インターネット層
・ネットワークインターフェイス層
ネットワークインターフェイス層
OSI参照モデルの物理層とデータリンク層に該当する。TCP/IPはネットワークインターフェイスに依存していないので、この層のプロトコルには自由度がある。
インターネット層
OSI参照モデルのネットワーク層に該当し、エンド2エンド通信を確立する。
トランスポート層
OSI参照モデルのトランスポート層に該当し、エンド2エンドの通信の信頼性を確保する。また、アプリケーションへのデータの振り分けも行っているので、セッション層の機能を果たしていると考えることもできる。
アプリケーション層
OSI参照モデルのセッション層、プレゼンテーション層、アプリケーション層に該当する。データをアプリケーションに合わせて変換し、機能を実現する。
TCP/IPで使われているプロトコル
TCP/IPの各層で利用されているプロトコルにはどのようなものがあるだろうか。上述の通りTCP/IPはネットワークインターフェイスに依存しないため、上位層3層においての代表的なプロトコルの紹介に留める。
IP(Internet Protocol)
インターネット層のプロトコルで、エンド2エンドの通信を実現する。カプセル化の際にデータの送信元と宛先を示すIPアドレスを示し、それに従ってルーティングを行うことで通信ができるようになる。
IPアドレスはネットワークを区別する識別情報で、ネットワークの位置を示すネットワーク部とホストを特定するホスト部が、インターフェイスに関連付けて決定される。アドレスは32bitの2進数であり、ネットワーク部とホスト部の区別がないので、その区別をするために区切りを示すサブネットマスクも同時に付与される。
また、IPアドレス自体は、グローバルIPアドレスとプライベートIPアドレスの2つに分類される。グローバルIPアドレスは世界で重複のないIPアドレスでNIC(Network Information Center)によって発行される。プライベートIPアドレスはイントラネット、LAN内でのIPアドレスであり、そのネットワーク内で一意に定まればよい。
ICMP(Internet Control Message Protocol)
インターネット層のプロトコルで、IPによるエンド2エンド通信ができているかどうかを確認する。データ送信の際にエコー要求を同時に送信し、それが返ってくれば正常に通信できているとみなす。
ARP(Address Resolution Protocol)
インターネット層のプロトコル。宛先にデータを送信する際には宛先のIPアドレスとMACアドレスが必要であるが、MACアドレスが不明なときがある。この際にはARPリクエストを送信して、該当のIPアドレスを持つホストのMACアドレスを問い合わせる。この動作をアドレス解決とよび、ARPはアドレス解決のためのプロトコルである。
TCP(Transmission Control Protocol)
トランスポート層のプロトコルで、データ送信の信頼性を確保する。通信の際にはTCPコネクションを確立して、データを送信。ACKフラッグでデータが送信されたことを確認し、きちんと送信されていたらシーケンス番号に従ってデータを再構成する。FTP、POP3、TELNETなどで利用される。
UDP(User Datagram Protocol)
トランスポート層のプロトコル。TCPとは違い確認無しでデータを送信する。通信の信頼性が低い半面、転送効率は良い。DNS、DHCP、NTPなどで利用される。
DNS(Domain Name System)
アプリケーション層のプロトコルで、Webサイトなどにアクセスする際にホスト名からIPアドレスを求めるのに使われる。この動作を名前解決と呼ぶ。
DHCP(Dynamic Host Configuration Protocol)
アプリケーション層のプロトコルで、TCP/IP設定の自動化に使われる。配布する設定情報(=DHCPプール)を登録したDHCPサーバを同じネットワーク上に準備しておく。クライアントはブロードキャストでDHCPサーバと通信を行い、対話的に設定を行う。なお、ルータのDHCPリレーエージェント機能などを利用することで、1つのDHCPサーバを複数ネットワークで使うこともできる。
HTTP(Hyper Text Transfer Protocol)
アプリケーション層のプロトコルで、ファイル転送に使う。ブラウザからリクエストをサーバに送り、そのレスポンスとしてファイルを取得する。FTPに比べると手間が少ない。
SMTP(Simple Mail Transfer Protocol)
アプリケーション層のプロトコルで、電子メールの送信に使う。メールサーバにSMTPコマンドを送り、その応答を見ながらデータを送信する。
POP3(Post Office Protocol version3)
アプリケーション層のプロトコルで、電子メールの受信に使う。電子メールサーバに問い合わせて、メール内容をダウンロードして読めるようにする。
IMAP4(Internet Message Access Protocol 4)
アプリケーション層のプロトコルで、電子メールの受信に使う。メールサーバ上でメールを読める。サーバ上でメール管理をすることで、複数デバイスでのメール管理が容易になる。ただしサーバ負荷は大きくなるのでその点は注意。
まとめ
ネットワークを考えるモデルとして、OSI参照モデルがある。TCP/IPは現在主流のプロトコルで、4つの階層の中でいくつかのプロトコルを組み合わせて通信を実現する。
参考書籍
「Gene:著 『ネットワークの基本と仕組み』ナツメ社 2018年」