Open5

ネットワークはなぜつながるのか

shigeshige

ネットワークはなぜつながるのか

  • ハブとルータの関係
    ハブを通してサブネットを形成し、ルータを通してサブネット同士を繋げ、ネットワークを形成する。
  • サブネットとブロードキャスト
    サブネットを表すアドレスはホスト番号部分のビットが全て0のもの。逆に全て1のものはブロードキャストを表す。

  • ネットマスク
    ネットマスクの左側に1が並んでいる部分をネットワーク番号、右側に0が並んでいる部分をホスト番号という。
    例: 11111111.11111111.00000000.00000000というネットマスクがあった場合、ネットワーク部が32〜17ビット、16〜1ビットがホスト部となる。

  • ドメイン名を指定して通信することの代償
    OSに通信依頼をする際にIPアドレスではなく、いっその事ドメイン名で通信すれば良いのでは?と思うところもあるが、IPアドレス通信と比べて実行効率が悪い。理由はIPアドレスだと32ビット(4バイト)で通信できるところが、ドメイン名になると数十〜255バイトになる為かなり負荷のかかる通信となる。

  • DNSサーバへ問い合わせる
    名前解決の為にDNSサーバへ問い合わせする際に使用するのがリゾルバ。そのリゾルバの呼び出し方法はSocketライブラリを使用してリゾルバのプラグラム名+webサーバの名前を書くと呼び出せる。
    リゾルバを呼び出したらDNSサーバに問い合わせメッセージを送ってくれる。

  • リゾルバ〜DNSサーバ
    リゾルバもブラウザと同じくデータの送受信機能がない。その為OSのプロトコル・スタックを呼び出してDNSサーバへ実行依頼を出す。

  • DNSへの問い合わせメッセージ
    名前、クラス、タイプを含むメッセージをクライアントからDNSサーバへ送る。
    ※クラスは常にINを表す。これはDNSの仕組みが考案された時にインターネット以外のネットワークの利用も検討されていた事があったからであり、今日ではインターネット以外のネットワークが使われていない為である。また、タイプがMXの場合はメールアドレス情報の返答と一緒にメールサーバのIPアドレスも返す。因みにタイプがAの場合はIPアドレスのみ返す。

  • その他のタイプ達
    AとMX以外にIPアドレスから名前を調べるPTR、名前にニックネームを付けられるCNAME、DNSサーバのIPアドレスを登録するNSなどがある。
    詳しくはこちらを参照する。

  • DNSサーバに登録された情報の割り出し
    下位ドメイン担当のDNSサーバのIPアドレスを次の上位DNSサーバに登録する。同じようにその上位DNSサーバのIPアドレスを更に上位DNSサーバに登録するとういうように順に登録していく。このように下位DNSサーバの情報を上位DNSサーバに登録する事でルートドメインから順に下の方にたどっていける。

  • Socket、socket、ソケット
    世間的に「socket」の場合はプログラム部品のことを指し、「Socket」はライブラリのことを指し、「ソケット」の場合はパイプの両端にある出入口を指す。

  • ディスクリプタの存在意義
    ソケットができるとディスクリプタを返す。つまりこのディスクリプタはソケットを識別するためにある。なんで識別する必要があるかは複数のソケットが存在する場合に複数のデータが同時進行する場合にどのソケットなのか知る必要があるから。MACアドレスと似てる?と思ったけど、違うみたい。例えるとディスクリプタは注文番号や整理券のような一時的な番号でMACアドレスは住所のように一意に決まる番号。

  • 通信動作に用いる制御情報
    ヘッダーに書き込まれる情報
    ソケットに記録される情報

  • ウインドウ制御
    各パケットのACKを待たずに次々とパケット送信する方法。この方法のおかげでACKの返答を待たずに済む。

TCPヘッダーのウインドウ・フィールドで回避できる。

shigeshige

HTTP ステータス・コード

1xx(情報レスポンス): 処理が進行中であることを知らせるための通知。
2xx(成功): リクエストが正常に完了したことを示す。
3xx(リダイレクト): 別のアクションが必要であることを示し、クライアントに新しい場所を指示する。
4xx(クライアントエラー): リクエストに問題があり、クライアント側で修正が必要な場合に返される。
5xx(サーバーエラー): サーバー側で問題が発生し、リクエストを処理できない場合に返される。

shigeshige

画像の表示プロセス

ブラウザからwebサーバへリクエストを送ると、まずはじめにテキストを表示する。その際、レスポンスデータに画像タグがあれば画像を表示するスペースのみを空けて再度画像を表示するためのリクエストをwebサーバから読み出しそのスペースに表示する。画像が沢山あるサイトが重くなる傾向になる所以。

shigeshige

OSがメッセージをネットワークに送り出す理由

メッセージを送り出す機能というのはほとんどのアプリケーションが持ち合わせているので、OSでやって、アプリケーションは依頼する側に回った方が得策って理由でそうなっている。

shigeshige

OSに送信依頼する時の仕様

URL中のサーバーのドメイン名からIPアドレスを調べる必要がある。理由はOSはドメイン名ではなく、IPアドレスで送信する相手を決めているため。ドメイン名からIPアドレスに変換してくれるのがDNS。