SSDP协议_sntp协议

SSDP协议_sntp协议近来在研究SSDP,SimpleServiceDiscoveryProtocol(简单服务发现协议)。这是用来实现无配置,自发现局域网内部服务的协议。由IPv4下有固定的239.255.255.250:1900这一固定的地址来负责多播数据。不过,从我的学习经历来说,要啃这种东西,最好的方法还是用例子搞懂名词,并实践一次。其实SSDP协议的请求就三种:byeby

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

近来在研究SSDP,Simple Service Discovery Protocol (简单服务发现协议)。

这是用来实现无配置,自发现局域网内部服务的协议。

由IPv4下有固定的239.255.255.250:1900这一固定的地址来负责多播数据。

不过,从我的学习经历来说,要啃这种东西,最好的方法还是用例子搞懂名词,并实践一次。其实SSDP协议的请求就三种: byebye, alive, discovery

byebye请求

NOTIFY * HTTP/1.1
Host: 239.255.255.250:1900
NT: someunique:idscheme3
NTS: ssdp:byebye
USN: someunique:idscheme3
  • NOTIFY 通知所有广播域的机器
  • HOST 值是固定的(IPv4),算是协议的一部分
  • NT (Notification Type)这个是GENA的定义,即通知类型,值一般是当前设备的类型
  • NTS (Notification Sub-Type)通知子类型,如果要遵守SSDP,这个值就代表了请求的类型,但是为什么NTS和NT搞混了呢……协议中写得非常明白 

    5.3.5. Shouldn’t the NT and NTS values be switched?

    Yes, they should. Commands such as ssdp:alive and ssdp:byebye should

    be NT values and the service type, where necessary, should be the

    NTS. The current mix-up is a consequence of a previous design where

    the NT header was used in a manner much like we use the USN today.

    This really needs to change.

  • USN 这个设备的UUID,防止设备的IP或者网络环境改变后,连接至错误的设备。

alive(服务上线/广播存活/心跳包)

NOTIFY * HTTP/1.1HOST: 239.255.255.250:1900CACHE-CONTROL: max-age=100LOCATION: http://10.5.4.81:49155/TxMediaRenderer_desc.xmlNT: upnp:rootdeviceNTS: ssdp:aliveUSN: uuid:001e4fd3fa0e0000_MR::upnp:rootdevice
  • CACHE-CONTROL说明这个设备状态至少在100秒内不会过期,过期时,所有设备就必须要刷新这信息,如果得不到新的数据,则认为此设备不可用。如果不提供CACHE-CONTROL或者EXPIRES,此设备的信息将不允许缓存,超时机制由接受端决定
  • LOCATION此设备的控制点或描述文件所在地

discovery请求

M-SEARCH * HTTP/1.1Host:239.255.255.250:1900ST:urn:schemas-upnp-org:device:InternetGatewayDevice:1Man:"ssdp:discover"MX:3
  • M-SEARCH 说明这是强制的搜索方法(由Mandatory Extensions in 
    HTTP中的Mandatory HTTP Requests确定)
  • ST (search term)搜索条件,指明需要搜索的设备,可以是类型,服务,甚至是UUID,至于怎么回应嘛……那是服务端的事了
  • Man M-SEARCH请求必须带的数据项,值必须为“ssdp:discover”
  • MX 优先级,数字越高,优先级越低

服务发现的现实流程

+---------+ +---------+               +-----------+
            | Client | | Server |               | Multicast |
            +---------+ +---------+               +-----------+
---------------\ | |	         | | Initialized  |-|           | |
---------------- | |	         | |           | |
	| discovery |	         | |------------------------------------->| |           | |
	| |          Client wants ST | |           |< ------------------------|
	| | -------------------\     | |           |-| In discovery ST? | |
	| | --------------------     | |           | |
	| | (In ST) alive            | |           |------------------------->|
	| |	         | |           | Here is Server |
	|< ------------------------------------|
	| |	         |

好了,这个协议就这么Simple~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183147.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python psutil 获取命令历史_python之psutil

    python psutil 获取命令历史_python之psutilpsutil=processandsystemutilities,psutil是个跨平台库,能够轻松实现获取系统运行的进程和系统利用率,包括CPU、内存、磁盘、网络等信息。Linux系统下的安装pipinstallpsutil现在开始看看它的使用一cpu#查看逻辑cpu的个数>>>psutil.cpu_count()2#查看物理cpu的个数>>&g…

    2022年6月1日
    26
  • 判断完全二叉树

    判断完全二叉树完全二叉树的定义:一棵二叉树,除了最后一层之外都是完全填充的,并且最后一层的叶子结点都在左边。https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91/7773232?fr=aladdin百度定义 思路:层序遍历二叉树如果一个结点,左右孩子都不为空,则pop该节点,将其左右孩子入队列…

    2022年7月13日
    22
  • python中decode和encode的区别_python中decode和encode区别

    python中decode和encode的区别_python中decode和encode区别#-*-coding:utf-8importsys”’*首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb231…

    2022年10月7日
    0
  • 计算机网口在什么位置,电脑网线插路由器哪个口?

    计算机网口在什么位置,电脑网线插路由器哪个口?问:电脑网线插路由器哪个口?我的路由器上有5个接口,请问电脑用网线应该插在路由器的哪一个接口?答:普通的家用路由器上的接口有2种类型:WAN接口,LAN接口。其中WAN接口只有1个,LAN接口一般是4个(有的路由器可能只有2个、3个LAN接口)。温馨提示:WAN接口,在有的路由器中叫做:Internet接口,广域网接口等,这一点大家稍微注意一下。但绝大部分的路由器上面,标注的都是WAN接口。在安装…

    2022年6月26日
    89
  • ALSA的pulse插件_pulseaudio启动

    ALSA的pulse插件_pulseaudio启动此博文为记录我初次进行树莓派开发语音唤醒时遇到的问题以及解决方法,如果有更好的方法,欢迎讨论。问题一描述:我在进行snowboy的安装过程中,所有的程序能够正常运行,也能正常录音以及音频输出,但是树莓派重启后,我运行之前设置好的程序,程序依然能够运行,但不能进行正常的唤醒。我查了/.asoundrc没有问题,录音设备和音频输出设备也是正常的状态,在系统中也能列出。问题一解决:经过多次重装系统(因为我的树莓派不只是只有做语音唤醒,我一开始也不知道是哪里的问题)的排除,发现是树莓派重启之后pulseau

    2022年10月16日
    0
  • VC 6 编译时一直处于Linking…状态,无响应

    VC 6 编译时一直处于Linking…状态,无响应

    2021年7月30日
    77

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号