"因为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个连接”误解相关推荐

  1. 65536个连接”误解

    经典的"服务器最多65536个连接"误解 C/C++语言编程, 网络编程 Views: 39740 | 9 Comments "因为TCP端口号是16位无符号整数, 最大 ...

  2. linux测试tcp长连接工具,Linux(服务器编程):44---TCP长连接、短连接(心跳检测)

    一.TCP连接的相关说明 ①使用TCP协议时,会在客户端和服务器之间建立一条虚拟的信道,这条虚拟信道就是指连接,而建议这条连接需要3次握手,拆毁这条连接需要4次挥手,可见,我们建立这条连接是有成本的, ...

  3. mac 远程ftp服务器文件共享,mac远程连接ftp服务器配置

    mac远程连接ftp服务器配置 内容精选 换一换 使用Mac版Microsoft Remote Desktop工具,远程连接Windows云服务器.由于Mac系统的特殊性,在使用Mac系统远程登录Wi ...

  4. WebSocket部署服务器外网无法连接解决方案

    WebSocket部署服务器外网无法连接解决方案 参考文章: (1)WebSocket部署服务器外网无法连接解决方案 (2)https://www.cnblogs.com/CKExp/p/758883 ...

  5. Mac搭建本地svn服务器,并用Cornerstone连接服务器

    Mac搭建本地svn服务器,并用Cornerstone连接服务器 Mac默认已经安装了svn,我们只需要进行配置并开启就可以了 首先我们可以验证一下是否安装了svn,打开终端,输入命令: svnser ...

  6. winscp 服务器拒绝了SFTP连接,但它监听FTP连接。 想要用FTP协议来代替SFTP吗?最好是用加密的。

    winscp 服务器拒绝了SFTP连接,但它监听FTP连接. 想要用FTP协议来代替SFTP吗?最好是用加密的. 在用Winscp 连接Ubuntu是出现: 原因是Ubuntu上没有安装sshd 解决 ...

  7. ESP8266 wifi模块连接上了热点之后 与服务器建立了tcp连接并进入了透传模式,如果关掉热点wifi模块的tcp连接没有切断,为什么

    ESP8266 wifi模块连接上了热点之后 与服务器建立了tcp连接并进入了透传模式,如果关掉热点wifi模块的tcp连接没有切断,为什么? 这个是很多开发者在第一次使用ESP8266模块是会出现的 ...

  8. web项目怎么连接云服务器,web项目怎么连接云服务器

    web项目怎么连接云服务器 内容精选 换一换 通过内网连接云手机实例时,需要在租户VPC中创建一台弹性云服务器,作为连接云手机的跳板机器.若创建云手机服务器时未使用自定义网络,还需在云手机租户的VPC ...

  9. notes系统服务器地址,notes怎么连接服务器地址

    notes怎么连接服务器地址 内容精选 换一换 FTP/SFTP连接适用于从线下文件服务器或ECS服务器上迁移文件到OBS或数据库.当前仅支持Linux操作系统的FTP 服务器.连接FTP或SFTP服 ...

最新文章

  1. 《文献检索》随感-2003年10月24日
  2. Linux中的无人职守安装脚本kickstart
  3. linux shell 数组遍历方式(非原创)
  4. NCBI dbGap数据下载记录
  5. 如何导入nod32企业版的授权文件.lic,并制作镜像服务器?
  6. MODIS(TerraAqua)陆地标准产品
  7. RDIFramework.NET ━ 9.5 组织机构管理 ━ Web部分
  8. python交换两列的位置_如何更改 pandas dataframe 中两列的位置
  9. 关于idea修改当前使用的git账户的问题
  10. java实现可有括号的android计算器
  11. 作者:余超(1993-),男,作者:华东政法大学民商法学硕士生,主要研究方向为民商法。...
  12. Oracle 开窗函数--转
  13. python程序中结束while循环的两种方法是_Python中while循环
  14. ORA-04031:unable to allocate 4120 bytes of shared memory ‘obj stat mem’故障解决
  15. Android adb重启手机
  16. MATLAB 爬取配色css数据及渐变图
  17. [笔记] 数据结构二刷【第一篇:线性表·栈·队列·递归】
  18. 第一章 你到底做了多少无用功
  19. B2C是什么意思?什么是B2C
  20. 转--各种文件后缀名与打开方式大全

热门文章

  1. IIS7.5 HTTP 错误 500.19 - Internal Server Error 问题的解决方案
  2. SVN账号重新指定方法
  3. 面试时真能“坦白从宽”?
  4. python使用什么注释语句和运算-Python基础之注释,算数运算符,变量,输入和格式化输出...
  5. 没学过python、但是还是有公司要-想转行,是要入坑Python还是Java?这问题还用问?...
  6. excel调用python编程-用Python如何开发Excel宏脚本?新手必学
  7. python编程语言能干什么-这 13个,1 行Python代码能干哪些事?
  8. python流程图基本元素-Python初学(十一)
  9. 用python写脚本看什么书-终于知晓python编写脚本入门教程
  10. python导入excel数据-如何把python中的数据导入excel