http://www.man7.org/linux/man-pages/man7/tcp.7.html

 The maximum sizes for socket buffers declared via the SO_SNDBUF and
SO_RCVBUF mechanisms are limited by the values in the
/proc/sys/net/core/rmem_max and /proc/sys/net/core/wmem_max files
       tcp_rmem (since Linux 2.4)
This is a vector of 3 integers: [min, default, max]. These
parameters are used by TCP to regulate receive buffer sizes.
TCP dynamically adjusts the size of the receive buffer from
the defaults listed below, in the range of these values,
depending on memory available in the system.
       tcp_wmem (since Linux 2.4)
This is a vector of 3 integers: [min, default, max]. These
parameters are used by TCP to regulate send buffer sizes. TCP
dynamically adjusts the size of the send buffer from the
default values listed below, in the range of these values,
depending on memory available.
简书 https://www.jianshu.com/p/755da54807cd
 
可靠性好不意味着不出错,可靠性好意味着容错能力强。
容错能力强就要求有 备份,也就是说要有缓存,这样的话才能支持重传等功能。
每个Socket都有自己的Send Buffer和Receive Buffer。
当进行send和recv操作时,立即返回,其实是将数据并没有发送出去,而是存放在对应的Send Buffer和Receive Buffer马上返回成功。
 
接收缓冲区:
接收缓冲区把数据存入内核,应用进程一直没有调用read进行读取的话,此数据会一直缓存在相应socket的接收缓冲区内。
read做的工作就是把内核缓冲区的数据拷贝到应用层用户的Buffer里面
接收缓冲区被tcp和udp用来缓存网络上来的数据,一直保存到应用进程读走为止
TCP: 如果应用一直没有读取,buffer满了之后,通知对端tcp协议中的窗口关闭(滑动窗口的实现)。保证tcp套接口接收缓冲区不会溢出(保证了TCP的可靠传输),因为对方不允许发出超过所通告窗口大小的数据(流量控制),如果对方无视窗口大小而发出了超过窗口大小的数据,则接收方tcp将丢弃。
UDP:当套接口接收缓冲区满时,新来的数据报无法进入接收缓冲区,此数据包被丢弃。udp没有流量控制,快的发送者可以很容易淹没慢的接受者,导致接收方的udp丢弃数据报。
 
发送缓冲区:
进程调用send发送数据的时候,将数据拷贝进入socket的内核发送缓冲区之中,然后send返回,返回之时数据不一定会发送到对端去,send仅仅是把应用层Buffer的数据拷贝进socket的内核发送Buffer中。每个upd都有一个接收缓冲区,没有发送缓冲区,只要有数据就发,不管对方是否可以正确接收,所以不缓冲,不需要发送缓冲区
 
 

Socket buffer 调优相关的更多相关文章

  1. Linux内核 TCP/IP、Socket参数调优

    Linux内核 TCP/IP.Socket参数调优 2014-06-06  Harrison....   阅 9611  转 165 转藏到我的图书馆   微信分享:   Doc1: /proc/sy ...

  2. tensorflow 性能调优相关

    如何进行优化tensorflow 将极大得加速机器学习模型的训练的时间,下面是一下tensorflow性能调优相关的阅读链接: tensorflow 性能调优:http://d0evi1.com/te ...

  3. Linux内核Socket参数调优

    可调优的内核变量存在两种主要接口:sysctl命令和/proc文件系统,proc中与进程无关的所有信息都被移植到sysfs中.IPV4协议栈的sysctl参数主要是sysctl.net.core.sy ...

  4. Linux内核、 TCP/IP、Socket参数调优

    /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这 ...

  5. (转)Linux内核 TCP/IP、Socket参数调优

    Doc1: /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失) ...

  6. Java虚拟机性能调优相关

    一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动 ...

  7. 【总结】性能调优:JVM内存调优相关文章

    [总结]性能调优:JVM内存诊断工具 [总结]性能调优:CPU消耗分析 [总结]性能调优:消耗分析 JVM性能调优

  8. Hive调优相关

    前言 Hive是由Facebook 开源用于解决海量结构化日志的数据统计,是基于Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL查询功能. 在资源有限的情况下,提 ...

  9. Flex性能调优相关的一些总结

    1.Performace包含4点:(1)Latency反应时间(2)Scalability:可伸缩性(3)Reliablity:稳定性(4)Availability:可用性2.运行时生命周期:Flex ...

随机推荐

  1. 学习笔记之Intermediate Python for Data Science | DataCamp

    Intermediate Python for Data Science | DataCamp https://www.datacamp.com/courses/intermediate-python ...

  2. Perl 文件处理范例

    觉得这个范例不错就保存了,原文地址在这里:http://www.cnblogs.com/zhangzhi/archive/2010/10/19/1855302.html Perl 文件处理范例 . 任 ...

  3. pos省纸的妙招

  4. ext.net tooltip

    业务场景:需要对grid表格中指定列显示tooltip. html: <form id="form1" runat="server"> <To ...

  5. CentOS设置网络,设置IP地址

    1.登录CentOS. 2.# dhclient 自动获取IP地址 3.# ip addr 1).第一个地址127.0.0.1是回环地址,网卡名叫做lo,Windows操作系统也有该地址,用来和自己通 ...

  6. String,StringBuilder和StringBuffer区别

    String字符串常量 StringBuilder 字符串变量(非线程安全) StringBuffer  字符串变量(线程安全) 1.String String是字符串常量,为不可改变对象 Strin ...

  7. babel-polyfill

    babel-polyfill Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator.Generator.Set.Maps.Proxy.Reflec ...

  8. 生成excel的时候要用双引号。。。。。

    <?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition ...

  9. 微信小程序 - 布局练习

    1.小程序的布局就多了一个flex布局,其他和之前html没太大区别 ,先看代码: (1)wxml <view class='container'> <view class='sel ...

  10. redis永久化存储

    redis持久化存储 原因:redis是存放在内存中的,断电会导致数据丢失解决方法:把redis数据进行持久性存储,将其存储在磁盘中. 存储方式:1.RDBRDB中文名为快照/内存快照,Redis按照 ...