openwrt wsdd模块介绍

wsdd简介

wsdd是一个实现Web服务发现主机守护进程的工具。这使得(如Samba)主机,像你的本地网络存储设备,能够被Windows这样的Web服务发现客户端找到。

目的

由于Windows不再支持NetBIOS发现,wsdd使用Web服务发现方法使主机再次出现在Windows中。这对运行Samba的设备特别有用,比如你的局域网中的NAS或文件共享服务器。发现模式则会在本地子网内搜索其他WSD服务器。

背景

自Windows 10版本1511起,默认情况下禁用了对SMBv1的支持,因此也禁止了通过NetBIOS发现设备。从1709版开始的后续Windows版本,具体取决于发行版,可能根本不允许安装SMBv1客户端。这意味着运行Samba的主机不会在资源管理器的"网络"视图中列出。尽管连接没有问题,Samba仍能正常工作,但用户可能希望Samba主机能自动显示在Windows中。

你可能会问:Samba本身呢?这项功能不应该包含在Samba里吗!?是的,也许应该。然而,即使Samba主机不在网络邻居列表中,使用Samba作为文件共享服务仍然是可能的。你可以使用主机名(前提是名称解析有效)或IP地址来连接,并且仍然可以设置网络驱动器和使用共享文件夹。

应用案例和最佳实践

文件共享服务器

wsdd2 常用于文件共享服务器,使得 Windows 客户端能够轻松发现并连接到服务器上的共享文件夹。通过配置适当的权限和共享设置,可以实现高效且安全的文件共享。

打印机服务

在打印服务器上部署 wsdd2,可以使 Windows 客户端自动发现并连接到网络打印机。这简化了打印机的管理和使用,提高了工作效率。

典型生态项目

Samba

Samba 是一个开源的 SMB/CIFS 文件、打印和登录服务器,广泛用于 Unix 和 Linux 系统。wsdd2 与 Samba 结合使用,可以提供完整的文件和打印服务解决方案。

ksmbd-tools

ksmbd-tools 是用于管理 ksmbd 内核服务器的用户空间工具。与 wsdd2 一起使用,可以进一步增强文件共享服务的安全性和性能。

通过以上教程,你应该能够快速启动并使用 wsdd2 项目,并了解其在文件共享和打印服务中的应用案例和最佳实践。

总结:

wsdd是可用来发现设备,让我们windows电脑在网络里面能够发现设备。

源码地址为:

github.comhttps://github.com/tobiaswaldvogel/openwrt-addpack/blob/master/wsdd/src/wsdd.c

那么windows电脑是怎么发现设备呢?

是以组播的形式让别人发现,具体协议为mdns协议

组播地址: 组播地址使用的是D类地址,地址范围为:224.0.0.0---239.255.255.255

mac地址前三个字节固定为:01:00:5E,后三个字节是组播IP的最后三个字节

mDNS 工作原理简单描述

mdns 使用组播地址为: 224.0.0.251 (ipv6: FF02::FB) 端口为5353,mdns 是用于局域网内部的,并且主机的域名为.local 结尾,每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁(域名),和我的IP地址是多少。然后其他有mdns服务的主机就会响应,也会告诉你,它是谁(域名),它的IP地址是多少。 当然设备需要服务时,就是使用mdns 查询域名对对应的ip地址,对应的设备收到该报文后同样通过组播方式应答,此时其他主机设备也是可以收到该应答报文,其他主机也会记录域名和ip 以及ttl 等,更新缓存。

比如,A主机进入局域网,开启了 mDNS 服务,并向 mDNS 服务注册以下信息:我提供 FTP 服务,我的IP是 192.168.1.101,端口是 21。当B主机进入局域网,并向 B 主机的 mDNS 服务请求,我要找局域网内 FTP 服务器,B主机的 mDNS 就会去局域网内向其他的 mDNS 询问,并且最终告诉你,有一个IP地址为 192.168.1.101,端口号是 21 的主机,也就是 A 主机提供 FTP 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。

报文如下:

点击查看,基于看到该设备提供的服务有哪些:

相关推荐
龙哥说跨境20 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我35 分钟前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
半盏茶香39 分钟前
【C语言】分支和循环详解(下)猜数字游戏
c语言·开发语言·c++·算法·游戏
小堇不是码农1 小时前
在VScode中配置C_C++环境
c语言·c++·vscode
Elaine2023911 小时前
06 网络编程基础
java·网络
小肥象不是小飞象1 小时前
(六千字心得笔记)零基础C语言入门第八课——函数(上)
c语言·开发语言·笔记·1024程序员节
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强2 小时前
Linux之sed命令详解
linux·运维·服务器
海绵波波1072 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
Lary_Rock4 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器