1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

「ネットワークはなぜ繋がるのか」をザックリまとめた。

Posted at

ブラウザにURLを入力してからホームページが表示されるまでの流れを超ザックリと並べました。

HTTPリクエスト・メッセージを作成する

URLの入力等の動作が行われたら、まずはブラウザがHTTPリクエスト・メッセージを作成する。
次は、それをOSに依頼してアクセス先のWebサーバーに向けて送信してもらう。

が、、OSに送信を依頼するときは、ドメイン名ではなくIPアドレスでメッセージを届ける相手を指定しなければいけない。

WebサーバーのIPアドレスをDNSサーバーに問い合わせる

DNSリゾルバ(Socketライブラリに入っているプログラム)を呼び出すと、リゾルバがDNSサーバーに問い合わせのメッセージを送ってくれる。
応答が返ってくると、リゾルバはその中からIPアドレスを取り出して、ブラウザから指定されたメモリー領域の中に書き込む。

→ブラウザは上で受け取ったIPアドレスをメモリー領域から取り出して、HTTPのリクエスト・メッセージと一緒にOSに渡す。

*DNSサーバーへリゾルバがメッセージを送信する時も、DNSサーバーのIPアドレスが必要。
ただこれはTCP/IP設定項目のひとつとしてコンピューターに予め設定されている。後から変更することも可能。

目的のDNSサーバーに辿り着くまでの流れ
例えばwww.ken.engineer.com

  1. 最寄りのDNSサーバー
  2. ルート・ドメイン
  3. com
  4. engineer
  5. ken

プロトコル・スタックにメッセージ送信を依頼する

OS内部のプロトコル・スタックにメッセージ送信動作を依頼するときは、Socketライブラリのプログラム部品を決められた順番で呼び出す。

データの送受信動作は次の4つのフェーズに分かれている

  1. ソケットを作る(Socketライブラリのsocketというプログラム部品を呼び出す→ディスプリタが返ってくる。)
  2. サーバー側のソケットにパイプを繋ぐ(connectとうプログラム部品を呼び出す、IPアドレス、ポート番号、ディスプリタの情報を使って接続する)
  3. データを送受信する(writeを呼び出す、ディスプリタとHTTPのリクエストメッセージなどの送信データを指定する。その後readを呼び出して、受信料する。)
  4. パイプを外してソケットを抹消する(closeを呼び出す)

*ディスプリタとはソケットを識別するもの(例えばブラウザでウィンドウを二つ同時に開く場合など、1台のコンピューターの中に複数のソケットが存在することがあるので)
*ポート番号は接続相手側からソケットを識別するために使う

ハブとスイッチ、ルーター

  1. コンピューターから出てきた信号は、ケーブルを伝わってリピーター・ハブの中を流れる

  2. スイッチング・ハブのパケット中継動作。
    スイッチング・ハブは信号を流すのではなく、パケットの信号を受信してデジタル・データの姿に戻し、再び信号に直して送信するという動作によってパケットを運ぶ。

  3. ルーターのパケット中継動作
    スイッチング・ハブはイーサネットの仕組みに基づいて作られた機器であるが、ルーターはIPの考え方に基づいて作られている。

  4. ルーターの付加機能
    ルーターには、プライベート・アドレスをグローバル・アドレスに書き換えるアドレス変換機能や、危険なパケットを遮断するパケット・フィルタリング機能を利用するのが通例。

*家庭のルーターは、リピーター・ハブやスイッチング・ハブを内臓していることが多い。

アクセス回線を通ってインターネットの内部へ

  1. ADSL技術を用いたアクセス回線の構造と動作
  2. 光ファイバを用いたアクセス回線(FTTH)
  3. アクセス回線で用いるPPPとトンネリング
  4. プロバイダの内部
  5. プロバイダを跨って流れるパケット

サーバー側

  1. アクセス先となるサーバーの所在地には大きく3パターンある。
  • ルーターで直結する。(社内LAN)
  • ファイアウォールで分離する。(社内LANと公開サーバー用LANで分離する)
  • 接続事業者のデータ・センターに設置する。
  1. ファイアーウォールとは?
  • 関所の役割を果たすもの。特定のサーバー上で動くアプリケーションにアクセスするパケットだけを通し、それ以外のパケットを遮断する役割を持っている。宛先IPアドレス、送信元IPアドレス、ポート番号、TCPコントロール・ビット(接続方向)等で制限をかける。
  1. 複数サーバーにリクエストを振り分けてサーバーの負荷を分散する
  • DNSサーバーに同じ名前でWebサーバーを複数登録する。この方法をラウンドロビンという。
  • 負荷分散装置(ロードバランサー)を使う。
  1. キャッシュ・サーバーを利用してサーバーの負荷分散を行う。
  • プロキシという仕組みを使って、データをキャッシュするサーバーのこと。
  • プロキシとはWebサーバーとクライアントの間に入って、Webサーバーへのアクセス動作を仲介する役割を持つもの。

サーバーにリクエストが到着

  1. サーバーの受信動作
  • プロトコル・スタックが受信したメッセージを、Socketライブラリを通じてWebサーバー・アプリケーションに渡す。
  1. Webサーバー・ソフトがリクエスト・メッセージの意味を解釈して要求に答える。

3.ブラウザがレスポンス・メッセージを受け取り画面に表示

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?