您可以使用 icmp 定位特定端口吗?

Can you target a specific port using icmp?

我相信这个标题很容易理解,但为了以防万一,我会进一步解释。

我正在用 Go 编写一个函数,它使用 icmp 检查特定服务是否 运行。我从 Go 中实现的 ping 中得到了这个想法。当我尝试命令行 ping 时,它无法解析 127.0.0.1:8080,并且功能也如此,这是有道理的。但是我可以使用 icmp 来检查我丢失的地址和端口吗?或者我应该坚持像 tcp 这样的目标端口?

现在我有这个简单的功能,我可以只使用tcp,但我很好奇我是否可以使用像icmp这样的东西。

func (c *Controller) Ping() error {
    conn, connErr := net.Dial("ip4:icmp", c.APIServerIP)
    if connErr != nil {
        return connErr
    }
    conn.SetDeadline(time.Now().Add(3 * time.Second))
    defer conn.Close()
    return nil
}

没有。 ICMP 中没有端口。

如果您想知道某个特定的 TCP 服务器是否是 运行,请尝试连接到它。