tcp与udp缓冲区大小总结(转载)

1.tcp收发缓冲区默认值

[[email protected] /]# cat /proc/sys/net/ipv4/tcp_rmem

4096    87380   4194304

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

[[email protected] /]# cat /proc/sys/net/ipv4/tcp_wmem

4096    16384   4194304

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

2.udp收发缓冲区默认值

[[email protected] /]# cat /proc/sys/net/core/rmem_default

110592

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

[[email protected] /]# cat /proc/sys/net/core/wmem_default

110592

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

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

[[email protected] /]# 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

[[email protected] /]# 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)。

时间: 2024-08-25 19:03:19

tcp与udp缓冲区大小总结(转载)的相关文章

(转)关于tcp和udp的缓冲区

(一)基础知识 IPv4 数据报最大大小是65535(16位),包括IPv4头部. IPv6 数据报最大大小是65575,包括40个字节的IPv4头部 MTU,这是由硬件规定的,如以太网的MTU是1500字节,IPv4要求最小MTU是68字节,IPv6要求最小MTU是576字节 path MTU: 指两台主机间的路径上最小MTU 分片(fragmentation):指ip数据报大小超过相应链路的MTU,IPv4和IPv6都将对ip数据进行分片,到达目的主机后进行重组. IPv4头部的DF位用于设

TCP与UDP收发的时候TCP有缓冲区还是UDP有缓冲区,使用它们时该注意什么?

问题:TCP与UDP收发的时候TCP有缓冲区还是UDP有缓冲区,使用它们时该注意什么? (一)基础 1.TCP为可靠链接,分三次握手四次释放. 2.UDP为不可靠链接 (二)TCP与UDP的输出每 个TCP套接口有一个发送缓冲区,可以用SO_SNDBUF套接口选项来改变这一缓冲区的大小.当应用进程调用write往套接口写数据时,内核从应用进 程缓冲区中拷贝所有数据到套接口的发送缓冲区,如果套接口发送缓冲区容不下应用程序的所有数据,或者是应用进程的缓冲区大于套接口的发送缓冲区,或者是套 接口的发送

TCP缓冲区大小及限制

TCP输出 下图展示了应用进程写数据到TCP套接口的过程. 每一个TCP套接口有一个发送缓冲区,我们可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小.当应用程序调用write时,内核从应用程序进程的缓冲区中拷贝所有数据到套接口的发送缓冲区.如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用程序的缓冲区大于套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠).这里假设套接口是阻塞的,它是通常的缺省设置(还有非阻塞的套接口).内核将不从write系统调用返回,

TCP和UDP数据包大小限制

1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}     不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame).数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后

socket tcp缓冲区大小的默认值、最大值

Author:阿冬哥 Created:2013-4-17 Blog:http://blog.csdn.net/c359719435/ Copyright 2013 阿冬哥 http://blog.csdn.net/c359719435/ 使用以及转载请注明出处 1 设置socket tcp缓冲区大小的疑惑 疑惑1:通过setsockopt设置SO_SNDBUF.SO_RCVBUF这连个默认缓冲区的值,再用getsockopt获取设置的值,发现返回值是设置值的两倍.为什么? 通过网上查找,看到li

TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送.TIME_WAIT状态中所需要的时间是依赖于实现方法的.典型的值为30秒.1分钟和2分钟.等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放. [问题1]为什么连接的时候是三次握手,关闭的时候却是四次

(转载)通信协议——Http、TCP、UDP

CP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务. TCP   HTTP   UDP三者的关系: TCP/IP是个协议组,可分为四个层次:网络接口层.网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.在传输层中有TCP协议与UDP协议.在应用层有FTP.HTTP.TELNET.SMTP.DNS等协议.因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器

传输层(3)-缓冲区大小及限制、TCP输出

3.缓冲区大小及限制 影响IP数据报大小的限制. 1)IPv4数据报,最大大小是65535. 2)硬件规定的MTU.以太网的MTU是1500字节.SLIP链路1006字节或296字节 3)路径MTU.两个主机之间路径中最小的MTU.1500字节常见的路径MTU 4)IP数据报>MTU,IPv4执行分片 5)IPv4,DF位被设置(不分片).路由器接收到一个超过其外出链路MTU大小且设置了DF位的IPv4数据报时,它将产生一个ICMPv4"destination unreachable, f

[转载]6. TCP与UDP

一.传输层的作用 1)传输层定义 2)通信处理 3)两种传输层协议TCP和UDP 4)TCP与UDP区分 二.端口号 1)端口号定义 2)根据端口号识别应用 3)通过IP地址.端口号.协议号进行通信识别 4)端口号如何确定 5)端口号与协议 三.UDP 四.TCP 1)TCP的特点及其目的 2)通过序列号与确认应答提高可靠性 3)重发超时如何确定 4)连接管理 5)TCP以段为单位发送数据 6)利用窗口控制提高速度 7)窗口控制与重发控制 8)流控制 9)拥塞控制 五.其他传输层协议 1)UDP