如何向 ipv4 数据包添加选项?

How do I add options to the ipv4 packet?

提问人:Pedro Henrique 提问时间:11/15/2023 最后编辑:user207421Pedro Henrique 更新时间:11/15/2023 访问量:56

问:

我正在用 C 语言开发一个网络工具,它允许我向主机发送自定义数据包。到目前为止,一切都很好,但我决定实施 IPv4 选项,但我没有找到任何关于如何做到这一点的信息。

我找到了,但我不知道如何使用它来实现它:struct optionsstruct iphdr

struct options {
__u32       faddr;              /* Saved first hop address */
unsigned char   optlen;
unsigned char srr;
unsigned char rr;
unsigned char ts;
unsigned char is_setbyuser:1,           /* Set by setsockopt?           */
            is_data:1,          /* Options in __data, rather than skb   */
            is_strictroute:1,       /* Strict source route          */
            srr_is_hit:1,           /* Packet destination addr was our one  */
            is_changed:1,           /* IP checksum more not valid       */  
            rr_needaddr:1,          /* Need to record addr of outgoing dev  */
            ts_needtime:1,          /* Need to record timestamp     */
            ts_needaddr:1;          /* Need to record addr of outgoing dev  */
 unsigned char __pad1;
 unsigned char __pad2;
 unsigned char __pad3;
 unsigned char __data[0];
 };
C Linux 套接字 IP

评论

2赞 Barmar 11/15/2023
您是否尝试过阅读 RFC 791?它显示了 IP 标头的构造方式,包括选项。
1赞 Ben Voigt 11/15/2023
与 或setsockopt()IP_HDRINCLIP_OPTIONS
1赞 tadman 11/15/2023
“包”在这里是“包”的意思?
0赞 Pedro Henrique 11/15/2023
据我所知,Socket Opt 不允许为数据报本身指定选项。仅套接字
0赞 user207421 11/15/2023
你在哪里读到的?手册页中没有这样说:“IP_OPTIONS(从 Linux 2.0 开始):设置或获取 IP 选项,以便与来自此套接字的每个数据包一起发送。你打算重新发布这个问题多少次?据我计算,已经是第三次了。请停止它,并编辑您的问题以改进它。

答: 暂无答案