WiresharkでOSCの疎通を確認する
なぜかOSCが届かない… あと5分でオープンなのに、、ということ、ありますよね。
そんな時に 「なんか変だから、とりあえずWireshark」と脳死で使うべき パケットキャプチャツール「Wireshark」について解説します
Wiresharkとは?
Wiresharkはオープンソースのパケットキャプチャツールで、ネットワークインターフェイスの通信の状態をすべてキャプチャすることができます
Wiresharkを使うメリット
- ローレベルで通信内容のキャプチャが行われるのでファイアウォールの状態に左右されない
- 他のアプリケーションでポートをリッスンしていてもメッセージが到達しているかどうかが判別できる
→ つまり、NICにパケットが到達していたら確実に確認できる ので不具合の原因切り分けにとても便利です
Wiresharkのインストール
公式のWebサイトからインストーラーをダウンロードしてインストールします
何も考えずにNextを押し続けるだけでOKですが、Npcap
というツールをインストールしないとパケットキャプチャが使えないので Npcap
は確実にインストールしてください。(デフォルトでインストールされるのでNextポチポチしていれば問題ないです)
ポータブル版もありますが、上記の Npcap
がインストールされなかった気がするので、基本的にはインストーラー版のほうがいいと思います
Wiresharkの使い方
Wiresharkを起動すると ↑ のような画面が表示されます。
何かしらの通信が行われているデバイスは自動的に上のほうに来るようになっているので、目的のネットワークインターフェイス(NIC)を選択して左上にあるサメのヒレのようなボタンを押すとキャプチャが始まります
一点、注意が必要なのは、PC内ローカルの通信をキャプチャしたい時は Adapter for loopback traffic capture
を選択する必要がある点です。
PC外との通信を見たい場合は深く考えずに目的のNICの名前を選択すればOKです
キャプチャを停止する時は停止ボタン、最初の画面に戻ってNICの選択をやりなおしたい時はなんかバッテンのボタンを押します
OSCを扱う時に便利な設定
Analyze > Enabled Protocols
から OSC用のフィルタ osc_udp
を有効化しておくとOSCっぽいパケットのタイプを自動で判別してくれるようになります。
有効化後、検索窓っぽい所に osc
とうつと、OSCのパケットのみが表示されるようになります
パケットの内容の確認
適当なパケットを選択すると ↑ のような表示になると思います。この中の User Datagram Protocol
のあたりの Destination Port
がOSCの宛先アドレスになっています。なので、このパケットは ポート10001に向けて送信されたメッセージだということがわかります
また、osc_udp
プロトコルを有効にしているとOSCの内容もパースして表示してくれます。便利ですね
原因の切り分け
さて、ここまでの内容でNICに入ってきたパケットをWiresharkを使って確認することができたと思います。
ここからはこの情報を使ってどういったトラブルシューティングができるかについて解説していきます
Wiresharkでパケットは確認できるが受信できない場合
受信側のポートが間違っていないか
↑ の内容で到達したパケットがどのポートにむけて送信されたがわかるので、その番号と受信側のポート設定を確認します
他のアプリーケーションですでにポートをリッスンしていないか
IP通信では基本的に同じポートを複数のアプリケーションで同時に使うことができません。 なので、先に使っているアプリケーションがないかを確認します
Windowsに標準で入っている Resource Monitor
というアプリケーションを使います。
Network
タブを選択、Listening Ports
リストの中に現在使用中の全てのポートが表示されています。その中に問題になっているポート番号がないかを確認します
ファイアウォールでブロックされていないか
ここまでで問題がなかった場合、Windowsや他のセキュリティソフトのファイアウォールでパケットが遮断されている可能性があります。ファイアウォールの設定をみなおすか、一時的に無効化して受信状態に変化があるか確認します
Wiresharkでパケットが確認できない場合
Wiresharkでパケットが確認できない場合は、おそらく物理的な問題やウッカリ!がほとんどだと思います
- ネットワークケーブルは繋っているか、ダメなケーブルを使っていないか
- ネットワークハブのLINK LEDはついているか
- そもそもメッセージが送信されているか
などを確認しましょう
Discussion