書籍でネットワークについて学習したのでまとめてみました。
#ネットワークとは
複数のコンピューターを接続して、相互に通信できるようにした状態。通信回路やケーブルなどを通してコンピューター同士を接続することで、情報の共有や処理の分散、メッセージの交換などが可能になる。コトバンク
##なぜネットワークが必要なのか
メールを送る、ファイルを共有する、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層でこれらの役割を担うプロトコルがTCPとUDPである。
####コネクションの確立
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層ではアプリケーションのデータの表現形式を規定している。
例えばテキストデータをやりとりする場合、データの送信者と受信者で**データ形式が異なっていると文字が送れなくなってしまう。**そこでデータ形式をプレゼンテーション層で変換し、差異をなくすことでデータ通信を可能にする。
ほかにもデータの圧縮や変換も行うことができる。
###第7層 アプリケーション層
第7層はアプリケーションによってネットワークサービスを提供するレイヤーである。
アプリケーション層ではアプリケーションの目的に応じたプロトコルを提供する。
アプリケーション | プロトコル |
---|---|
ブラウザー | HTTP |
FTPクライアント | FTP |
メールクライアント | SMTP |