一个误解: 单个服务器程序可承受最大连接数“理论”上是“65535”

简介:

一个误解: 单个服务器程序可承受最大连接数“理论”上是“65535”

2011-06-13 11:47 by 田志良, 80 阅读, 0 评论, 收藏, 编辑

请注意,这里有两个词分别被我标记上了引号,一个是“理论”,一个是“65535”。强调“理论”这个词,是想特别明确误解者的意思:就是说,这个值是不可能被打破的,是铁板钉丁的。而65535这个数字的由来,很多人想当然地将它与port最大值联系起来。的确,TCP的端口数,最大值确实为65535。但是,这并不代表一个服务器可以接受的连接数就是这个值,很多人之所以把这两个概念搞混淆是因为对socket和port没有更深的认识和理解。我们先来回想一下服务器服务的先后过程:服务器创建监听socket- >与对外服务的端口号绑定->开始listen->客户端连接到服务器对应的port->服务器accept为新的客户端产生新的socket->基于这个新的socket与客户端交换数据。从以上流程来看,最大值为65535的“端口号”这个重要的东东,我们只用了一次,就是执行bind的时候!而以后创建的socket,说白了就是一个可以进行网络IO操作的HANDLE而已,它跟端口号的牵扯仅限bind以及作为客户端连接服务器的识别端口号的时候,一旦accept产生了socket,这个端口号,对服务器和新客户端的通信而言就不再有任何意义。而服务器可承载的连接数最大量,不就是能产生多少个客户端的socket吗?这个socket值即使与端口号无关,又何来65535的“理论”上限?我再一次地将“理论”二字用引号括起,是因为在有的操作系统中,默认的配置会将socket最大值设定为65535,但这个值是可以改的!端口号仅仅是门牌地址,不能因为鸟巢体育场能容纳10万名观众就搞10万个门牌号码吧,那电话簿要多厚啊!

remark:端口和连接数是两个不同的概念,连接数只和CPU处理能力、内存大小等有关。端口是OS用来标记进行通讯的进程的编号,用1个16位整数表示,故最大65535




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/p/4571612.html,如需转载请自行联系原作者

相关文章
|
5月前
|
网络协议 Java API
基于UDP/TCP实现客户端服务器的网络通信程序
基于UDP/TCP实现客户端服务器的网络通信程序
|
6月前
|
机器学习/深度学习 Linux Python
服务器上后台运行python程序
服务器上后台运行python程序
346 0
|
1月前
|
监控 Java Linux
使用jvisualVM监控远程linux服务器上运行的jar程序
使用jvisualVM监控远程linux服务器上运行的jar程序
15 5
|
7月前
|
存储 监控 安全
服务器应用程序不可用的原因是什么引起的
服务器应用程序不可用的原因是什么引起的
|
4月前
|
前端开发 JavaScript UED
服务器端渲染(SSR)与客户端渲染(CSR):选择哪个更适合你的应用程序?
在现代Web应用程序开发中,前端技术已经变得非常重要。在构建Web应用程序时,开发人员需要考虑两种不同的渲染方式:服务器端渲染(SSR)和客户端渲染(CSR)。本文将比较这两种渲染方式并探讨如何选择最适合你的应用程序。
32 0
|
5月前
|
Linux Shell 调度
linux服务器定时执行python程序
linux服务器定时执行python程序
278 0
|
5月前
|
Shell 数据安全/隐私保护 Windows
Windows Server【开机启动和任务计划程序】实现服务器重启后项目自启动(Windows Server 任务计划程序无法执行问题处理)
Windows Server【开机启动和任务计划程序】实现服务器重启后项目自启动(Windows Server 任务计划程序无法执行问题处理)
181 0
|
6月前
|
设计模式 存储 API
游戏服务器架构:网络服务器端程序线程划分
游戏服务器架构:网络服务器端程序线程划分
|
7月前
|
消息中间件 缓存 负载均衡
Web 服务器与应用程序服务器:有什么区别?
Web 服务器与应用程序服务器:有什么区别?
54 0
Web 服务器与应用程序服务器:有什么区别?