我正在编写一个 C 程序来搜索本地网络上的 smb 共享并挂载它们。为了获取找到的 smb 服务器的主机名,我向服务器发送了一个 udp nbns 数据包。数据包正确,服务器回复。我正在使用wireshark来检查这个。我将我发送的数据包与 nbstat 发送的数据包进行了比较,我还比较了服务器返回的数据包。除了 id 和校验和,它们是相同的。
当我使用 nbstat 发出请求时,回复数据包被正确接收,但是对我自己的数据包的回复可能被防火墙阻止了。在收到服务器的回复后,客户端机器向服务器发送一条 icmp“Destination unreachable (Port unreachable)”消息。我怀疑我的防火墙正在发送它。
这是wireshark的输出
No. Time Source Destination Protocol Length Info
12 29.870065 192.168.1.245 192.168.1.21 NBNS 92 名称查询 NBSTAT *<00><00.......
13 29.870494 192.168.1.21 192.168.1.245 NBNS 2593 名称查询响应
259STAT 14.70 192.168.1.245 192.168.1.21 ICMP 281 目的地不可达(端口不可达)
我应该怎么做才能让回复通过?