• udp之关于linux udp收发包缓冲区大小


    1、修订单个socket的缓冲区大小:通过setsockopt使用SO_RCVBUF来设置接收缓冲区,该参数在设置的时候不会与rmem_max进行对比校验,但是如果设置的大小超过rmem_max的话,则超过rmem_max的部分不会生效;
    2、修订linux系统udp缓冲区大小:通过rmem_max来设置系统中udp缓存的上限,该值可通过如下方式查看:
    root@ubuntu:/mnt/hgfs/vm-shared/socket# cat /proc/sys/net/core/rmem_max
    131071
    通过如下方式进行修订:
    root@ubuntu:/mnt/hgfs/vm-shared/socket# vi /etc/sysctl.conf
    在文件/etc/sysctl.conf中新增如下信息:
    rmem_max=MAX
    需要注意的这里设置的rmem_max参数是整个系统的大小,不是单个socket的大小。
    修订后的大小可以通过如下命令查看:
    root@ubuntu:/mnt/hgfs/vm-shared/socket# sysctl -a | grep rmem_max

    net.core.rmem_max = 131071

    1. tcp 收发缓冲区默认值

    [root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_rmem 

    4096    87380   4161536

    87380  :tcp接收缓冲区的默认值

    [root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_wmem

    4096    16384   4161536

    16384  : tcp 发送缓冲区的默认值

    2. tcp 或udp收发缓冲区最大值

    [root@ www.linuxidc.com]# cat /proc/sys/net/core/rmem_max

    131071

    131071:tcp 或 udp 接收缓冲区最大可设置值的一半。

    也就是说调用 setsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen);  时rcv_size 如果超过 131071,那么

    getsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 去到的值就等于 131071 * 2 = 262142

    [root@ www.linuxidc.com]# cat /proc/sys/net/core/wmem_max 

    131071

    131071:tcp 或 udp 发送缓冲区最大可设置值得一半

    跟上面同一个道理

    3. udp收发缓冲区默认值

    [root@ www.linuxidc.com]# cat /proc/sys/net/core/rmem_default  

    111616:udp接收缓冲区的默认值

    [root@ www.linuxidc.com]# cat /proc/sys/net/core/wmem_default

    111616

    111616:udp发送缓冲区的默认值

    4. tcp 或udp收发缓冲区最小值

    tcp 或udp接收缓冲区的最小值为 256 bytes,由内核的宏决定;

    tcp 或udp发送缓冲区的最小值为 2048 bytes,由内核的宏决定

  • 相关阅读:
    Github markdown页面内跳转
    github gist 无法访问
    Install pyaudio on Ubuntu
    删除链表的倒数第N个节点
    电话号码的字母组合
    最长公共前缀
    盛最多水的容器
    字符串转化整数与回文数
    Z 字形变换
    LeetCode1-5题
  • 原文地址:https://www.cnblogs.com/guxuanqing/p/9200622.html
Copyright © 2020-2023  润新知