ネットワークを勉強していく
ネットワークに入門する
IPアドレス
ネットワーク上のコンピュータの住所のようなもの。
0.0.0.0
から255.255.255.255
の32 bitで管理する。
バージョン
IPv4とIPv6がある。現在は主にv4が使われているが、アドレスが枯渇しつつあるためv6に移行している。
グローバルIPアドレス
インターネット上で一意のIPアドレスで、Internet Corporation for Assigned Names and Numbers(ICANN)が管理している。
プライベートIPアドレス
プライベートなネットワーク上で一意のIPアドレス。他のプライベートなネットワークのIPアドレスとは重複可能。設定できるIPアドレスには制限があり、10.*.*.*
・172.106-31.*.*
・192.168.*.*
のいずれかである。
サブネットマスク
10.0.0.0/16
の/16
のように、IPアドレスの後ろにスラッシュで区切られた数字のこと。IPアドレスを2進数に変換したとき、左から何桁をネットワーク部として利用するか設定する。16
の場合は10.0
までがネットワーク部になり、.0.0
がホスト部となる。
CIDR?
サブネット
サブネットマスクにより区切られた、利用できるホスト部をサブネットと呼ぶ。サブネットごとにネットワークの役割を分けると良い。
DNS(名前解決)?
URLがどのIPアドレスを指しているのかを解決する。
NAT・IPマスカレード(・DHCP)
ローカルIPアドレスをグローバルIPアドレスに変換する機器のこと。NATが1対1でアドレスを変換するのに対し、IPマスカレードは多数のローカルIPアドレスを1つのグローバルIPアドレスに変換する。
DHCP?
Wi-Fiは、ルーターが端末に対してプライベートIPアドレスを付与し、付与したアドレスをNATとしてグローバルIPアドレスに変換することで、端末をインターネットに繋げている。
OSI参照モデル
7つの層に分かれている。
アプリケーション層
HTTP・HTTPSなど。
プレゼンテーション層
文字コードや暗号化など。
セッション層
アプリケーションのセッションはここ。
トランスポート層
TCPはここ。セッションを開始する際の信頼確立など(ハンドシェイク?)。
ネットワーク層
IPはここ。IPアドレスを利用したルーティング方法を規定する。
データリンク層
MACアドレスを利用したルーティング方法を規定する。
物理層
ビットによるコンピュータの物理的なデータ転送形式を規定する。
TCP/IPモデル
OSI参照モデルが複雑なため、実用的であることを目的として考えられたモデル。
アプリケーション層
HTTP・SSH・DNS・SMTP・POP3・FTPなど。
トランスポート層
TCP・UDPなど。
ネットワーク層
IP・ICMP・ARP・BGPなど。
物理層
Ethernet・PPPなど。
ポート番号
データ通信のエンドポイント。同じコンピュータ内で動作する複数のソフトウェアのどれが通信するかを指定するための番号。
Well-knownポート
-
21
:FTP -
22
:SSH -
80
:HTTP -
443
:HTTPS -
3306
:RDS(AWS) -
3389
:RDP(WIndows)
USER: Webサーバーでは、URLに対してリクエストするとサーバーがコンテンツを返却します。
ローカルのPCでは、なぜサーバーがないのにファイルを開けるのでしょうか?
ASSISTANT: ローカルのPC上でファイルを開く場合、Webサーバーのようなクライアント/サーバーモデルは使用されません。代わりに、ローカルのPCは自己完結型のシステムとして動作します。
ローカルのPC上でファイルを開くとき、オペレーティングシステム(たとえばWindowsやMacOSなど)が関与します。オペレーティングシステムは、ファイルシステムと呼ばれる仕組みを提供し、ファイルの管理とアクセスを担当します。
ファイルシステムは、ハードディスクやSSDなどのストレージデバイス上にファイルを格納し、ファイルに一意のパス(ファイルの場所と識別子)を割り当てます。ローカルのPC上でファイルを開くとき、アプリケーション(たとえばテキストエディタやウェブブラウザ)は、ファイルのパスを指定してオペレーティングシステムに要求を送ります。
オペレーティングシステムは、要求されたファイルを探し、その内容をアプリケーションに返します。これにより、ローカルのPC上でファイルを開くことができます。オペレーティングシステムは、ファイルシステムを介してファイルにアクセスし、必要な情報を取得します。
Webサーバーの場合とは異なり、ローカルのPCは単独でファイルにアクセスできるため、ネットワークやサーバーは必要ありません。ただし、ネットワークを介してファイルを共有したり、リモートマシン上のファイルにアクセスしたりすることもできます。
USER: ブラウザからローカルのファイルを開く場合、ネットワーク経由でアクセスしているように見えます。これはどのように実現しているのでしょうか?
ASSISTANT: ブラウザからローカルのファイルを開く場合、通常は
file://
スキームを使用してアクセスします。この方法では、ネットワークを介しているように見えるかもしれませんが、実際にはローカルのファイルシステムに直接アクセスしています。
以下に、ブラウザからローカルのファイルを開く仕組みの一般的な手順を示します。
-
ブラウザで
file://
スキームを使用してファイルを開くURLを指定します。たとえば、file:///path/to/file.html
のような形式です。 -
ブラウザは指定されたURLにアクセスし、そのファイルパスを解析します。
-
ブラウザはオペレーティングシステムのファイルシステムアクセスAPIを使用して、指定されたファイルパスに対して読み込み要求を発行します。
-
オペレーティングシステムは、ファイルシステム内の指定されたファイルを見つけ、その内容をブラウザに返します。
要するに、ブラウザはローカルのファイルシステムに直接アクセスしてファイルを読み込んでいます。ただし、一部の制約が存在する場合もあります。セキュリティ上の理由から、一部のブラウザでは file://
スキームを使用してローカルのファイルにアクセスすることが制限されている場合があります。また、JavaScriptなどの動的なコンテンツは、通常のWebサーバー上で動作させる必要があります。
http://localhost/index.html
とかでページ表示できそうだと思ってた。
file://localhost/index.html
( = file:///index.html
)だと表示できるが、これが多分ローカルのファイルシステムを利用しているっぽい。HTTPだとネットワーク経由になるためサーバーが必要みたいな。詳しい仕組みが分からんが。