AIと戦って、あなたの人生のリスク診断 >>

サブネットマスクから、ネットワークアドレス/ブロードキャストアドレスを求める方法を、教えてください。

○サブネットマスク=255.255.255.224 ⇒ 2進法 11111111.11111111.11111111.11100000

○これのネットワークアドレス/ブロードキャストアドレスは、
 192.168.168.0/31
 192.168.168.32/63
192.168.168.64/95
192.168.168.96/127
192.168.168.128/159
192.168.168.160/191
192.168.168.192/223
192.168.168.224/225
 になるとのことですが、この算出方法を教えていただけませんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

サブネットマスクだけでブロードキャストアドレスとネットワークアドレスを算出する事は不可能です。



質問文にあるような回答は、192.168.168.0/24(プレフィックス長24ビット)のネットワークを255.255.255.224のサブネットマスク(プレフィックス長27ビット)で分割した場合の各サブネットにおけるネットワークアドレス/ブロードキャストアドレスです。
(余談ですが、最後のブロードキャストアドレスは225では無く、255ですね。)

特定ノードのIPが判明しており、そのサブネットマスクに基づいたネットワークアドレスの求め方としては、単純にIPとサブネットマスクをAND演算すれば出せます。

ブロードキャストアドレスは、ネットワークアドレスのホスト部分のビットが全て1になったものです。

参考URL:http://www.geocities.jp/cwqnx949/subnetmask/

この回答への補足

ann_dvさん、粗雑な質問にご指導いただき、感謝もうし揚げます。

> 余談ですが、最後のブロードキャストアドレスは225では無く、255ですね。
 ご指摘の通りです。入力ミスでした。

> サブネットマスクだけでブロードキャストアドレスとネットワークアドレスを算出する事は不可能です。

 申し訳ありません。IPアドレス=192.168.168.224 デフォルトケーとウェイ=192.168.168.254 の条件もありました。
 更に、サブネットマスクのホスト部が 5ビットで、2の5乗=32から質問の値になるというのですが...?

 ご案内いただいたサイトのAND演算例に沿ってトライしたのですが...。
 IPアドレス=192.168.168.224
⇒ 11000000.10101000.10101000.11100000 (1)
 サブネットマスク=255.255.255.244
       ⇒ 11111111.11111111.11111111.11100000 (2)
 (1)(2)をAND演算=11000000.10101000.10101000.11100000
       ⇒ 192.168.168.244
質問の答えの、192.168.168.224/255 らしきものは出てきましたが、CIDR表記の[ /255]がわかりませんし、8種類の解の出し方もわからないのです。どこか、私の理解とやり方が違うのだと思いますが、よろしければ再指導いただければ幸甚です。

補足日時:2010/02/03 00:21
    • good
    • 0
この回答へのお礼

ann_dvさん、ご無沙汰いたしておりました。wakko777さんからもご指導いただき、ann_dyさんのおっしゃつていることが、理解できるようになりました。未熟もので恐縮でした。

> (質問の中の)8種類の解の出し方もわからないのです

 これ、自己解決しました。簡単なはなしだったのですね。
 サブネットマスクのホスト部が 5ビットで、2の5乗=32 なので、第4 オクテットは0,32,64・・・と32bit ごとの値となるということなのでした。

 お世話になりましたが、なんとか不明点を解消することが出来ました。ありがとうございました。

お礼日時:2010/02/15 18:18

192.168.168.224/27のネットワークアドレスとブロードキャストアドレスは


192.168.168.224と192.168.168.255と出たと思います。

他の値はそれぞれ別のアドレスのネットワークアドレスとブロードキャストアドレスになっています。

192.168.168.0/27のときのネットワークアドレス[ブロードキャストアドレス]は
192.168.168.0[31]

192.168.168.32/27 ⇒ 192.168.168.32[63]
192.168.168.64/27 ⇒ 192.168.168.64[95]
192.168.168.96/27 ⇒ 192.168.168.96[127]
192.168.168.128/27 ⇒ 192.168.168.128[159]
192.168.168.160/27 ⇒ 192.168.168.160[191]
192.168.168.192/27 ⇒ 192.168.168.192[223]

となります。

全て、192.168.168.224のときと同じようにAND演算でできますので、やってみてください。

ちなみに、/27というのは、255.255.255.224のCIDR表記です。
27という数字は27ビットを表しています。
普通、192.168.168.0/31 と書くと 31ビットのサブネットマスクがあると
認識しますので、ブロードキャストを書くのに/を使うのはやめた方がいいです。
紛らわしいので。

