You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang发送原始TCP包遇net.Dial lookup错误求助

问题:使用Go发送原始TCP包时net.Dial报错"no such host"

我正在学习Golang的raw sockets,想要开发一个发送原始TCP包的工具,已自行构建IPv4和TCP头部,参考了网络资料并借助ChatGPT,但调用net.Dial函数时出现如下错误:

dial ip4:tcp: lookup 192.168.0.44:9095: no such host

目标主机可正常ping通,在另一台Linux虚拟机运行该工具时也出现相同错误。工具代码如下:

package main

import (
    "fmt"
    "net"

    "github.com/google/gopacket"
    "github.com/google/gopacket/layers"
)

func main() {
    /*
        source_addr := net.IP("192.168.0.254")
        destination_addr := net.IP("192.168.0.41")
        source_port := layers.TCPPort(12345)
        destination_port := layers.TCPPort(9095)
    */

    ipv4_header := &layers.IPv4{
        Version:    4,
        Length:     20,
        TOS:        0,
        Id:         1234,
        FragOffset: 0,
        TTL:        64,
        Protocol:   6,
        Checksum:   0,
        SrcIP:      net.IP{192, 168, 0, 254},
        DstIP:      net.IP{192, 168, 0, 44},
        Options:    nil,
        Flags:      layers.IPv4DontFragment,
    }

    tcp_header := &layers.TCP{
        SrcPort: layers.TCPPort(12345),
        DstPort: layers.TCPPort(9095),
        Seq:     123,
        Ack:     0,
        SYN:     true,
        Window:  8192,
    }

    buffer := gopacket.NewSerializeBuffer()
    options := gopacket.SerializeOptions{}
    serializing_error := gopacket.SerializeLayers(buffer, options, ipv4_header, tcp_header)
    if serializing_error != nil {
        fmt.Println(serializing_error.Error())
    }

    //connection, connection_error := net.Dial("ip4:tcp", "192.168.0.41")
    //fmt.Println(fmt.Sprintf("%s:%d", ipv4_header.DstIP.String(), layers.TCPPort(9095)))
    connection, connection_error := net.Dial("ip4:tcp", "192.168.0.44:9095")
    if connection_error != nil {
        fmt.Println(connection_error.Error())
    }
    defer connection.Close()

    packet := buffer.Bytes()
    _, sending_error := connection.Write(packet)
    if sending_error != nil {
        fmt.Println(sending_error.Error())
    }
}

另外,我使用ChatGPT生成的Python脚本在Linux虚拟机上监听原始TCP包。


内容的提问来源于stack exchange,提问作者mehmet han

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:25:13