web-dev-qa-db-ja.com

パブリックIPアドレスが常にサブネットマスクとともに表示されないのはなぜですか?

ネットワークIDをホストIDから分割する方法がわからなかったため、対応するサブネットマスクのないパブリックIPアドレスは無意味であると言われましたが、これは私にはまったく意味があります。

ただし、ほとんどの場合、IPアドレス(DNS、findmyip.comなど)が表示されますが、これはcidr番号のないIPに関するものです。たとえば、ウェブサイトにIPアドレスだけを入力したところ、正しいドメイン名が返されました。

何が足りないのですか? IPアドレスでしか機能しないプロトコルが他にもいくつかあると思いますが、まだ聞いたことがありません。

私の質問がネットワークがどのように機能するかについての基本的な理解の欠如を明らかにするならば、リソースは大いに感謝されます。私はこれらすべてを自分で教えている開発者であり、5分間のチュートリアルまたは1000以上のあいまいな本(こんにちはTCP図解)を除いて、私は自分の資料を見つけることができません探している。

1
Radioreve

TCP/IPを使用して他のシステムと通信するすべてのシステムは、ローカルの「転送情報ベース」またはシステムによって維持されているローカルルーティングテーブルを参照します。

ルーティングテーブルエントリは基本的に次のようになります。

宛先ネットワーク/ゲートウェイ/宛先サブネットマスク/メトリック

これが私の現在のルーティングテーブルです:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 eth2
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 eth2
172.16.160.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 eth2
192.168.87.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet1

システムがIPにトラフィックを送信するたびに、このテーブルを検索します。サブネットマスクに一致して適合する宛先ネットワークが見つかると、Ifaceで識別されるネットワークアダプターからトラフィックを送信します。

これらのネットワークアダプタはすべて「直接接続」されているため、ゲートウェイに0.0.0.0が表示されます。これは、たとえば、システムが192.168.2.80に何かを送信したい場合、インターフェースeth2を介して192.168.2.80に直接送信できることを意味します。

ただし、サブネットマスクが原因で、192.168.87.80はeth2を経由せず、vmnet1を経由します。

IPが2つのエントリに収まる場合は、CIDRサブネットマスクが大きい方(「より具体的なもの」)が使用されます。同じサブネットマスクを持つ2つがある場合、メトリックはタイを解除するために使用され、その場合、システムは1つを選択してそれを維持するか、それらの間で負荷分散を行う場合があります。

例えば.

192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 eth2
192.168.2.0     0.0.0.0         255.255.255.240 U     100    0        0 ethX

255.255.255.240はCIDR/28であり、255.255.255.0はCIDR/24です。したがって、2つのエントリが存在する場合、192.168.2.1に送信されるものはインターフェイスethXから送信されますが、192.168.2.241に送信されるものはインターフェイスeth2から送信されます。

一致するものがない場合はどうなりますか?次に、デフォルトゲートウェイが使用されます。 0.0.0.0(スラッシュ/ 0)の「最低」サブネットマスクがあることに注意してください。

これがサブネットの目的です。どのインターフェイスからどのネットワークに到達できるかをシステムに通知します。システムはこれを使用してトラフィックを送信し(インターネットとローカルネットワークの違いを判断するため)、ルーターはこれを使用してトラフィックを転送します。

これらの状況以外では、サブネットマスクは必要ありません。基本的に、ネットワークルーティングレイヤーを通過する必要はありません。 HTTPはアプリケーション層です。

4
LawrenceC

サブネットマスクは、ホスト自体とルーティング機器に役立ちます。

PCは、リモートデバイスのサブネットマスクを知る必要はありません。アドレスを知っているだけで、自分のアドレスおよび自分のサブネットマスクと比較できます。アドレスがローカルかリモートかを確認します。

ローカルの場合、パケットは直接送信され、リモートの場合、パケットはデフォルトゲートウェイに送信されます。

3
jcbermu

上記の両方の答えは正しいです-これはより詳細な非技術的なものです-

コンピューターは、IPアドレスがそれに直接接続するコンピューターに属しているかどうかを知る必要があるだけです。同じ「LAN」内のハブ/スイッチ/ Wi-Fiを経由するコンピューターは、直接接続されていると見なされます。

それ以外の場合、コンピュータはパケットを次に送信する場所、つまりルーターのアドレス(次にパケットを送信する場所を知っている)を知るだけで済みます。 tracerouteを実行すると、このパスが表示されます。

サブネットマスクは、直接接続されているマシンをグループ化するために使用されます。したがって、直接接続されていないマシンの場合、サブネットマスクはそれらに到達する必要はありません。

特に、サブネットマスクは、ファイアウォールやその他のソフトウェアで使用して、同じように扱われるIPアドレスのグループを指定することもできます(そのため、LANの外部で関連する場合があります)が、インターネットでの一般的な通信には必要ありません。

0
davidgo