【问题标题】:How to include an IP packet in C linux sockets?如何在 C linux 套接字中包含 IP 数据包?
【发布时间】:2011-06-07 16:03:50
【问题描述】:

我想在 Socket 编程中包含一个 IP 数据包。我有一个包含 igmp 数据包的现成 Ip 数据包。我不想设计 igmp 协议,但想使用该数据包发送 igmp 查询。通过某种方式,我必须将 Ip 数据包识别为 IP 数据包而不是 TCP/UDP 数据。

【问题讨论】:

  • 我认为如果你想得到答案,你必须很多更好地解释你的问题。
  • 好吧,让我们再试一次...... 通常在 tcp/udp 套接字中,如果我们通过套接字编程接收这些数据包,我们会得到包含为 tcp/udp 的协议。现在我想发送 IP 数据包而不是 tcp 或 udp,并且(最外层 IP 数据包的)协议字段也应该指示包含的协议是 IP。简而言之,我想要 IP 中的 IP 或 IP 封装.....在此先感谢

标签: c linux sockets ip tunneling


【解决方案1】:

如果您想发送 IGMP 数据包,您应该使用 setsockopt() API 来执行此操作。

【讨论】:

    【解决方案2】:

    您必须将the raw socketsendmsg 一起使用。这需要root 权限。

    【讨论】:

    • CAP_NET_RAW 能力,sudo execcap 'cap_net_raw=ep' app
    猜你喜欢
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 2016-01-07
    • 2013-05-25
    • 2018-05-13
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多