この回答への補足

wakko777 さん、ご教授のアップに気づくのが今日になってしまい、ごれんらくが遅れ恐縮です。

> 192.168.168.224/27のネットワークアドレスとブロードキャストアドレスは
192.168.168.224と192.168.168.255と出たと思います。

 はい、「ホスト部をすべて"1"にする。これがブロードキャストアドレス」ということで、出来ました。

> 他の値はそれぞれ別のアドレスのネットワークアドレスとブロードキャストアドレスになっています。

 ann_dvさんの以下の説明がその後理解できたのですが、同じ意味ですね。
ann_dvさん> (プレフィックス長24ビット)のネットワークを255.255.255.224のサブネットマスク(プレフィックス長27ビット)で分割した場合の各サブネットにおけるネットワークアドレス/ブロードキャストアドレス

> 192.168.168.32/27 ⇒ 192.168.168.32[63]

 IPアドレス=192.168.168.32
⇒11000000.10101000.10101000.00100000 (1)
 サブネットマスク=255.255.255.244
       ⇒ 11111111.11111111.11111111.11100000 (2)
 (1)(2)をAND演算=11000000.10101000.10101000.00100000
       ⇒ 192.168.168.32 ネットワークアドレス

 省略してプレフィックス長27ビット以後のホスト部をすべて"1"にする。
        =11000000.10101000.10101000.00111111
       ⇒ 192.168.168.63 ブロードキャストアドレス
 でよかったのでしょうか?

補足日時:2010/02/11 19:07
    • good
    • 0
この回答へのお礼

wakko777さん、ご無沙汰しております。
ご丁寧に教授いただき、おおむね理解出来たのですが、ネットワークアドレス/ブロードキャストアドレスが 8種類発生する算出根拠がわからず残っていました。
偶然ですが、あるきっかけで同等の説明に接する機会があって、自己解決しました。
サブネットマスクのホスト部が 5ビットで、2の5乗=32ということで、ネットワークアドレスの第4 オクテットは0,32,64・・・と32bit ごとの値をとるのですね。
ご教授をいただき、なんとか不明店をかいしょうすることが出来ました。ありがとうございました。

お礼日時:2010/02/15 18:28

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelでIPアドレスをオクテット毎に分割したい

お世話になります。
Excelシート上のA列にIPアドレスが並んでおり、
第1オクテットから第4オクテットは3桁までの数で
それぞれ"."で区切られています。
各オクテットの数値をB列~E列に分けて入れるには
B列~E列にどのような関数を入れたらよいでしょうか、お知恵を拝借したく お願いいたします。

↓理想図です

------------------------------
A        |  B | C | D | E  |
------------------------------
1.2.3.4      | 1 | 2 | 3 | 4 |
------------------------------
10.5.100.6   | 10 | 5 | 100| 6 |
------------------------------
101.22.7.102  | 101| 22 | 7 | 102|
------------------------------
33.8.103.104  | 33 | 8 | 103| 104|
------------------------------

お世話になります。
Excelシート上のA列にIPアドレスが並んでおり、
第1オクテットから第4オクテットは3桁までの数で
それぞれ"."で区切られています。
各オクテットの数値をB列~E列に分けて入れるには
B列~E列にどのような関数を入れたらよいでしょうか、お知恵を拝借したく お願いいたします。

↓理想図です

------------------------------
A        |  B | C | D | E  |
------------------------------
1.2.3.4      | 1 | 2 | 3 | 4 |
---------------------...続きを読む

Aベストアンサー

A列をB列にコピー
「データ」「区切り位置」で「カンマと...」を選んで「次へ」
「その他」の欄に「.」を入れて「完了」という方法もあります。
数式で行うなら
B2=LEFT(A2,FIND(".",A2)-1)
C2=MID(LEFT(A2,FIND(".",A2,LEN(B2)+2)-1),LEN(B2)+2,3)
D2=MID(LEFT(A2,FIND(".",A2,LEN(B2&C2)+3)-1),LEN(B2&C2)+3,3)
E2=RIGHT(A2,LEN(A2)-LEN(B2&C2&D2)-3)

Qネットワークアドレスの求め方について

ネットワークアドレスの求め方について

例えばIPアドレスが153.172.35.124である場合のホストのネットワークについて。
この時サブネットを使用しない場合のネットワークアドレスはいくつになりますか?
2進数に変換するところまではできたのですが、その後の求め方がかわかりません…

