udp Socket 发送缓冲区 最大可以为多大

udp Socket 发送缓冲区 最大可以为多大,第1张

internet上的标准mtu值为576字节,所以我建议在进行internet的udp编程时.最好将udp的数据长度控件在548字节(576-8-20)以内.

ipv4协议规定ip层的最小重组缓冲区大小为576!所以,建议udp包不要超过这个大小,而不是因为internet的标准mtu是576!

要更改容器内的 UDP 缓冲区,可以通过挂载 sysctl.conf 文件来实现。sysctl.conf 文件包含了系统的内核参数设置,可以使用它来更改容器内的 UDP 缓冲区大小。

以下是一些步骤:

在主机上创建一个 sysctl.conf 文件,其中包含要更改的内核参数。例如,要更改 UDP 缓冲区大小,可以在 sysctl.conf 文件中添加以下行:

net.core.rmem_max = 26214400

net.core.wmem_max = 26214400

在运行容器时,将主机上的 sysctl.conf 文件挂载到容器内的 /etc/sysctl.d 目录。例如:

docker run -it --sysctl=/path/to/sysctl.conf centos

在容器内,使用 sysctl 命令来加载新的内核参数设置。例如:

sysctl -p /etc/sysctl.d/sysctl.conf

请注意,如果容器内的 /etc/sysctl.conf 文件是只读的,那么可能需要使用 --privileged 选项来启动容器,以便具有足够的权限来更改该文件。然而,这并不是一个安全的做法,因为容器中的应用程序可能会访问到潜在危险的内核参数设置,所以最好避免使用 --privileged 选项。

有3点值得说明:

1. 上面我们仅仅写了接收的内核缓冲区, 关键字是SO_RCVBUF, 如果是发送的内核缓冲区, 那就用SO_SNDBUF, 有兴趣的童鞋可以稍微修改一下上面程序即可。

2. 从程序的结果我们可以看到, sockClient1和sockClient2两者的发送内核缓冲区没有任何关系。

3. 听一网友说过, tcp才有所谓的内核缓冲区, udp没有。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7752991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存