ネットワークの基本について(TCP/IP、OSI参照モデルなど)

スキルアップ

ネットワークとは

コトバンクさんのサイトから引用すると

複数のコンピューターを接続して、相互に通信できるようにした状態。通信回路やケーブルなどを通してコンピューター同士を接続することで、情報の共有や処理の分散、メッセージの交換などが可能になる。

コトバンク

身近なものでは、LANケーブルやWi-Fiを使ってネットワークに接続してますね。

なぜネットワークが必要なのか

普段私たちはコンピューターでメールを送る、ファイルを共有する、HPを公開する、HPを見る、プリンターを共有して使うといったことを行っていますが、これらのそれぞれのユーザーがもつリソースをデータによってコンピューター同士で共有することを実現するためにネットワークが必要なのです。

ではネットワークが必要な理由はわかりましたが、ネットワークではどのようにデータを送受信しているのでしょうか。

OSI参照モデルによるデータ通信

ネットワークではデータを送る側と受け取る側が使用するルールを決めてデータをやりとりしており、そのルールをプロトコルと呼びます。データ通信に必要なプロトコルは1つではなく複数のプロトコルで行われます。

複数のプロトコルによるデータ通信の説明にはOSI参照モデルがよく使われます。OSI参照モデルはISO(国際標準化機構)がデータ通信の標準化のために作ったもので、プロトコルを7つの階層構造で説明しています。

OSI参照モデル

つまり、 OSI参照モデルの各層ごとにそれぞれ役割とルールが存在し、ネットワークによるデータ通信は段階ごとの複数のプロトコルで実現されています。

ではOSI参照モデルを使ってどのようにデータがやりとりされるのでしょうか。

データの送信者は第7層から第1層へ向かってデータを送信し、それぞれの階層の役割をこなしながら受信者側の第1層の物理層にデータが届きます。
そして、データの受信者側は第1層でデータを受け取り、第7層に向かってそれぞれの階層の役割をこなすことでデータを受信することができるようになります。

データについて

送信されるデータはデータ本体のみで送られるわけではなく、宛先、送信元のアドレスなどデータ以外のものも一緒に運ばれます。
データにデータ以外のものをくっつけることをカプセル化といい、カプセル化されたデータをPDU(プロトコルデータユニット)といいます。
カプセル化で追加されるデータは、データの前につけるときはヘッダー、後ろにつけるときはトレーラーと呼ばれます。

各層の役割について

では、各層の役割についてみていきましょう。
データ通信ではOSI参照モデルの各層の役割をこなしながらデータを送受信します。

第1層 物理層

物理層では電気信号の条件、ケーブルの端子といった通信の最も基本的な電気的、物理的なルールが決められます。コンピュータを繋ぐケーブルと、ケーブルに流す信号のルールを決めることで宛先にデータを届けられるようになります。実際にデータを信号にして流すのはこの層です。

第2層 データリンク層

データリンク層では信号が届く範囲でのデータ転送についてルールを決めています。この範囲をセグメントといいます。

セグメントは、LANケーブルによってハブやスイッチで繋がれている範囲、または専用線によって繋がれているコンピューターとルーター間、ルーターとルーター間のことを指します。

データリンク層のルールにはLAN用とWAN用がありますが、より身近なLAN用のルールではイーサネットが使われます。イーサネットとはLANに関する物理的な規格であり、LANケーブルそのものを指すこともあります。

イーサネットではデータにイーサネットヘッダーとイーサネットトレーラーをつけてイーサネットフレームにカプセル化します。イーサネットヘッダーにはあて先MACアドレス送信元MACアドレスの情報がはいっており、これを使って送信先のコンピューターにデータを届けることができます。

第3層 ネットワーク層

第2層がセグメント内でのデータのやりとりであったのに対し、第3層ではセグメント間でのデータのやりとりを行います。セグメントは狭義の意味で「ネットワーク」と言い換えることができます。ネットワーク間のデータのやりとりとは、ルーターを超えて別のネットワークへデータを送ることです。このネットワーク間でデータをやりとりすることをインターネットワークといい、インターネットワークにより、離れた位置にあるコンピュター同士がデータを通信できるようになります。

インターネットワーク

アドレッシングとルーティング

ネットワークを超えた通信ではMACアドレスでは送信先の位置情報がわからないため、どのネットワークのどのコンピュータといった位置情報が必要になります。また、位置情報に加えてどのネットワークを経由して届けるのかも決める必要があります。
位置情報、つまりアドレスをどのように書き、どのように割り振るかをアドレッシングといい、
どのネットワークを経由してデータを届けるか決めることをルーティングといいます。

