找回密码
 立即注册
首页 业界区 业界 【小记】解决校园网中不同单播互通子网间 LocalSend 的 ...

【小记】解决校园网中不同单播互通子网间 LocalSend 的发现问题

诀锺 2026-1-17 23:10:16
各位好久不见~下半年又是忙论文又是忙项目的,实在是没什么时间更新笔记了。趁着今天有点空闲,咱来写写最近抽空解决的一个小网络问题叭(゜ー゜)。
0. 问题背景

咱实验室有一台连接着打印机的计算机,我们在这台机器上挂了一个专门注册的 QQ 账号,需要打印文件时把文件发送到这个 QQ 账号上,在打印机计算机上下载下来就行了。
但是吧,像是比较机密文件的话,如果这样过一道别人的服务器感觉不太好,正好咱当时也找到了局域网文件传输工具 LocalSend,遂试了试。
结果我发现,打印机计算机上的 LocalSend 客户端无法发现我笔记本上的 LocalSend 端,反之亦然。我还得到打印机计算机上手动输入笔记本电脑被分配的 IP 地址才能传输文件,略显麻烦。


  • 更不提校园网这有线网和无线网给设备分配的全是动态 IP,可能过一段时间就会变。
1.jpeg

分析了一下发现:

  • 没有办法互相发现是因为,我的笔记本接入的是校园网无线网络,而打印机计算机接入的是有线网络,两个网络在不同的子网段内,阻隔了 LocalSend 发出的组播包 (可以参考 LocalSend 协议)。

  • 可以手动输入 IP 地址来指定客户端传输文件,是因为 LocalSend 实际的传输等请求是单播的,而校园网在三层设备上有配置路由转发,所以单播包是可以互通的。

于是咱要解决的问题就是,如何在这种多播 (组播) 隔离但是单播互通的不同局域子网间实现 LocalSend 的发现功能。
1. 问题描述

2.png

Figure 1: 问题示意图。 可以看到 VLAN 0 中的 LocalSend 客户端无法成功发现 VLAN 2 中的 LocalSend 客户端,反之亦然。
LocalSend 客户端采用 UDP 组播来把自己的存在通告给局域网中其他客户端。然而,像校园网这种大型局域网,通常为了管理和减小广播域规模等目的,会将网络划分为多个 VLAN(虚拟局域网),对应多个子网,即使是现实中距离很近的两个设备,也有可能在不同的 VLAN 中。


  • 比如我连接到校园网 WiFi 的笔记本电脑和连接有线校园网的实验室打印机电脑,虽然在同一间屋子,但就是处于不同网段的网络中。
不同子网之间的数据转发依赖于第三层路由设备来实现,不幸的是,LocalSend 向 224.0.0.x 组播地址及应用端口发送的 UDP 报文段是不会被三层设备转发的,而且其 TTL 值为 1,Wireshark 抓包如下:
3.png

Figure 2: Wireshark 抓包显示 LocalSend 发送的组播 UDP 报文段的 TTL 值为 1。
因此就有了明明两台设备近在咫尺,但是却没法互相发现对方 LocalSend 客户端的尴尬局面 ㄟ( ▔, ▔ )ㄏ。
2. 解决问题

2.0. 思路

尽管多播被隔离了,但是办公区校园网在三层配置上是会转发单播包的,我可以通过单播和不同的 VLAN 中的主机进行通信。
一个 LocalSend 客户端在尝试发现局域网内其他客户端时,会发送组播 UDP 包来声明自己的存在,其他客户端收到组播包后会通过单播的 HTTP 请求来在这个客户端上进行注册。因为单播可以跨 VLAN,所以这个注册操作是可以实现的,我可以替 LocalSend 客户端向局域网内的其他 LocalSend 客户端发送注册请求,从而实现跨 VLAN 的发现和注册。
从官方的协议文档可以看到 LocalSend 的通告包和注册请求的负载中都只有端口信息,没有源 IP 信息,客户端在处理到来的请求时实际上是从网络层分组头部获取到源 IP 地址的,因此这个请求必须从 LocalSend 客户端所处的主机上发出。为了实现这点,我可以在每台有 LocalSend 的主机上都额外运行一个工具进程来代发注册请求
关键的问题来了,这些工具进程怎么知道局域网内其他 LocalSend 客户端的存在呢?其实我可以借助单播传输来实现这些工具进程之间的通信,从而让它们互相交换各自了解的 LocalSend 客户端信息。
为了解决动态 IP 的问题,我可以把其中一个或多个工具进程作为交换节点部署在拥有静态 IP 的服务器上(内网和外网的均可),然后让其他工具进程连接到这些交换节点,当交换过程收敛时,这些工具进程就能互相了解对方所处主机上的 LocalSend 客户端信息了(也让 LocalSend 客户端互相知晓了对方的存在)。

正好最近学了 Go 语言,照着上面这个思路实现下来,LocalSend Switch 这个工具就诞生辣!٩(>௰

相关推荐

2026-1-18 18:13:28

举报

2026-1-21 17:30:30

举报

喜欢鼓捣这些软件,现在用得少,谢谢分享!
4 天前

举报

您需要登录后才可以回帖 登录 | 立即注册