ネットワーク全体の情報を取得したい


# 概要

家庭内のネットワークの全体像を把握したいと考え、  
いくつかのコマンドを実行してみたのですが、  
満足の行く結果が得られません。

# 状況

## ネットワークの全体像

[![home_network](https://i.stack.imgur.com/W3LsG.png)](https://i.stack.imgur.com/W3LsG.png)

## やりたいこと

**デバイスA1** から何らかの手段で、  
全てのルーター、デバイスの構成図とプライベートIPを取得すること。

# 実行したこと

## arp -a

ルーターAのIPアドレスが取得できた。

### 実行結果

[code]

    $ arp -a
    ROUTER.A (192.168.10.1) at xx:xx:xx:xx:xx:xx [ether] on eth0
    
[/code]

### 疑問

#### ネットワーク部はどこ？

取得できたIPアドレスはサブネットマスクなどの情報が存在していない。  
しかしIPアドレスとサブネットマスクというのはセットではないのか？

#### arpテーブルには一つの情報しか無い？

今回`arp -a`コマンドではルータに関する情報しか存在していなかったが、  
デバイスA2に関する情報もarpテーブルに存在するということはあり得るのか？

## arp-scan

デバイスA1に直接繋がっている（？）ルーター、デバイスA2の情報を取得することが出来た。  
しかしルーターBとそれに接続されているデバイスB1、B2に関する情報は取得できなかった。

## 実行結果

[code]

    $ sudo arp-scan -I wlp2s0 -l
    Interface: eth0, type: EN10MB, MAC: aa:aa:aa:aa:aa:aa, IPv4: 192.168.10.14
    Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
    192.168.10.1    xx:xx:xx:xx:xx:xx   ROUTER_A
    192.168.10.5    yy:yy:yy:yy:yy:yy   DEVICE_A1
    192.168.10.4    zz:zz:zz:zz:zz:zz   DEVICE_A2
    
[/code]

## 疑問点

### ルータBに関する情報は？

ルーターBとそれに接続されているデバイスB1、B2に関する情報を取得するにはどうすればいいか？

### ネットワーク部の存在

arp-scanにおいても上の`arp -a`と同じく表示されるIPアドレスには、  
サブネットマスクなどのネットワーク部に関する情報が存在していない。

なぜIPアドレスとセットのはずのネットワーク部に関する情報が無いのか？

# 補足

一番理解ができない点は、  
なぜネットワーク部が存在しないIPアドレスが存在しているのかという点です。

IPアドレスはネットワーク部とホスト部の二つで構成されているという情報と齟齬が生じます。  
（そしてIPアドレスにはサブネットマスクの情報が存在したりしなかったりするのは何故なのか？）




> 今回arp -aコマンドではルータに関する情報しか存在していなかったが、  
>  デバイスA2に関する情報もarpテーブルに存在するということはあり得るのか？

Ethernetで通信すれば、arp -aで表示されます。（MACアドレスの動的なキャッシュ）  
A2にpingを打った後、確認してみてください。A2のMACアドレスが表示されるはずです。

> ルーターBとそれに接続されているデバイスB1、B2に関する情報を取得するにはどうすればいいか？

ルーターBのネットワークが持つIPアドレス範囲にpingなどで通信してみる、という方法が考えられます。

> なぜネットワーク部が存在しないIPアドレスが存在しているのか

IPアドレスはネットワーク部とホスト部をくっつけて表記することは一般的に行われます。  
ネットワークのIPアドレスとホスト部を分けて書いていないのは、ARPは自分が所属するネットワーク内のMACアドレスを表示しているので、ネットワーク部のIPアドレスは自明で、ツールの表示情報として冗長だからといったところでしょう。

* * *

ほかの質問にも共通するのですが、L2 (データリンク層、Ethernet)とL3 (ネットワーク層、IP)の違いを勉強いただくのが早いと思います。

同じネットワーク上はデータリンク層で通信ができますし、隣のネットワーク(ルーターB)には、同じネットワークにいるゲートウェイに「デバイスBのIPアドレス宛です。よろしく」とIPパケットを送ります。これをきちんと説明するには数ページでは済まないので、本で体系立てて勉強してみてください。




> 今回arp -aコマンドではルータに関する情報しか存在していなかったが、  
>  デバイスA2に関する情報もarpテーブルに存在するということはあり得るのか？

Ethernetで通信すれば、arp -aで表示されます。（MACアドレスの動的なキャッシュ）  
A2にpingを打った後、確認してみてください。A2のMACアドレスが表示されるはずです。

> ルーターBとそれに接続されているデバイスB1、B2に関する情報を取得するにはどうすればいいか？

ルーターBのネットワークが持つIPアドレス範囲にpingなどで通信してみる、という方法が考えられます。

> なぜネットワーク部が存在しないIPアドレスが存在しているのか

IPアドレスはネットワーク部とホスト部をくっつけて表記することは一般的に行われます。  
ネットワークのIPアドレスとホスト部を分けて書いていないのは、ARPは自分が所属するネットワーク内のMACアドレスを表示しているので、ネットワーク部のIPアドレスは自明で、ツールの表示情報として冗長だからといったところでしょう。

* * *

ほかの質問にも共通するのですが、L2 (データリンク層、Ethernet)とL3 (ネットワーク層、IP)の違いを勉強いただくのが早いと思います。

同じネットワーク上はデータリンク層で通信ができますし、隣のネットワーク(ルーターB)には、同じネットワークにいるゲートウェイに「デバイスBのIPアドレス宛です。よろしく」とIPパケットを送ります。これをきちんと説明するには数ページでは済まないので、本で体系立てて勉強してみてください。

