しくみかん

しくみかんは、世の中にある様々なもののしくみをわかりやすく説明するサイトです。

インターネットのしくみ(2/4)~ データ編 ~ 

      2016/12/15

インターネットのしくみ

~ データ編 ~ 

多くの人で共用するために

同じデータリンクの中では、交通整理のルールが決められていました。

 

交通整理の目的は「同じ道をみんなで効率よく利用すること」です。

もしも大きな1つのデータだけが、「開かずの踏切」のように
ずっと道を独占し続けていては、みんなで利用できません。

 

大きなデータがネットワークを独占していては、多くの人による共用ができない

 

そこでIPでは、大きなデータは一度に送らず、分割して
その合間に他の人も道を通れるようにしています。

 

IPでは、大きなデータをパケットに分割して、その合間に他のデータも通れるようにしている

 

パケット+ヘッダ=フレーム

IPで、分割されたデータをパケットと言います。

パケット(packet)とは本来「小包」のこと。

 

パケットがデータリンクへ送られると、パケットの先端には、
そのデータリンクで決められた荷札データ(ヘッダがつけられます。

※同時に、パケットの後ろにトレーラというデータもつけられますが、ここではわかりやすくするため省略します。

 

パケットデータと、このデータリンクの荷札データ(ヘッダおよびトレーラ)とを合わせて、
フレームと言います。

パケットにデータリンクのヘッダ(やトレーラ)をつけたものがフレーム

パケットのつくり

パケットには、データリンク毎に、あとからヘッダ(荷札)がつけられます

 

このため、パケットをつくる時はまだ、データリンクのことは考えません

途中でどんなデータリンクを通るかは気にせずに
「誰宛てのパケットか」だけわかるようにしておけば良いのです。

 

「誰宛てのパケットか」がわかるようにするため、
パケットも、データの先頭にIPヘッダ(荷札)をつけたつくりになっています。

 

パケットも、送りたいデータの先頭にIPヘッダが付けられている

 

TCP

インターネットで、さらにもう一つのキーワードになるのがTCPティーシーピー>です。

※ TCP = Transmission Control Protocol

 

TCPはプロトコルスタックの中でIPの上にあるプロトコル

 

TCPは、プロトコルスタックの中で、IPの上にあるプロトコルです。

IPとセットでTCP/IPティーシーピーアイピー>と言われます。

 

TCPは、上のアプリ層とのスムーズなデータの受け渡しを可能にします。

また、IP以下の層と、きちんと管理したデータの受け渡しを行います。

 

具体的には、アプリによってデータの窓口(ポート)を分けておき、
複数のアプリを使っていても、そのデータが必要なアプリに正しく届くようにしています。

各ポートは、ポート番号で区別されるようになっています。

 

TCPでは、アプリごとにポートを分けている

 

また、TCPはデータリンクプロトコルと同様に、データの送信速度を調整したり、
中身をチェックして再送要求をしたりもします。

 

送信側のTCP

実は、IPの手前のTCPの段階で、データは細かく分割されています。

このTCPで分割されたデータをTCPセグメントと言います。

 

データはTCPでTCPセグメントに分割される

 

TCPセグメントの先頭にも、TCPヘッダをくっつけます。

 

TCPセグメントの先頭にはTCPヘッダがつけられている

 

TCPヘッダの中には、ポート番号分割したデータの整列番号などの、
データをきちんと管理するための情報を入れておきます。

 

TCPセグメントにIPヘッダ、データリンクのヘッダがつけられ送信される

 

受信側のTCP

受信側のデータリンクでフレームを受信すると、
ヘッダ以外の中身のデータ(パケット)を、そのままIPに渡します。

 

IPでパケットを受け取ると、
IPヘッダ以外の中身のデータ(TCPセグメント)をそのままTCPに渡します。

 

TCPでは、TCPヘッダの情報から、中身のデータを細かくチェックします。

 

TCPではTCPヘッダの情報から中身をチェック

 

壊れていたり、足りないデータがあれば、その再送を送信側に要求します。

 

壊れていたり、足りないデータがあれば、TCPはそのデータの再送を送信側に要求する

 

このため、TCPがデータを受け取る順番は元のデータの順とは限りません。

 

TCPは、TCPヘッダの情報を見て、データをきちんと元どおりに並べ直し、
分割する前の状態に戻してから、データをアプリに渡しているのです。

 

TCPは、分割する前の状態にきちんと戻したデータをアプリに渡す

 

サーバー

インターネットで使われているほとんどのアプリ通信サービス)は、
サーバークライアントという関係で通信が行われています。

 

サーバーとクライアントの関係

 

サーバーはサービスセンターで、クライアントはお客さんという意味です。

 

サーバーの正体はそのサービスセンター側の24時間対応のアプリであり、
クライアントは私たちが普段使っているパソコンやスマホ等のアプリです。

 

サーバーは、サービス毎に専門のアプリがあり、
ウェブサーバーメールサーバーなどの種類があります。

 

サーバーの窓口(ポート)にクライアントからの注文(リクエストと言います)があると、
サーバーがすぐにそのクライアントに対応してくれる…

 

という風に行われているのが、ウェブやメール等のインターネットの通信サービスです。

 

クライアントからサーバーにリクエストを送り、サーバーがそれに対応する

 

 

キャッシュ

サーバークライアントとの通信は、
まずクライアントからサーバーリクエストすることで始まります。

 

通常は、クライアントで持っていない情報だから、サーバーに聞くのですが、
短時間に同じことを何回も繰り返して聞くような人も、時々います。

 

キャッシュなしで繰り返しサーバーにリクエストを送るクライアント

 

しかしこういった利用の仕方は、サーバーにもネットワークにも負担です。

多くの人で共用するネットワークの利用の仕方としても、マナー違反です。

 

そこで、今聞いたばかりの情報を、忘れないように
クライアント内で記録しておくキャッシュが使われています。

 

キャッシュされた情報はクライアント内にあり、すぐ見ることができます。

それまで通信のやりとりにかけていた時間も節約できる効果があるのです。

 

キャッシュによって通信回数を最小限に抑えた効率の良いクライアント

 

ただし、多くの情報には賞味期限があり、古くなった情報は役に立たないこともあります。

 

キャッシュの賞味期限はサーバーまたはクライアントで設定され、
期限が切れたら、キャッシュは自動的に削除されます。

 

キャッシュが無い場合、クライアントはまたサーバーリクエストして、
最新の情報を仕入れられるようになっています。

 

まとめ

インターネットでは、いつでも多くの人が通信できるよう、データ細かく分割します。

 

TCPは、アプリIPとの間で、分割したデータをきちんと管理するためのプロトコルです。

 

送信側では、分割したデータの先頭に、TCPIPデータリンクの各ヘッダがつけられます。

 

受信側は、受信したデータの各ヘッダを見て、送信側アプリと同じデータに復元します。

 

インターネットの通信は、クライアントからサーバーへのリクエストで始まります。

 

同じデータのリクエストを繰り返さないよう、クライアント内にキャッシュを残します。

 

だからインターネットは…

同時に複数のアプリが通信していても、正しくデータを受け取れます。

 

いつでもみんなが使えるようにするため、その処理に時間がかかっています。

データを分割して、数々のヘッダを付ける
 
いくつものネットワークを通るルーティング
 
バラバラに届いたデータを復元する

 

これらすべてに少しずつ時間がかかっています。

 

無駄な通信を減らし、時間を節約するために、キャッシュが重要です。

 

期限切れ前のキャッシュのため、最新ではない情報を見ている場合もあります。

 

 

 

 - IT ,