0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ネットワークはなぜつながるのか 自分の言葉で備忘録

Posted at

エンジニアとしてザコすぎるので1から勉強するンゴ

ブラウザでURLバーにアドレスを打ってから何が起こるのか

  1. まずはURLの解析が行われる
    http://www.hogehoge.com/fuga

というURLがある
これは

http => プロトコル
www.hogehoge.com => サーバー名
/fuga => パス

という大まかに分けて3つに分類される

プロトコルは通信の方式
サーバー名はどのサーバーか
パスはサーバーの中のどのファイルorディレクトリか
を表す

次にブラウザはHTTPプロトコルを使用することがわかったのでHTTPリクエストを組み立てる

HTTPリクエストは以下の4つからなる

  • リクエストライン
    • メソッド
      • 大まかにわけて以下の2つがある
        • 取得するGET
        • 送信するPOST
    • URI
      • Webサーバーで動作するプログラムのファイル名
    • HTTPバージョン
      • その名の通り
  • メッセージボディ
    • メッセージの内容

そしてサーバーにこのリクエストを送るとサーバーからはレスポンスが返ってくる

  • レスポンスライン
    • HTTPバージョン
      • その名の通り
    • ステータスコード
      • どんな状態かを端的に表す
    • レスポンスフレーズ
      • ステータスコードの内容を表す
  • メッセージボディ
      • メッセージの内容

ちなみに画像などがwebページに100個あったらこれらのリクエストは個別にサーバーに100個送られて個別にレスポンスが返ってくる

HTTPについてはこれでおしまい
つぎはサーバーに対してどうやってデータを送るか
サーバーに対してデータを送るにはIPアドレスというものが必要になる

IPアドレスとはPCの住所のようなもので
172.11.34.11みたいな .が3つつくもの
.で繋がれた数字はすべて0~255の数字になる

アドレスを入力されたブラウザはどうやってhogehoge.comという文字列からこのIPアドレスを取得しているか?

それはDNSサーバーというPCの住所を知っているサーバーに対して「こいつのIPアドレスはなんですか?」と訪ねて、もしそのDNSサーバーが知っていたら「こいつのIPアドレスはXXXX.XXXX.XXXX.XXXXですよ〜」と教えてくれる

これをDNSルックアップという

仕組みはシンプルで以下のような対応表が各DNSサーバーにあってサーバー名が各PCからわたってくるのでそれに対して一致するものがあれば返答してくれる

サーバー名 タイプ クライアントに返答する項目
www.hogehoge.com A 123.234.211.111
www.google.com A 142.251.42.142

ちなみにターミナルで以下のように打つと

nslookup google.com

返ってくる

Non-authoritative answer:
Name:	google.com
Address: 142.251.42.142

そして普通に142.251.42.142をアドレスに打ち込むと普通にgoogleが表示される

余談

  • DNSサーバーに尋ねるにはブラウザからは直接できないらしくてDNSリゾルバというブラウザとは別の仕組みを使用して尋ねるらしい
  • そのDNSリゾルバも実はただ実行するだけのものらしくてプロトコル・スタックという通信するためのものに頼んでるらしい

DNSサーバーには対応表があってリクエストに一致するものがあれば返されるっていったけどないときはどうするねんってなると思うけどその時はDNSサーバーの中で一番上位の存在のルート・ドメインっていうDNSサーバーに聞くと解決する

こんな感じ
image.png

DNSサーバーは階層構造になっていて

www.hogehoge.com.jpというドメインがあるとして
wwwはhogehogeに属していて
hogehogeはcomに属していて
comはjpに属しているとみる

一番右のやつが一番でかくて左に行くにつれてどんどん規模が小さくなっていく
んで
ルートはcomとかjpとかukとかいうドメインを束ねている
jpはcomとかtokyoとかそういったドメインを束ねている
そのjpの中のcomの中のhogehogeの中にwwwというサーバーの実態がある

それでルートに聞くとまずjpにきいて、jpはcomに聞いてcomはhogehogeに聞いて結局hogehogeが「にwwwという実態がありましたー。こいつのIPアドレスはXXXX.XXXXX.XXXX.XXXXですー」っていう返答を返してくれる

ちなみにこんな感じで聞いていったけど結局どこにもなかったという場合も多々あり、そういうときは DNS_PROBE_FINISHED_NXDOMAIN という返答が返ってくる

実際に
http://fjwlekjfwekl.com/ という適当なURLを打ったらこんな感じの画面になる
image.png

IPアドレスを調べることができたらやっとそのIPアドレスの相手(webサーバー)に対してHTTPリクエストを送ることができるようになる

(ただHTTPリクエストを呼ぶときもDNSのリクエストを送るみたいにプロトコル・スタックというハードウェア寄りの機構を呼ぶことになる)

HTTPリクエストとHTTPレスポンスをブラウザとサーバーの間で行ったり来たりさせるためにはブラウザとサーバーの間でデータの通り道を用意する必要がある

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?