- ベストアンサー
送信先MACアドレスを任意のものへ変更する方法
現在、大学院にて無線通信関連の研究開発を行っている修士2年生です。 実証実験のなかで、 「送信先MACアドレスに任意のアドレスを指定した802.11フレーム」 の送信が必要となりました。 このようなフレームの送信は、 JAVAなど一般的なプログラミング言語で実現可能でしょうか。 最終的にはAndroid端末から送信出来るようにしたいのですが、 実現の方法が分からず困っています。 どなたかご存知のかた居られましたら、ご教示ください。 また、情報の不足など有りましたらご指摘下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
通常はアプリケーションからはIP Addressを指定しての交信が行われるのですが、直接無線信号の送受信が可能な近くの装置間や装置とルーター間の交信をMAC Addressを指定して行いたいと言う事なのですね。 普通はデータリンク層にアプリケーションから直接アクセスする事はなく、このレベルはパッケージとして実装されているので、これらを調べてパッケージ内のサブルーチンを直接呼ぶ必要があると思われます。 以下の情報はご存知だと思いますが、自分の再確認の意味もあって少しサーチして見ました。 直接の回答にならずに雑多な情報ですが、参考になれば幸いです。 http://www.nec.co.jp/octpower/seminar/languide/01_003.html 1. LANの概要 http://www.oreilly.co.jp/books/4873113083/ 802.11無線ネットワーク管理 第2版 他にもLinuxやNetwork関連の書籍を大規模書店等で調べてみて下さい。 java application levelからはMAC Addressにはアクセス出来ないようです。 oracle java se7 document ==> http://docs.oracle.com/javase/7/docs/api/ java.net C, C++レベルからはアクセス出来る筈です。 Android端末のOSはLinuxを基にされており、Ubuntu, Android等のソースは公開されているようです。 Android アプリケーション開発環境がサポートされているので、MAC Address access routineも見つかるのではと思われます。 このあたりに関しては詳しくないので次等から辿って調べてみて下さい。 http://ja.wikipedia.org/wiki/Android LINUX source 等とサーチして調べて下さい。 "wireless LAN" OR 802.11 "MAC address" 等を組み合わせてサーチしてみて下さい。 或いはソースコードのサーチをサポートされているサイトで調べてみて下さい。 code search ==> https://code.ohloh.net/ https://code.ohloh.net/search?s=IEEE%20802.11%20MAC%20Address http://www.krugle.com/ http://opensearch.krugle.org/document/search/#language=C&query=%22MAC%20Address%22 Linux source download ==> http://d.hatena.ne.jp/nuttinutti/20120312/1331554891 ==> http://lxr.linux.no/ http://lxr.linux.no/+trees http://lxr.linux.no/#linux+v3.13.5/ ==>net http://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers ==> modes of operation: http://wireless.kernel.org/en/users/Documentation/modes http://wireless.kernel.org/en/users/Documentation/hostapd その他 ネットワークシミュレータが或は参考になるのではと思われますので次のようにサーチして調べてみて下さい。 NS2 network simulator
その他の回答 (1)
- ninoue
- ベストアンサー率52% (1288/2437)
MAC Addressを指定しての送受信はUDPにて可能です。 例えば次のようにサーチして調べてみて下さい。 Java UDP packet 送受信 ==> http://yuu7777.fc2web.com/javanet6/12.htm UDPの送受信プログラム例 Java Tutorial でもUDPやTCPの送受信については解説されています。 java tutorial UDP java tutorial TCP java tutorial packet transfer MAC Address 次のFree Bookでもかなり詳しく解説されていたと記憶していますので調べてみて下さい。 http://www.mindview.net/Books/TIJ/
お礼
早速の返信ありがとうございます. 調べてみます.
補足
ひとつ確認なのですが, 「IPアドレス」を指定しての送受信 ではなく, 「MACアドレス」を指定しての送受信 がUDPで可能ということで間違いないですか? 前者は簡単に情報が出てくるのですが, 後者はあまり出てこず困っています. もう少し調査を続けてみます.
お礼
Javaなど比較的高レベルな言語からは扱うのが難しいようですね。 Androidだと他にもパミッションの問題などもあり他の方法を採用しました。 回答ありがとうございました。