经典的”服务器最多65536个连接”误解
"因为TCP端口号是16位无符号整数, 最大65535, 所以一台服务器最多支持65536个TCP socket连接." - 一个非常经典的误解! 即使是有多年网络编程经验的人, 也会持有这个错误结论.
要戳破这个错误结论, 可以从理论和实践两方面来.
理论
系统通过一个四元组来唯一标识一条TCP连接. 这个四元组的结构是{local ip, local port, remote ip, remote port}, 对于IPv4, 系统理论上最多可以管理2^(32+16+32+16), 2的96次方个连接. 如果不仅仅考虑TCP, 则是一个五元组, 加上协议号(TCP, UDP或者其它).
实践
服务器绑定一个ip:port, 然后accept连接, 所有accept的连接使用的本地地址也是同样的ip:port.
扩展内容
如果某个客户端向同一个TCP端点(ip:port)发起主动连接, 那么每一条连接都必须使用不同的本地TCP端点, 如果客户端只有一个IP则是使用不同的本地端口, 该端口的范围在*nix系统上的一个例子是32768到61000, 可以通过如下命令查看:
[root@benegg.com ~]# cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000
也就是说, 一个客户端连接同一个服务器的同一个ip:port(比如进行压力测试), 最多可以发起30000个左右的连接.
TCP客户端(TCP的主动发起者)可以在同一ip:port上向不同的服务器发起主动连接, 只需在bind之前对socket设置SO_REUSEADDR选项.
系统支持的最大打开文件描述符数(包括socket连接):
[root@benegg.com ~]# cat /proc/sys/fs/file-max 580382
单个进程所能打开的最大文件描述符数:
[root@benegg.com ~]# ulimit -n 1024
结论
无论是对于服务器还是客户端, 认为"一台机器最多建立65536个TCP连接"是没有根据的, 理论上远远超过这个值.
经典的”服务器最多65536个连接”误解相关推荐
- 65536个连接”误解
经典的"服务器最多65536个连接"误解 C/C++语言编程, 网络编程 Views: 39740 | 9 Comments "因为TCP端口号是16位无符号整数, 最大 ...
- linux测试tcp长连接工具,Linux(服务器编程):44---TCP长连接、短连接(心跳检测)
一.TCP连接的相关说明 ①使用TCP协议时,会在客户端和服务器之间建立一条虚拟的信道,这条虚拟信道就是指连接,而建议这条连接需要3次握手,拆毁这条连接需要4次挥手,可见,我们建立这条连接是有成本的, ...
- mac 远程ftp服务器文件共享,mac远程连接ftp服务器配置
mac远程连接ftp服务器配置 内容精选 换一换 使用Mac版Microsoft Remote Desktop工具,远程连接Windows云服务器.由于Mac系统的特殊性,在使用Mac系统远程登录Wi ...
- WebSocket部署服务器外网无法连接解决方案
WebSocket部署服务器外网无法连接解决方案 参考文章: (1)WebSocket部署服务器外网无法连接解决方案 (2)https://www.cnblogs.com/CKExp/p/758883 ...
- Mac搭建本地svn服务器,并用Cornerstone连接服务器
Mac搭建本地svn服务器,并用Cornerstone连接服务器 Mac默认已经安装了svn,我们只需要进行配置并开启就可以了 首先我们可以验证一下是否安装了svn,打开终端,输入命令: svnser ...
- winscp 服务器拒绝了SFTP连接,但它监听FTP连接。 想要用FTP协议来代替SFTP吗?最好是用加密的。
winscp 服务器拒绝了SFTP连接,但它监听FTP连接. 想要用FTP协议来代替SFTP吗?最好是用加密的. 在用Winscp 连接Ubuntu是出现: 原因是Ubuntu上没有安装sshd 解决 ...
- ESP8266 wifi模块连接上了热点之后 与服务器建立了tcp连接并进入了透传模式,如果关掉热点wifi模块的tcp连接没有切断,为什么
ESP8266 wifi模块连接上了热点之后 与服务器建立了tcp连接并进入了透传模式,如果关掉热点wifi模块的tcp连接没有切断,为什么? 这个是很多开发者在第一次使用ESP8266模块是会出现的 ...
- web项目怎么连接云服务器,web项目怎么连接云服务器
web项目怎么连接云服务器 内容精选 换一换 通过内网连接云手机实例时,需要在租户VPC中创建一台弹性云服务器,作为连接云手机的跳板机器.若创建云手机服务器时未使用自定义网络,还需在云手机租户的VPC ...
- notes系统服务器地址,notes怎么连接服务器地址
notes怎么连接服务器地址 内容精选 换一换 FTP/SFTP连接适用于从线下文件服务器或ECS服务器上迁移文件到OBS或数据库.当前仅支持Linux操作系统的FTP 服务器.连接FTP或SFTP服 ...
最新文章
- 《文献检索》随感-2003年10月24日
- Linux中的无人职守安装脚本kickstart
- linux shell 数组遍历方式(非原创)
- NCBI dbGap数据下载记录
- 如何导入nod32企业版的授权文件.lic,并制作镜像服务器?
- MODIS(TerraAqua)陆地标准产品
- RDIFramework.NET ━ 9.5 组织机构管理 ━ Web部分
- python交换两列的位置_如何更改 pandas dataframe 中两列的位置
- 关于idea修改当前使用的git账户的问题
- java实现可有括号的android计算器
- 作者:余超(1993-),男,作者:华东政法大学民商法学硕士生,主要研究方向为民商法。...
- Oracle 开窗函数--转
- python程序中结束while循环的两种方法是_Python中while循环
- ORA-04031:unable to allocate 4120 bytes of shared memory ‘obj stat mem’故障解决
- Android adb重启手机
- MATLAB 爬取配色css数据及渐变图
- [笔记] 数据结构二刷【第一篇:线性表·栈·队列·递归】
- 第一章 你到底做了多少无用功
- B2C是什么意思?什么是B2C
- 转--各种文件后缀名与打开方式大全
热门文章
- IIS7.5 HTTP 错误 500.19 - Internal Server Error 问题的解决方案
- SVN账号重新指定方法
- 面试时真能“坦白从宽”?
- python使用什么注释语句和运算-Python基础之注释,算数运算符,变量,输入和格式化输出...
- 没学过python、但是还是有公司要-想转行,是要入坑Python还是Java?这问题还用问?...
- excel调用python编程-用Python如何开发Excel宏脚本?新手必学
- python编程语言能干什么-这 13个,1 行Python代码能干哪些事?
- python流程图基本元素-Python初学(十一)
- 用python写脚本看什么书-终于知晓python编写脚本入门教程
- python导入excel数据-如何把python中的数据导入excel