TCP/IP协议中backlog分析与设置以及TCP状态变化
来源:互联网 发布:linux查询外网ip地址 编辑:程序博客网 时间:2024/05/22 05:14
TCP/IP协议中backlog分析与设置以及TCP状态变化
TCP/IP协议卷一中是有说明设置backlog这个值的,这值是做什么的呢?
大家都知道TCP建立连接时是要进行三次握手连接的,但是否三次握手完成了,服务端就进行处理了(accept)呢,如果没有处理就变成什么情况,假如没有及时accept的话,后续客户端就连接不上或连接失败。这样就谈不上吞吐量了。想必大家也认为TCP不是那么设计的。
backlog其实是一个连接队列,以下是backlog队列大小公式。
backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列
以上参数解释说明如下:
未完成三次握手队列:服务器处于listen状态时收到客户端syn 报文(connect)时放入未完成队列中。
已经完成三次握手队列:三路握手的第二个状态即服务器syn+ ack响应client后,此时第三个状态ack报文到达前(客户端对服务器syn的ack)一直保留在未完成连接队列中,如果三路握手完成,该条目将从未完成连接队列搬到已完成连接队列尾部.
backlog参数设置既可以在linux内核参数设置(修改文件/etc/sysctl相关参数),也可以在socket系统调用listen函数时设置(第二个参数),这二者区别是,前者为全局性的,影响所有socket,后者为局部性的,影响当前socket。
图1 以下表示backlog队列的变化状态
当server调用accept时,从已完成(三次握手)队列中的头部取出一个socket连接给进程,以下是变化过程。
0 0
- TCP/IP协议中backlog分析与设置以及TCP状态变化
- TCP/IP协议中backlog分析与设置以及TCP状态变化
- TCP/IP协议中backlog
- tcp/ip协议listen函数中backlog参数的含义
- tcp/ip协议listen函数中backlog参数的含义
- tcp/ip协议listen函数中backlog参数的含义
- tcp/ip协议listen函数中backlog参数的含义
- TCP IP状态变化
- TCP/IP协议分析
- tcp ip协议分析
- TCP IP 协议分析
- TCP/IP 协议分析
- TCP/IP协议分析
- TCP/IP协议分析
- Tcp/Ip 协议分析
- TCP SOCKET中backlog
- 电脑中TCP/IP协议设置
- tcp/ip协议listen函数中的backlog参数的含义
- 使用C#连接ORACLE数据库
- Android Studio解决Error:moudle not specified
- 使用netfilter实现输出报文的tcp option增加
- 2016最新搭建Struts2开发环境
- Eclipse调试(1)——基础篇
- TCP/IP协议中backlog分析与设置以及TCP状态变化
- PHPstorm相关设置以及快捷键
- IMS Modify Call (3) accept reject timeout 接受/拒接/超时 视频升级请求
- mybatis多表进行连接查询(left join)
- lower_bound 和 upper_bound
- java读取XML的四种方法
- python中字符串str的strip()方法
- iWebOffice使用VBA控制字体
- cocos2d-android - 1.地图动态加载原理(世界地图的实现)