【Linux】tcp缓冲区大小的默认值、最大值
Author:阿冬哥
Created:2013-4-17
Blog:http://blog.csdn.net/c359719435/
Copyright 2013 阿冬哥 http://blog.csdn.net/c359719435/
使用以及转载请注明出处
case SO_SNDBUF:
/* Don't error on this BSD doesn't and if you think
about it this is right. Otherwise apps have to
play 'guess the biggest size' games. RCVBUF/SNDBUF
are treated in BSD as hints */ if (val > sysctl_wmem_max)//val是我们想设置的缓冲区大小的值
val = sysctl_wmem_max;//大于最大值,则val值设置成最大值 sk->sk_userlocks |= SOCK_SNDBUF_LOCK;
if ((val * ) < SOCK_MIN_SNDBUF)//val的两倍小于最小值,则设置成最小值
sk->sk_sndbuf = SOCK_MIN_SNDBUF;
else
sk->sk_sndbuf = val * ;//val的两倍大于最小值,则设置成val值的两倍 /*
* Wake up sending tasks if we
* upped the value.
*/
sk->sk_write_space(sk);
break; case SO_RCVBUF:
/* Don't error on this BSD doesn't and if you think
about it this is right. Otherwise apps have to
play 'guess the biggest size' games. RCVBUF/SNDBUF
are treated in BSD as hints */ if (val > sysctl_rmem_max)
val = sysctl_rmem_max; sk->sk_userlocks |= SOCK_RCVBUF_LOCK;
/* FIXME: is this lower bound the right one? */
if ((val * ) < SOCK_MIN_RCVBUF)
sk->sk_rcvbuf = SOCK_MIN_RCVBUF;
else
sk->sk_rcvbuf = val * ;
break;
SO_RCVBUF:
Sets or gets the maximum socket receive buffer in bytes.
The kernel doubles this value (to allow space for bookkeeping overhead) when it is set using setsockopt(),
and this doubled value is returned by getsockopt().
The default value is set by the /proc/sys/net/core/rmem_default file,
and the maximum allowed value is set by the /proc/sys/net/core/rmem_max file.
The minimum (doubled) value for this option is .
[root@cfs_netstorage core]# cat /proc/sys/net/core/rmem_default1048576[root@cfs_netstorage core]# cat /proc/sys/net/core/wmem_default512488
/proc/sys/net/ipv4/tcp_wmem[root@cfs_netstorage core]# cat /proc/sys/net/ipv4/tcp_wmem4096 16384 131072 //第一个表示最小值,第二个表示默认值,第三个表示最大值。/proc/sys/net/ipv4/tcp_rmem[root@cfs_netstorage core]# cat /proc/sys/net/ipv4/tcp_rmem4096 87380 174760
[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,由内核的宏决定
【Linux】tcp缓冲区大小的默认值、最大值的更多相关文章
- socket tcp缓冲区大小的默认值、最大值
Author:阿冬哥 Created:2013-4-17 Blog:http://blog.csdn.net/c359719435/ Copyright 2013 阿冬哥 http://blog.cs ...
- TCP缓冲区大小及限制
这个问题在前面有的部分已经涉及,这里在重新总结下.主要参考UNIX网络编程. (1)数据报大小IPv4的数据报最大大小是65535字节,包括IPv4首部.因为首部中说明大小的字段为16位.IPv6的数 ...
- TCP/IP学习(四)TCP缓冲区大小及限制(转)
链接来自:http://blog.csdn.net/ysu108/article/details/7764461 这个问题在前面有的部分已经涉及,这里在重新总结下.主要参考UNIX网络编程. (1)数 ...
- [转]linux tcp/ip调优
LINUX tcp/ip性能调优 On 2011年03月15日, in linux, tips, by netoearth 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接 ...
- 网络编程之UDP(2)linux查看socket默认缓冲区大小和最大值
默认值 命令: cat /proc/sys/net/core/rmem_default 结果: 最大值 命令: cat /proc/sys/net/core/rmem_max 结果:
- Linux网卡调优篇-禁用ipv6与优化socket缓冲区大小
Linux网卡调优篇-禁用ipv6与优化socket缓冲区大小 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一般在内网环境中,我们几乎是用不到IPV6,因此我们没有必要把多不 ...
- udp之关于linux udp收发包缓冲区大小
1.修订单个socket的缓冲区大小:通过setsockopt使用SO_RCVBUF来设置接收缓冲区,该参数在设置的时候不会与rmem_max进行对比校验,但是如果设置的大小超过rmem_max的话, ...
- [cmd]如何设置 Windows 默认命令行窗口大小和缓冲区大小
Windows 命令行 cmd 窗口系统默认的大小(80*40)对于现在的屏幕配置已经跟不上时代了,我们总是要把它改大些,而且缓冲区大小也想改得大大的.单纯的为当前的 Windows 命令行窗口修改显 ...
- 如何设置 Windows 默认命令行窗口大小和缓冲区大小
关键字: 命令行不能全屏 命令行最大化只有一半屏幕 命令行 字体 背景 颜色 解决方案:http://unmi.cc/save-windows-command-size/ 简要说明: win+r,输入 ...
随机推荐
- Ping命令的设计与实现
ping命令的设计与实现 发表于 C++ Socket TCP/IP 2016-05-15 19:07 字数: 10796 阅读量: 528 ping 命令使用的相关 TCP/IP 协议 ping 命 ...
- asp.net mvc3.0安装失败之终极解决方案
安装失败截图 原因分析 因为vs10先安装了sp1补丁,然后安装的mvc3.0,某些文件被sp1补丁更改,导致“VS10-KB2483190-x86.exe”安装不了,造成安装失败. 解决方案 方法1 ...
- C++: 其他类型转string
1.to_string函数 C++11新增的函数,c++11标准增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数(string转int,long,以及l ...
- c++ 用new后delete,而继续输出指针后果 new/new[]/delete/delete[]区别
#include<iostream> #include<cstring> #include <string.h> int main(){ ]; ;i<;i++ ...
- [SinGuLaRiTy] 二分图&匈牙利算法
[SinGuLaRiTY-1019] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 二分图 二分图是图论中一种特殊的图形.顾名思义,二分图G ...
- hadoop HDFS文件系统的特征
hadoop HDFS文件系统的特征 存储极大数目的信息(terabytes or petabytes),将数据保存到大量的节点当中.支持很大单个文件. 提供数据的高可靠性,单个或者多个节点不工作,对 ...
- ReentranLock实现原理
原文链接:https://blog.csdn.net/jeffleo/article/details/56677425 一.ReentranLock 相信我们都使用过ReentranLock,Reen ...
- UncategorizedSQLException Mybatis中jdbcType的作用
使用MyBatis框架做更新操作时,在该字段需要更新的内容为空时,就会出现1111错误,也就是无效的列类型,这个时候你就要使用jdbcType.至于什么时候要使用到javaType我还没遇到过,而且我 ...
- 二维树状数组总结&&【洛谷P4514】 上帝造题的七分钟
P4514 上帝造题的七分钟 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了00的n×mn×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b)(a,b),右下 ...
- iOS开发小工具
基本上在Mac Appstore里面都有,很多是免费的.因为某种原因要重装Mac系统(这么多年来首次重装Mac系统),特意整理了下备忘. 1.AppIcon: 可以瞬间把图片转换为应用所需要的Icon ...