アドレッシングとルーティングによるインターネットワークを行うプロトコルがIP(インターネットプロトコル)と呼ばれるプロトコルです。

第3層ではデータにIPヘッダーをつけて情報を付加します。IPヘッダーの情報で最も重要なものがIPアドレスで、アドレッシングによりインターネットワークでのデータ通信に必要なあて先IPアドレス送信元IPアドレスを特定することができます。インターネットワークではあて先IPアドレス、送信元IPアドレス、あて先MACアドレス、送信元MACアドレスの4つのアドレスを特定することでデータ通信ができるようになります。

あて先IPアドレスと送信元IPアドレスがわかったら、ルーティングを決定するのがルータです。
インターネットワークではあて先にデータを届ける場合、複数のネットワークを経由してデータを届けますが、どのネットワークを経由していけばあて先に届くかを知る必要があり、それを決めるのがルータです。
ルータはルーティングプロトコルで近接するルータと情報を交換し合い、複数ある経路から最適なものを選んで経路を決定します。

第4層 トランスポート層

第1〜3層は「あて先へデータを届ける」役割でしたが、第4層では「データを確実に届ける仕組み」と「アプリケーションの識別」を行います。
第4層でこれらの役割を担うプロトコルがTCPUDPです。

コネクションの確立

TCPは「データを確実に届ける仕組み」としてコネクションの確立を行います。第3層でルーティングにより経路が確立されたことでデータを届けることができるようになりましたが、「確実に」データが届くのかは不明です。

そこでデータ通信を行う前に確認のやりとりを行うことで、相手に「確実に」データが届くのかを確認します。

AとBでコネクションを確立する場合、AからBへデータ転送の許可要求を出し、要求を受けたBはそれに対する許可を送信元に伝えます。これで「A→B」へデータが通信できることが確認でき、次は反対にBがAにデータ転送許可要求を出します。そしてAはそれに対する許可をBに伝えることで双方向のデータ通信が確立されたことになります。
コネクションの確立は3回のやりとりを行うのでスリーウェイハンドシェイクと呼ばれます。

スリーウェイハンドシェイク

アプリケーション間通信

第4層ではコネクションの確立のほかに「アプリケーションの識別」を行います。

第3層でアドレッシングとルーティングによりコンピュータとコンピュータでデータ通信ができるようになったが、実際にデータ通信を行なっているのはアプリケーションです。データ通信を行う際にブラウザやメールソフトでデータをやりとりした場合、IPアドレスとMACアドレスだけではどのアプリケーションでデータ通信を行なったのかはわかりません。そこでポート番号を使ってそれぞれのデータがどのアプリケーションから送信され、あて先はどのアプリケーションかを決定します。

したがって実際にデータ通信を行う場合は、IPアドレスとポート番号を使って「どのコンピューターの、どのアプリケーション」かを判断します。

よく使われるアプリケーションは「ウェルノウンポート番号」という事前に決められたポート番号が割り振られているので、この番号を使ってデータ通信を行うことができます。

UDP

TCPがスリーウェイハンドシェイクで確認しながらデータ通信を行うのに対して、UDPはデータが正しく届いたかの確認は行いません。データが正しく届く保証がありませんが確認の手間が省け、必要な情報もTCPより少ないためデータのサイズが小さくなりその分データを早く送信することができます。

このため、UDPは確実性よりもスピードが優先される動画配信サービスなどで使われます。

第5層 セッション層

第5層ではデータ通信での処理がセッション、つまり会話として成り立つように制御しています。

例えば認証やログイン、ログアウトなどはアプリケーション間で
・「認証してください」→「認証します」
・「ログインさせてください」→「ログインします」

といった会話形式で言葉をやりとりされます。この言葉のやりとりが会話として成り立つように制御しています。

第6層 プレゼンテーション層

第6層ではアプリケーションのデータの表現形式を規定しています。

例えばテキストデータをやりとりする場合、データの送信者と受信者でデータ形式が異なっていると文字が送れなくなってしまいます。そこでデータ形式をプレゼンテーション層で変換し、差異をなくすことでデータ通信を可能にしています。

ほかにもデータの圧縮や変換も第6層で行うことができます。

第7層 アプリケーション層

第7層はアプリケーションによってネットワークサービスを提供するレイヤーです。
アプリケーション層ではアプリケーションの目的に応じたプロトコルを提供します。

アプリケーションプロトコル
ブラウザHTTP
FTPクライアントFTP
メールクライアントSMTP

参考書籍

コメント