首页 > 其他分享 >tcp与udp缓冲区大小总结

tcp与udp缓冲区大小总结

时间:2022-10-31 23:33:39浏览次数:66  
标签:udp 131071 tcp 缓冲区 net 默认值


1.tcp收发缓冲区默认值   
[root@localhost /]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 4194304
87380 :tcp接收缓冲区的默认值
[root@localhost /]# cat /proc/sys/net/ipv4/tcp_wmem
4096 16384 4194304
16384 : tcp发送缓冲区的默认值

2.udp收发缓冲区默认值
[root@localhost /]# cat /proc/sys/net/core/rmem_default
110592
110592:udp接收缓冲区的默认值
[root@localhost /]# cat /proc/sys/net/core/wmem_default
110592
110592:udp发送缓冲区的默认值

3. tcp 或udp收发缓冲区最大值
[root@localhost /]# 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@localhost /]# cat /proc/sys/net/core/wmem_max 131071
131071:tcp 或 udp 发送缓冲区最大可设置值得一半。
跟上面同一个道理

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

例子:
int iSock = -1;
iSock = socket(AF_INET, SOCK_DGRAM, 0);
int iRecvLen = 300*1024;
int iRecvLen_2 = 0;
int iOptlen = 4;
int iRet = -1, iRet_2 = -1;
iRet = setsockopt(iSock, SOL_SOCKET, SO_RCVBUF, &iRecvLen, 4);
iRet_2 = getsockopt(iSock, SOL_SOCKET, SO_RCVBUF, &iRecvLen_2, &iOptlen);
printf("RecvLen 2 is %d[%d:%d].\n", iRecvLen_2, iRet, iRet_2);
如果默认的udp缓冲区的最大值为 110592 Bytes,当通过setsockopt()函数想将其设置为300KB时,超过了最大上限的2倍,因此用getsockopt()函数获取实际设置的缓冲区长度为221184Bytes(110592*2)。
以上内容取自多篇博客,整理

标签:udp,131071,tcp,缓冲区,net,默认值
From: https://blog.51cto.com/u_15854579/5811391

相关文章

  • UDP发广播给所有网卡(包含虚拟网卡)
    //给所有网卡发广播QList<QNetworkInterface>networkinterfaces=QNetworkInterface::allInterfaces();foreach(QNetworkInterfaceinterface,networkinterfaces){......
  • python tcp多个客户端连接服务器
    一、传输层**该层为两台主机上的应用程序提供端到端的通信。传输层有两个传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。其中,TCP是一个可靠的面向连接的协议,udp是不可......
  • OSI七层模型与TCP/IP模型的比较
    OSI七层模型与TCP/IP模型的背景故事就略过吧,直接进入正题。首先,OSI有七层模型,而TCP/IP模型只有四层,不过一般书上为了方便讲解则将这两者的优点合在一起分为了五层。注:以下顺......
  • ssh远程登录协议和tcp wappers
       SSH服务SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口......
  • GB28181基于TCP协议的视音频媒体传输探究及实现
    我们先看看官方规范针对TCP协议的视音频传输描述:实时视频点播、历史视频回放与下载的TCP媒体传输应支持基于RTP封装的视音频PS流,封装格式参照IETFRFC4571。流媒体服务器宜......
  • 10/30 基于SeedUbuntu16.04的缓冲区溢出实验
    sudosysctl-wkernel.randomize_va_space=0gcc-fno-stack-protectorexample.cgcc-zexecstack-otesttest.c/*call_shellcode.c//设置四个寄存器eax,ebx,ecx,ed......
  • TCP/IP分层
    TCP/IP分层TCP/IP网络分层模型TCP/IP协议共有4层,每一层需要下一层的支撑,同时也支撑着上层,顺序就是从下向上链接层:在以太网、Wifi上发送原始数据,工作在网卡的层次,使用M......
  • SEED实验:缓冲区溢出漏洞实验__网络攻防实验
    sudosysctl-wkernel.randomize_va_space=0sudosucd/binrmshln-szshsh/*stack.c//Thisprogramhasabufferoverflowvulnerability.//Ourtaskis......
  • 【Node.JS】buffer类缓冲区
    目录​​简介​​​​创建Buffer类​​​​使用Buffer类​​​​例 ​​​​直接使用buffer类​​简介node.js的开发语言就是js,javascript语言自身只有字符串数据类型,没有......
  • 如何kill一条TCP连接?
    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。简介如果你的程序写得有毛病,打开了很多TCP连接,但一直没有关闭,即常见的连接泄露场景,你可能想要在排查问题的......