设计TCP服务器的规则
来源:互联网 发布:手机阿里云系统 编辑:程序博客网 时间:2024/05/29 15:36
设计TCP服务器,采用如下规则:
1.正等待连接请求的一端有一个固定长度的连接队列,该队列中的连接已被TCP接受(完成三次握手),但还没有被应用层接受。注意:TCP接受一个连接是将其放入这个队列,而应用层接受连接是将其从该队列中移出。也就是使用***.accept()函数来阻塞等待客户的请求。
2.应用层指明该队列的最大长度,这个值被称为“积压值(backlog)”,范围为0~5。也就是使用***.listen(5)函数来指定的队列长度。通常取值5
3.当一个连接请求到达时,TCP使用一个算法,根据当前连接队列中的连接数来确定是否接收这个连接。这不同于积压值,积压值说明的是TCP监听的端点已被TCP接受而等待应用层接受的最大连接数。这个积压值对系统所允许的最大连接数,或者并发服务器所能并发处理的客户数,并无影响。
4.如果对于新的连接请求,该TCP监听的端点的连接队列中还有空间,TCP模块将对SYN进行确认并完成连接的建立。但应用层只有在三次握手中的第三个报文段收到后才会知道这个新连接。另外,当客户进程的主动打开成功但服务器的应用层还不知道这个新连接时,它可能会认为服务器进程已经准备好接受数据了。此后,如果客户程序发送数据,服务器的TCP模块会将接收的数据放入缓存队列。
5.如果对于新的连接请求,连接队列中已没有空间,TCP将不理会收到的SYN,也不发回任何报文段(包括RST),这是一个软错误,而不是一个硬错误。如果应用层不能及时接受.listen(5)中的连接,达到积压值(5),客户的主动打开最终也将超时。
0 0
- 设计TCP服务器的规则
- TCP和UDP服务器的设计
- 并发式TCP服务器的设计
- 并发服务器设计 Tcp/
- TCP并发服务器设计
- TCP/IP网络重复型服务器通信软件的设计
- boost用asio设计TCP服务器的关键技术
- Linux下C++ EPOLL TCP服务器的设计与实现
- 数据库设计的规则
- 简单的TCP服务器
- 简单的TCP服务器
- boost用asio设计TCP服务器中单连接的设计
- Linux 下TCP并发服务器设计模型
- TCP Wrapperes 的规则---配置hosts.deny
- TCP/IP,Web世界的基本规则
- Microsoft FxCop 的设计规则
- 存储过程的设计规则
- C++ 类的设计规则
- 【JAVA】26、应用2——数组复制
- ios之启动图片适配
- leetcode之Repeated DNA Sequences
- Hibernate学习篇01——Hibernate基础
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- 设计TCP服务器的规则
- 【BZOJ1061】[Noi2008]志愿者招募【单纯形法】
- 12C ORA-错误汇总20
- new/delete和malloc/free的区别,sizeof的理解和struct内存对齐
- 从零开始学习EasyDarwin(概述篇)
- EM35x Development Kit开发环境搭建
- cookie 和session 的区别详解
- Servlet处理Json请求数据包
- cin.ignore()的使用