upnp/ssdpプロトコルで使用される NOTIFY および M-SEARCH メッセージの目的の背後にある私の混乱を誰かが解決してくれることを願っています。
私の理解では、デバイスが他の UPNP 対応デバイスに自分自身をアドバタイズしたい場合は NOTIFY メッセージが送信され、デバイスが他の UPNP 対応デバイスについて知りたい場合は M-SEARCH メッセージが送信されます。
したがって、私のデバイスがブロードキャスト アドレス (SSDP,239.255.255.250 の場合) を介して他のデバイスから M-SEARCH メッセージを受信した場合、適切な形式で応答します。
HTTP/1.1 200 OK
CACHE-CONTROL: max-age = seconds until advertisement expires
DATE: when response was generated
EXT:
LOCATION: URL for UPnP description for root device
SERVER: OS/version UPnP/1.0 product/version
ST: search target
USN: advertisement UUID
これが私の質問です。そもそもなぜ NOTIFY メッセージが存在するのでしょうか? M-SEARCH を見て要求されたデバイスにデバイス情報を送り返すので、求められない限り NOTIFY でデバイス情報を事前に通知する意味がないように思えます。 NOTIFY が送信された時点では利用できない場合があります。
つまり、M-SEARCH と比較した NOTIFY の正確な目的を、できれば実際の使用例とともに知りたいと思います。
それとも、このプロトコルを完全に誤解しているだけですか?