《ネットワーク》パケットの流れる仕組みをわかりやすく解説

ネットワーク

パケットについて

パケットとは

通信ケーブルなどを通じて、相手に届けたいデータがあるとします。実際の通信ではこれらのデータを1回で送るにはデータが大きすぎることが殆どなので、このデータをシーケンス番号という識別値を割り当ててパケットと呼ばれる単位に分割します。これがパケットの正体です。

パケットのフローを説明する上での登場人物

では次は今回の本題である、ブラウザからwebサーバーまでのパケットの流れを解説していきます。順番としては

・クライアント側

・クライアント側LAN

・インターネット

・Webサーバー側LAN

・Webサーバー

の上から下の流れにそって解説していきます。

クライアント側でのパケットの流れ

ブラウザ

ユーザーからURLを受け取り、そのURLを解析します。これによってHTTPメッセージが作成され、socketライブラリにこのHTTPメッセージを渡します。

Socket ライブラリ

まずはsocketについて解説します。socketAPIです。どのようなAPIかというとBSDUNIXから派生したAPIです。BSD(Berkeley Software Distribution)というのはカリフォルニア大学バークレー校が作ったOSにちなんでこのような名前が付いています。今日のネットワークではこのAPIを使って通信を行うのがディファクトスタンダードになっています。socketライブラリはインターネットを通じてAPI通信を行う上で必要となるプログラムで構成されています。

TCPソフトとIPソフト

TCPは通信相手ときちんと通信を行う為のプロトコルです。データを送る前に通信相手と通信ができる状態なのかを確認し、確認が取れたらクライアント側が送信したいデータ、パケットを送信します。途中でパケットがちゃんとに届かなかったりするとパケットを再送するようにクライアント側に通知する機能も持ちます。送信したデータを全て送信したら、通信相手にデータを全て送信したことを通知して、通信のやり取りが終了します。またTCPには順番がバラバラで届いたパケットをシーケンス番号を元にして元のデータに復元する機能も持ちます。これらの機能がTCPです。TCPの技術的な部分に関しては別記事にまとめてありますので、興味があったらみてください。

TCPとUDPとは?|初心者向けに簡単に解説
TCPをわかりやすく解説TCPとはtransmission control protocol の略で直訳すると「送信制御プロトコル」です。TCPは名前の通り通信のプロトコルです。特徴はデータのやりとりを行う場合、相手と通信が取れたことを確認

IPはTCPによって分割されたパケットを送信するプロトコルのことを指します。IPによって通信相手にデータを運ぶことができるのです。TCPとIPの役割をまとめると以下のようになります。

TCP:データを分解・組み立てを行うプロトコル

IP:目的地までデータを搬送するプロトコル

LANドライバ

IPソフトからパケットを受け取り、LANアダプタに渡す制御をLANドライバは行います。ちなみにLANドライバはソフトウェアです。ハードウェアでありません。このLANドライバはPCに正しくインストールされていないとIPソフトから送られてくるパケットをLANドライバに渡すことができずインターネットに接続することができません。

LANアダプタ

LANアダプタは送信パケットを電気信号に変換するためのハードウェアです。この変換された電気信号はツイストペアケーブルに送られます。クライアント側で行う処理はここまでです。

クライアント側LANでのパケットの流れ

ツイストペアケーブル

ツイストペアケーブルは電線2本を捻って1つにしたケーブルのことを指します。先程変換された電気信号がこのケーブル内を流れます。

リピータハブ

ツイストペアケーブルはリピータハブに接続されます。リピータハブはこのツイストペアケーブルから送られてくる電気信号を、コピーしてリピータハブについているポートからばら撒くことができます。なので複数の端末で電気信号を共有したい時に用いられます。

スイッチングハブ

リピータハブから受け取った電気信号をパケットに復元します。その結果、パケットの宛先MACアドレスが判明し、スイッチングハブに登録されているMACアドレスが存在すれば、そのMACアドレスに紐づけられたポートにその受け取ったパケットを流します。

ルータ (ADSLモデム一体型)

スイッチングハブから送られてくるパケットをルーターは受け取り、そのパケットに含まれる宛先IPアドレスをどのポートに送れば良いのかをルーターに登録されている経路表を用いて決めます。該当するポートがあればそのポートにパケットを送ります。

ADSLモデム

ADSLは電話回線を用いたデジタル伝送方式のことを指します。日本はもともと電話回線がほとんどの自宅に繋がっていたので、一般家庭にインターネットが広まったとき、その回線としてこの電話回線を利用されたことから普及が広まりました。ADSLは上りと下りという通信方向の向きを持ちます。利用者から電話局に向かう通信を上り、電話局から利用者に向かう通信を下りと言います。ADSLモデムはパケットをADSL信号(電気信号)に変換する変換器のことを指します。ルーターから送られてきたパケットを1度、ATMセルに分割します。このATMセルを電気信号に変換し、電話回線経由で電話局のDSLAMに送ります。

