📚

OSI参照モデルとTCP/IPについて

2021/02/14に公開

自分用ノート。(この記事の内容をみて勉強しない方がいいです)

プロトコル

異なるコンピュータ同士がネットワークを通じて通信するための約束事のこと。

OSI参照モデル

ISO(国際標準化機構)が通信プロトコルの設計の指標として定めたもの。このモデルによって通信に必要な機能を階層化することで複雑な通信プロトコルを単純化できる。
あくまでプロトコルやインターフェースの設計指標であるため、プロトコルを指定しているわけではない。

7 アプリケーション層
6 プレゼンテーション層
5 セッション層
4 トランスポート層
3 ネットワーク層
2 データリンク層
1 物理層

アプリケーション層

利用されるアプリケーションの中で通信に関係する部分を定めている。
送信するデータ内容をヘッダに含める。
例)メールソフト、送り元では宛先は何か、メール本文は何かをヘッダに含める。送り先では受け取ったメッセージを読み込み、失敗した場合などはエラーメッセージを返す。

プレゼンテーション層

データの表現方式を「コンピュータ特有の表現方式」<=>「ネットワーク全体で共通の表現方式」に変換する。
データを変換する際の符号化方式をヘッダに含める。
例)Microsoft Word、送り元で作成したファイルが送り先のコンピュータで読み込めない。
=> 送信の際にネットワーク共通のファイル形式に変換、受信側は受け取る際に自分が読み込めるファイル形式に変換する。

セッション層

どのようにデータを送れば効率がいいか、データ送信方法はどうするかを決める。
データをどのような手順で送信するかをヘッダに含める。
例)5つのメッセージの送り方にはコネクションを5つ用意して並列送信する、一つのコネクションで順番に送信するなど様々な方法があり、それを検討しなければならない。

トランスポート層

コネクションの確立や切断を行うホスト間の論理的な通信手段を作り、データ転送の信頼性を担保する。この際、実際にデータを送信する処理はネットワーク層以下が担当する。
データの信頼性を保証するために、データを識別する印などの情報をヘッダに含める。
例)データが一部届かなかった時に、その事を受信側が送信側に伝える。送信側はデータを再送する。

ネットワーク層

ネットワークで接続されたホスト間のデータ送信を行う。
宛先のアドレス情報などをヘッダに含める。

データリンク層

通信媒体で直接接続された機器同士のデータ送信を行う。ネットワーク層は全区間、データリンク層は分割された区間ごと。
送信先の機器のアドレスなどをヘッダに含める。

物理層

データの0, 1を電圧や光のパルスに変換して、物理的な通信媒体に流し込む。

TCP/IP

TCP, IPに加えそれらを利用したプロトコルなどを含むプロトコル群。
OSI参照モデルが概念として存在するのは、TCP/IPが普及したため。TCP/IPもOSI参照モデルもネットワーク通信の機能を階層化しているが、TCP/IPの方が実装面で効率的かつ現実的。
パケット交換技術の実用性を試験するために誕生したARPANET(のちのインターネット)というネットワークで用いられたプロトコル。
上記に加え、1980年代に広く利用されたOSであるBSD UNIXでTCP/IPが実装されたことからTCP/IPは広く利用されるようになった。

インターネット

ARPANETから発展し、全世界を接続しているコンピュータネットワーク。TCP/IPはインターネットを利用するために実装されたプロトコルである。

4 アプリケーション層
3 トランスポート層
2 インターネット層
1 ネットワークインターフェース層

ネットワークインターフェース層

イーサネットなどのデータリンクを利用して通信するためのインターフェースとなる階層。NICを動かすためのデバイスドライバ。
OSI参照モデルの1、2層に該当する。

インターネット層

