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

  1. The maximum sizes for socket buffers declared via the SO_SNDBUF and
  2. SO_RCVBUF mechanisms are limited by the values in the
  3. /proc/sys/net/core/rmem_max and /proc/sys/net/core/wmem_max files
  1. tcp_rmem (since Linux 2.4)
  2. This is a vector of 3 integers: [min, default, max]. These
  3. parameters are used by TCP to regulate receive buffer sizes.
  4. TCP dynamically adjusts the size of the receive buffer from
  5. the defaults listed below, in the range of these values,
  6. depending on memory available in the system.
  1. tcp_wmem (since Linux 2.4)
  2. This is a vector of 3 integers: [min, default, max]. These
  3. parameters are used by TCP to regulate send buffer sizes. TCP
  4. dynamically adjusts the size of the send buffer from the
  5. default values listed below, in the range of these values,
  6. 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. 学习笔记之The Intelligent Investor, Rev. Ed

    The Intelligent Investor, Rev. Ed https://www.safaribooksonline.com/library/view/the-intelligent-inv ...

  2. 【转】十年你能做的能得到的有多少?一个工科IT男的工作回忆

    https://blog.csdn.net/b5w2p0/article/details/8798989

  3. jQuery 事件的命名空间简单了解

    原文地址:http://www.jb51.net/article/43626.htm   用 jQuery 绑定和解绑事件监听器都是非常简单的,怎样精确地解绑其中一个监听器?我们需要了解一下事件的命名 ...

  4. HDOJ 2003 求绝对值

    #include<cstdio> #include<cmath> int main() { double a; while (scanf_s("%lf", ...

  5. 在 Vue 项目中引入 tinymce 富文本编辑器

    项目中原本使用的富文本编辑器是 wangEditor,这是一个很轻量.简洁编辑器 但是公司的业务升级,想要一个功能更全面的编辑器,我找了好久,目前常见的编辑器有这些: UEditor:百度前端的开源项 ...

  6. [UE4]圆形的动态材质,使用VectorParameter、Get Dynamic Material、Set Vector Parameter Value

    一.新建一个名为M_FriendColor的材质.使用VectorParameter函数 二.新建一个名为FriendFlag的UserWidget,生成随机颜色,并传递给上一步设置的材质参数Colo ...

  7. T-SQL 逻辑控制语句 ifelse while casewhen

    ifelse,如果逻辑语句有多行,用begin end 包裹 use StudentManageDB go --查询成绩 declare @cAvg int select @cAvg=avg(CSha ...

  8. MySQL之 Mysqldump导出数据库

    参数大全 参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --all-databases --all-tablespaces , -Y 导 ...

  9. Hibernate JPA 关联关系

    Hibernate JPA 关联关系: 使用cascade做级联操作(只有在满足数据库约束时才会生效): CascadeType.PERSIST: 级联保存,只有调用persist()方法,才会级联保 ...

  10. Java程序---多数字求和

    题目: 编写一个程序,此程序从命令行接收多个数字,求和之后输出结果. 设计思想: 1.记录要输入的数字的个数n 2.建立一个长度为n的数组存储输入的数字 3.累加求和并输出结果 注:此程序中应用了Sc ...