c - 在 c (linux) : How to change packet headers 中发送 ipv6 jumbograms

标签 c linux sockets ipv6

如果这个问题太幼稚,我很抱歉,但我很困惑。我想发送 IPv6 jumbograms(以便能够多播大小 > 64 KB 的数据包)。我已经能够成功地多播正常的 IPv6 UDP 数据包。 为了从 RFC 2675 发送巨型图,我知道我必须进行以下更改:

  1. 设置负载长度为0
  2. 将下一个 header 设置为逐跳

但是,我不知道如何在 c 套接字编程 中实现这些(调用哪些函数等)。我是否必须创建自定义 header ,或者是否有像 sendto 这样的函数可用于发送巨型图?

最佳答案

如果您正在制作自己的 header ,则可以使用原始套接字。如需更多信息,请输入 man -s7 rawlook here .请注意,您实际上需要以这种方式实现您自己的 IP 堆栈。

但是,我的理解是 linux 本身就支持 IPv6 jumbograms,所以你不需要费心。尝试 ifconfig lo mtu 100000 并在环回设备上进行一些测试以进行检查。

我怀疑问题可能是您的网络适配器和路径上的所有内容(端到端)也需要支持巨型图。

关于c - 在 c (linux) : How to change packet headers 中发送 ipv6 jumbograms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32685846/

相关文章:

gcc 中的 C 副作用(前缀/后缀运算符和优先级)

C - 函数处理 const *

python - 使用环境变量进行简单的进程间通信

c++ - UDP并发客户端recvfrom错误

c - 在Linux 2.4中,最小的 child 列表是循环的吗?

c - 子序列计算器。我可以让它更有效率吗?

python - 在 Linux 上使用 Python 获取文件创建时间

Linux mkdir 创建带有序列号的目录

java - 线程一直卡在 Socket/Printwriter 交互上

sockets - HTTP 丢包