できれば過程を教えて頂けると嬉しいです。
お手数ですがよろしくお願いします。

Aベストアンサー

153.172.0.0

「クラス IPアドレス」で検索すると良いかと。
そこらへん分かっていて、求められないのだとすると、bit演算の基礎を復習してみては。

Qエクセルの関数でIPアドレスのあるブロック部分だけ文字列を取り出したい

A1セルに www.xxx.yyy.zzzというIPアドレスがあります。
このうちyyyの部分だけ、関数を使用してB1セルに自動で入力するようにしたいです。
www.xxx.の文字数は常に固定ですが、yyy.zzzは文字数が変動します。
yyy、zzzの各ブロックは最低1文字、多くて3文字になります。

お手数ですが、ご教授頂きたくお願い申し上げます。

Aベストアンサー

基本はmid関数です。=mid(文字列,開始位置,文字数)ですね。最初の
[www.xxx.]の部分は決まってますから、開始位置は固定です。たと
えば今は9文字目から。問題は文字数が1~3で変動するのをどうやっ
て捕まえるか。

マジメにヤルなら、find関数でドットの位置を検索して文字数を計
算します。=find(".",A1,9)とすると、9文字目以降最初に.が現れる
のは何文字目か分かりますから、=find(".",A1,9)-9文字が取り出す
べき文字数です。

=mid(A1,9,find(".",A1,9)-9)

これはmt2008さんと全く同じですね。4つ目のブロックを取り出す場
合に応用が利くのでおすすめです。

とか言ってずぼらな私は、3文字固定で取り出しても小数点以下がつ
いてるだけにしか見えないことを使って、

=int(mid(A1,9,3))

というザツい方法を使いますけどね。

QExcelのVBAを使った自IPアドレスの取得

2日悩みましたが、解決策が見つからないため質問させて頂きます。
現在、ExcelのVBAを使った表を作成しております。
編集者が誰なのかをはっきりさせるため、項目の新規追加・情報の削除を行った編集者のIPアドレスを履歴として残したいと思っています。(閲覧履歴は不要です。)
そのため、編集者PCのIPアドレスを取得してそれを履歴一覧に残したいのですが、この方法がわかりません。
いろいろと探しましたが、WMI(?)やWSH(?)等の、私の理解をはるかに超えるものしか見つからず困っております。
このようなことはできないのでしょうか?
もし可能であれば、教えて下さい。
環境は
OS:Windows XP
Excel2000です。
宜しくお願いします。

Aベストアンサー

取得したいアダプタのDefaultGatewayが判っているならWMIを使ったこんなのはどうでしょう。
1つのアダプタに複数のIPが割り当てられている場合等は考慮していません。
また、サンプルなので変数宣言やエラー処理も適当です。

Sub Sample()
 strDefaultGateway = "192.168.50.254" '←DefaultGatewayがコレのIPを調べる
 strIp = "該当無し"

 Set objNic = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where (IPEnabled = TRUE)")
 For Each oneNic In objNic
  'DefaultGatewayの設定が無いNICは無視
  If IsError(oneNic.DefaultIPGateway(0)) = False Then
   strChk = oneNic.DefaultIPGateway(0)
   If InStr(strChk, strDefaultGateway) > 0 Then
    strIp = oneNic.ipaddress(0)
    Exit For
   End If
  End If
 Next
 MsgBox "IPアドレス:" & strIp

End Sub

取得したいアダプタのDefaultGatewayが判っているならWMIを使ったこんなのはどうでしょう。
1つのアダプタに複数のIPが割り当てられている場合等は考慮していません。
また、サンプルなので変数宣言やエラー処理も適当です。

Sub Sample()
 strDefaultGateway = "192.168.50.254" '←DefaultGatewayがコレのIPを調べる
 strIp = "該当無し"

 Set objNic = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where ...続きを読む

Qブロードキャストアドレスへping

IPアドレス192.168.1.xで、サブネット255.255.255.0なので、ブロードキャストは192.168.1.255ということになると思うのですが、その192.168.1.255にpingを実行すると、Reply from...がちゃーんと4行返ってきます。これは正常ですか?もし正常ならば、誰がReplyしてくれてるのでしょう…。
しょうもない質問ですみませんが、困っています。どなたかご解答お願いします。

Aベストアンサー

ブロードキャストのpingは機器によって応答を返すものと無視されるものがあります。
その応答の返す機器がすべてReplyしています。
(今回はルータですね)
Windowsのpingコマンドだと
 Reply from 192.168.1.255 ...