OSI参照モデルのネットワーク層に該当する。インターネット層ではIPが使用される。

  • IP(Internet Protocol)
    ネットワークを跨いでパケットを配送し、インターネット全体にパケットを送り届けるためのプロトコル。
    IPアドレスによってホストを識別する。
    パケットが相手ホストに到達しなくても再送を行わない信頼性のないパケット交換プロトコル。
  • ICMP(Internet Control Message Protocol)
    IPパケットの配送中に何らかの異常が発生して、パケットが転送できなくなった際に送信元に異常を知らせるプロトコル。
  • ARP(Address Resolution Protocol)
    パケットの送り先の物理アドレス(MACアドレス)をIPアドレスから取得するプロトコル。

トランスポート層

アプリケーションプログラム間の通信を実現するための階層。OSI参照モデルのトランスポート層に該当する。
コンピュータ内部では複数のプログラムが動いており、どのプログラムとどのプログラムが通信しているかを識別するためにポート番号を用いる。

  • TCP(Transmission Control Protocol)
    コネクション型で信頼性のあるトランスポート層のプロトコル。
    両端のホスト間でデータの到達を保証する。
    コネクションを確立/切断するだけで制御のためのパケットを約7回やりとりするため、少量のデータ転送では無駄が多くなる。
    ネットワークの利用効率を向上するために複雑な仕組みがたくさん組み込まれているため、ビデオ会議などの音声・映像データを一定間隔で一定量転送する通信には向いていない。
  • UDP(User Datagram Protocol)
    コネクションレス型で信頼性のないトランスポート層のプロトコル。
    データがちゃんと到達したか等は確認されないので、それらが必要な場合はアプリケーション内で実装する必要がある。
    パケット数の少ない通信や、ブロードキャスト、マルチキャスト通信やマルチメディア通信に向いている。

アプリケーション層

OSI参照モデルのセッション層以上に当たる。

  • www(World Wide Web)
    クライアント/サーバ型のアプリケーション。
    Webブラウザを通してインターネット上の情報を見ることができる。
    ブラウザとサーバの間の通信で使われるプロトコルがHTTP(HyperText Transfer Protocol)で送信に使われる主なデータフォーマットがHTML(HyperText Markup Language)である。

パケットの送信処理

TCP/IPではデータ送信時に上位層から、受信時に下位層からデータの解析を行う。

  1. アプリケーション層の処理
    アプリケーション層ではまず、データの符号化が行われる。OSIのプレゼンテーション層に相当する。その後データを送信する。
    データを送信する際、メールをまとめて送信するのかそのまま送信するのかなど、通信のコネクションをいつ確立して転送するかを管理する機能はOSIのセッション層に相当する。
  2. トランスポート層の処理
    信頼性のあるデータ送信を行うためアプリケーション層から渡せれたデータにTCPヘッダを付ける。
    TCPヘッダには各ホストのポート番号、パケットのデータが何バイト目のデータなのかを示すシーケンス番号、データが壊れていないことを保証するチェックサムが含まれる。
  3. インターネット層の処理
    トランスポート層までのデータを一つのデータとする。
    TCPヘッダの前にIPヘッダを付ける。
    IPヘッダには各ホストのIPアドレス、IPヘッダに続くデータがTCPなのか、UDPなのかを示すプロトコルタイプが含まれる。
    IPパケットが完成したら、**経路制御表(ルーティングテーブル)**をみてIPパケットを次に受け渡すルータやホストを決定する。そしてその機器が接続されているネットワークインターフェースのドライバにIPパケットを渡して実際の送信処理をしてもらう。
    通信先の機器のMACアドレスがわからない場合はARPを利用して調べる。
    MACアドレスがわかったら、IPパケットとMACアドレスをイーサネットドライバ(ネットワークインターフェース層)に渡す。
  4. ネットワークインターフェース層(イーサネットドライバ)の処理
    インターネット層までのデータを一つのデータとする。
    IPヘッダの前にイーサネットヘッダを付ける。
    イーサネットヘッダには各MACアドレスとイーサネットヘッダに続くデータのプロトコルを示すイーサネットタイプが含まれる。
    また送信処理中にFCSがハードウェア上で計算され、イーサネットトレイラとしてパケットの最後につけられる。このFCSはノイズなどによりパケットが破壊されたことを検出するためのものである。

Discussion