電話局でのパケットの流れ

DSLAM

DSLAMは電話局に設置されています。局用集合モデムとも呼ばれます。データは電話回線経由で送られてくる為、電気信号で送られてきます。この電気信号をATMセルに復元する機能をDSLAMは持ちます。この復元されたATMセルはプロードバンドアクセスサーバーに送信されます。

ブロードバンド・アクセス・サーバー

プロードバンドアクセスサーバーはATMセルをパケットの形に戻します。パケットに戻したので宛先IPアドレスが取得できます。この宛先IPアドレスをプロードバンドアクセスサーバー自身が持つ経路表と照らし合わせ、次に送信するべきルータに向けてデータを送信します。この地点でパケットはインターネットの中核側に突入しています。

インターネット中核部分

インターネット中核部分には数多くのルーターが設置されています。これらルーターが宛先IPアドレスを元に順次中継を繰り返して、最終的にはサーバー側のファイヤーウオールにたどり着きます。

Webサーバー側LANでのパケットの流れ

ファイヤーウォール

インターネットを経由して、送られてきたパケットはようやくここでサーバー側にたどり着きます。このファイヤーウォールは空港の検問のようななもので、パケットを審査します。ここで不審なパケットが混じっていた場合はそのパケットを遮断し、そうでなければキャッシュサーバーに渡します。

キャッシュサーバー

ユーザーがリクエストしたページがキャッシュサーバー内に保存されていた場合、キャッシュサーバーがそのページの情報をユーザーに返します。保存されていない場合はwebサーバーに向けてパケットを送信します。

Webサーバーでのパケットの流れ

TCP/IPソフト

LANアダプタ、LANドライバを介して、TCP/IPにパケットが送られてきます。ここではIPヘッダとTCPヘッダを検査します。以上がなければ、パケットをHTTPメッセージに変換・復元します。この復元されたHTTPメッセージはsocketライブラリに送られます。

Socketライブラリ

SocketライブラリはHTTPメッセージをwebサーバーに転送する機能を持ちます。

Webサーバー

Socketライブラリから受け取ったHTTPメッセージを解析します。HTTPメッセージには依頼内容が含まれており、依頼内容に基づいたデータを確保して、ユーザーに送ります。

筆者
筆者

今回の記事の内容は以上で終了です。最後まで読んでくれてありがとうございました。Twitterもやってるのでフォローしてくれたら嬉しいです!

番外:その他おすすめの記事

開発がもっと快適に、楽しくなるアイテムを紹介します。アイテム1つで開発の楽しさが全然変わるので、良いアイテムにはじゃんじゃんお金を投資すると良いですよ。

おすすめアイテム①

自分はオフィス次の2点の座布団と背もたれクッションを利用してます。姿勢が安定し、お尻への負担が激減します。オフィスにいるのに自宅で作業しているような感覚になるので気に入ってます。また疲労感もかなり減るので費用対効果が非常に高いアイテムです。

おすすめアイテム②

ブックスタンドみなさん使ってますか?PCを打ちながら参考書見る時に手で抑える必要がなくなるので非常に便利です。自分も購入した時なんでいままで使ってなかたんだろうと後悔したのでまだ持ってない方は買っておくと作業効率があがります。

おすすめアイテム③

PCスタンド、magic keyboard、magic mouseを購入してから、開発効率があがり、身体的負担が減って快適に開発ができるようになりました。

エンジニアの基礎知識・教養

別の記事でエンジニアとして知っておくべき技術本についてまとめました。初心者には最低限読んでおいて欲しい技術本をまとめました。例えば「リーダブルコード」などは技術力の高いエンジニアなら必ず過去に読んでいる本だと思います。

時短アイテム!日々の生活の質を上げる

日常生活における無駄を省く表品をまとめました。1日無駄な作業時間が10分発生するとしたら1年間で3600時間もその無駄な作業に時間を費やすことになります。このような魔の作業を消し去ってくれる商品をまとめました。。

気軽にお声かけください

このような形でほぼ毎日、情報発信を行ってます。技術的な部分で誤っている点などもあるかもしれません。その様な部分を発見した方はTwitterのDMなどで知らせていただければ凄い嬉しいです。また自身自身のエンジニアのネットワークを広げたいと思ってます。日頃六本木や渋谷にいることが多いですので気軽にお誘いください。情報交換しましょう。

タイトルとURLをコピーしました