等になってしまい判断が難しいですが、
例えばpingの前後でarp -aをしてみると応答した機器のIPアドレスを確認できますね。
代表的なunixだと全ての応答が列挙されます。

ただ、ブロードキャストのpingに応答することは、DoSのSmurf攻撃を受けることになるので、
RFC1122の「3.2.2.6 エコー要求/応答: RFC-792」にて
「IP ブロードキャストか IP マルチキャストアドレス宛ての ICMP エコー要求は、黙って破棄してもよい 」
となっています。

これに対してMicrosoftとしてはブロードキャストpingに応答しない(破棄する)方向にしているようです。
◆PING to Broadcast Address May Get Response (Q137421)
http://support.microsoft.com/default.aspx?scid=kb;JA;q137421

ブロードキャストのpingは機器によって応答を返すものと無視されるものがあります。
その応答の返す機器がすべてReplyしています。
(今回はルータですね)
Windowsのpingコマンドだと
 Reply from 192.168.1.255 ...
等になってしまい判断が難しいですが、
例えばpingの前後でarp -aをしてみると応答した機器のIPアドレスを確認できますね。
代表的なunixだと全ての応答が列挙されます。

ただ、ブロードキャストのpingに応答することは、DoSのSmurf攻撃を受けることになるので、
RFC1122の「3.2.2.6 ...続きを読む

Qサブネットアドレスの計算方法が分かりません

本日TCP/IPの基礎を習いました。どうしてもサブネットアドレス
の計算方法がわかりません。


IPアドレス      192.168.200.108
サブネットマスク   255.255.255.240


サブネットマスク第4オクテットは1111000となるので、左4バイトまで
ネットワーク部だとはわかりました。
正解は192.168.200.96 です。何故96が出てくるのか分かりません

どなたか分かりやすく教えて頂けると助かります。

よろしくお願い致します。

Aベストアンサー

No.1の者です。

使用可能な最小値=ホストアドレスが0ですから、これが正解になります。

なおホストアドレスが0であるIPアドレスのことを「ネットワークそのものをあらわすアドレス」「ネットワークアドレス」などといいます。

用語の意味の解説をし始めると、ここの質問とはかけ離れてしまいますので、あまり詳しくは解説しません。用語の意味は検索サイト等で検索してお調べください。(ある程度は自分で調べたほうが力も付きますよ。)

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)

QVBAで2進法から10進法に変換させるプログラミング

 何から手がければ良いのかさっぱり分かりません・・・   For next ... を使えばよいのでしょうか?
 2進法から10進法に変えることはできるのですが、プログラミングとなるとさっぱりです。詳しく教えてくだされば、嬉しいです。
 

Aベストアンサー

VBAを実際に使っていませんので、ご参考に

http://www.relief.jp/itnote/archives/000925.php

Qエクセルで論理和などの値をセルに書きこみたい。

エクセルで数値AとBの論理和等を取ってセルに書き込みたいのですがどこかに具体的な方法が書いたサイトなどないでしょうか?真偽値が欲しいのではなく(A&B)や(AorB)の値が欲しいと言うことです。マクロは使った事がありません。よろしくお願いします。

Aベストアンサー

> マクロは使った事がありません。

経験がないという意味だけであって、使いたくない或は使うことが
禁止なのでしょうか?

※ お使いの Excel のバージョンをお書きになっていませんので
  環境によって動作するかはわかりませんが。(2000,2003で確認)

マクロ(VBA)を使うことに抵抗がないのであればメニューから
ツール → マクロ → Visual Basic Editor

Visual Basic Editor のウィンドウが出ましたら、メニューから
挿入 → 標準モジュール

標準モジュールの右側にエディタが開きますので

Function AndValue(A,B)
AndValue = Val(A) And Val(B)
End Function

と書いて、Visual Basic Editor を閉じて(最小化でも構いません)
Excel の A1 と B1 のセルに適当な数値を入れて、C1 のセルにでも
「=AndValue(A1,B1) 」と入れてみて A1 と B1 に数値を And した
数値が C1 に出たら成功です。

あとはご自身で Or とか Xor など所望の関数を定義してあげれば
よろしいかと思われます。
# 提示させて頂いた関数をコピーして関数名を変えて And の部分のを
# Or などに置き換えるだけで済むかと思います。

マクロのセキュリティ設定によっては異なりますが、マクロを含む
データを保存した場合、次回からマクロが含まれているという警告が
でます。
保存したものを開く場合セキュリティが「中」以下になっていないと
動作しません。(バージョンによっては異るかもしれません)
※ ただし「低」にしないことをお薦めします。

