TCP/IP详解--滑动窗口与内核缓冲区之间的关系
来源:互联网 发布:软件开发工作怎么样 编辑:程序博客网 时间:2024/05/19 18:42
在有关TCP连接的很多配置中,有很多选项有的配置
net.ipv4.tcp_rmem:这个参数定义了TCP接收缓冲(用于TCP接收滑动窗口)的最小值、默认值、最大值
net.ipv4.tcp_wmem:这个参数定义了TCP发送缓冲(用于TCP发送滑动窗口)的最小值、默认值、最大值
netdev_max_backlog:当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示队列的最大值
rmem_default:这个参数表示内核套接字接收缓存区默认的大小
wmem_default:这个参数表示内核套接字发送缓存区默认的大小
rmem_max:这个参数表示内核套接字接收缓存区最大的大小
rmem_max:这个参数表示内核套接字接收缓存区最大的大小
滑动窗口的大小与套接字缓存区会在一定程度上影响并发连接的数据,每个TCP连接都会为维护TCP滑动窗口而消耗内存,这个窗口会根据服务器的处理速度收缩或扩张。
这里想说的是内核缓冲区和滑动窗口之间的区别联系:
整个数据的流程中,首先网卡接收到的数据存放到内核缓冲区内,然后内核缓冲区存放的数据根据TCP信息将数据移动到具体的某一个TCP连接上的接收缓冲区内,也就是接收滑动窗口内,然后应用程序从TCP的接受缓冲区内读取数据,如果应用程序一直不读取,那么滑动窗口就会变小,直至为0.
如果网卡处理数据的速度比内核处理数据的速度慢,那么内核会有一个队列来保存这些数据,这个队列的大小就是由参数netdev_max_backlog决定的
对于发送数据来说,应用程序将数据拷贝到各自TCP发送缓冲区内(也就是发送滑动窗口),然后系统的所有TCP套接字上发送缓冲区(也就是发送滑动窗口)内的数据都将数据拷贝到内核发送缓冲区内,然后内核将内核缓冲区的数据经过网卡发送出去。
TCP的发送/接受缓冲区(也就是发送/接受滑动窗口),是针对某一个具体的TCP连接来说的,每一个TCP连接都会有相应的滑动窗口,但是内核的发送/接受缓冲区是针对整个系统的,里面存放着整个系统的所有TCP连接的接收/发送的数据。
- TCP/IP详解--滑动窗口与内核缓冲区之间的关系
- TCP/IP详解--滑动窗口与内核缓冲区之间的关系
- 唯快不破:TCP/IP详解--滑动窗口与内核缓冲区之间的关系
- TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
- TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
- TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
- 唯快不破:TCP/IP详解--举例明白发送/接收缓冲区、滑动窗口协议之间的关系
- TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系
- TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系
- TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系
- TCP滑动窗口和socket缓冲区之间的关系
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- TCP滑动窗口和socket缓冲区之间的关系
- TCP滑动窗口和socket缓冲区之间的关系
- TCP滑动窗口和socket缓冲区之间的关系(记录)
- tcp socket发送缓冲区、接受缓冲区、滑动窗口协议之间的关系
- Spring MVC JSON自定义类型转换
- 子线程中如何调用对话框的变量和函数
- 新手刚用 vim 基本的操作命令
- Android学习笔记(三)Activity及Intent
- U盘中的文件无法删除导致在linux下无法挂载
- TCP/IP详解--滑动窗口与内核缓冲区之间的关系
- window对象的status、location、name、self、opener属性的使用
- C# 写日志的类文件
- VS2010中ashx文件中代码折叠实现方法(超级有用,终于找到了方法!)
- 循环链表的实现与操作(C语言实现)
- Python - 定制pattern的string模板(template) 详解
- 几种类的sizeof
- 计数排序
- Android 数据库升级解决方案