マクロを残したくない場合は、結果のセルをコピーして「形式を指定
して貼り付け」などで値のみを残しておけばよろしいかと思います。
マクロの削除は Visual Basic Editor で Module1 を開放します。
# Module1 という名前は異る場合もあります。

> マクロは使った事がありません。

経験がないという意味だけであって、使いたくない或は使うことが
禁止なのでしょうか?

※ お使いの Excel のバージョンをお書きになっていませんので
  環境によって動作するかはわかりませんが。(2000,2003で確認)

マクロ(VBA)を使うことに抵抗がないのであればメニューから
ツール → マクロ → Visual Basic Editor

Visual Basic Editor のウィンドウが出ましたら、メニューから
挿入 → 標準モジュール

標準モジュールの右側にエディタが開きますので

Fu...続きを読む

Qエクセル2010で2進数の計算をするには

エクセル2010を使って2進数の乗算と加算を複数回行い、最後にそれぞれの答えをすべて加算したいのですが、こういうことは可能でしょうか。
また、最後の答えをすべて加算したときの桁数は100桁程度になると思います。
(できれば10進数をキーボードから入力すれば2進数の変換から複数回の乗算と加算などを自動で計算できれば大変ありがたいのですが)

書店で参考書を探したのですが、10進数→2進数、2進数→10進数の変換については載っているのですが、2進数の計算についてはどの本にも記述がありませんでした。

どうぞよろしくお願いします。

Aベストアンサー

2 進数では、乗法や除法も定義されます。0 x 0 = 0、0 x 1 = 0、1 x 0 = 0、1 x 1 = 1 となります。これを使うと、当たり前かもしれませんが、筆算もできます。例えば次のとおりです。

  1 0 1   =      1 x 2^2 + 0 x 2^1 + 1 x 2^0 = 5
x   1 1   =           1 x 2^1 + 1 x 2^0 = 3
―――――
  1 0 1
 1 0 1
―――――
 1 1 1 1   = 1 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = 15


「整数である 2 進数」同士の計算そのものは、例えば =BIN2DEC(10)*BIN2DEC(110) といった具合にできるからいいのですが、質問文を読むと、桁数があまりにも多すぎなことが問題だと思います。

2^(100-1) = (2^100)/2
     = {(2^10)^10}/2
     = (1024^10)/2
     > (1000^10)/2
     = {(10^3)^10}/2
     = (10^30)/2
     = 5 x 10^29

となり、たとえ 10 進数で表示しても、0 が 29 個も並んだ数よりも更に大きいことになるわけだから、天文学的どころでは済まない、途方もない数だと分かります。せめて対数を取るくらいの工夫は必要でしょう。Excel の対数としては、LOG、LOG10、LN 関数が使えます。log x + log y = log xy というふうに、和から積を作れるのでしたね。

また、Excel の仕様では、誤差なく計算できる最大の桁数は 15 桁です。特に対数を取らない場合は、その点にも注意が必要です。


それから、BIN2DEC 関数は、符号を含めて 10 ビットまでの整数にしか対応できないことにも注意してください。つまり数字の部分は 9 ビットなので、-512 以上 511 以下の整数です。

小数も扱うには、(1)元の数を何倍かして小数点以下をなくす(整数化する)方法とか、(2)ユーザー定義関数その他の方法により 2 進の小数を 10 進の小数に直し、計算後に 10 から 2 に戻す方法などが考えられます。何倍かすると言っている意味は、10 進数を 10 倍すると小数点が右に一つ移動するのと同様に、2 進数では倍にすると小数点が動くという性質を使うということです。

次のページを参考にしてください。

2 進小数の求め方 http://oshiete.goo.ne.jp/qa/6756230.html
2 進小数の加法  http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1486952069

2 進数では、乗法や除法も定義されます。0 x 0 = 0、0 x 1 = 0、1 x 0 = 0、1 x 1 = 1 となります。これを使うと、当たり前かもしれませんが、筆算もできます。例えば次のとおりです。

  1 0 1   =      1 x 2^2 + 0 x 2^1 + 1 x 2^0 = 5
x   1 1   =           1 x 2^1 + 1 x 2^0 = 3
―――――
  1 0 1
 1 0 1
―――――
 1 1 1 1   = 1 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = 15


「整数である 2 進数」同士の計算そのものは、例えば =BIN2DEC(10)*BIN2DEC(110) といった具合にでき...続きを読む


人気Q&Aランキング