1. 当前位置:网站首页 > 值得一看

听说一台主机只能保持最多65535个TCP连接,是真的吗?



答案是否定的。

如果计算机不受CPU、内存资源的硬件限制:
  • 计算机为服务器(1),被动接受的连接数可以为232 * 216 * 216 = 264 (理论最大值)
  • 计算机为客户端(2),主动发起的连接数可以为232 * 216 * 216 = 264(理论最大值)
 
上文的1、2的数字是怎么来的呢?让我们一起分析一下。
 
计算机为服务器的场景
知乎服务器主机在103.41.167.234侦听443端口,等待着来自于任何IP地址的主机访问它,包括它自己。另外任何主机,可以使用任何端口来连接知乎的服务器,对吗?
 
全球有多少个IP地址呢?
232
一个主机对应一个IP地址,一个IP地址可以拥有多少个端口号?
216
两者相乘的结果,就是248 
 
但是不要忘记知乎服务器还可以监听1、2、3 。。。444、445、446 。。。65535端口号,代表216服务,与248 相乘,正好得到264 。
 
计算机为客户端的场景
其实和服务器没有任何区别。假设这个客户端的IP = 1.1.1.1,它可以使用特定的端口号10000来主动连接任何IP(232)服务器的任何端口(216),那么就可以建立264个连接。不要忘记客户端还可以使用非10000端口来连接以上服务器,客户端一共216端口,与264相乘,正好也得到264
 
以上仅仅是理论,计算机的软硬件资源不可能无限使用。现实实现中操作系统对客户端的连接数有一个默认上限值,即65535。
 
客户端怎么限制的呢?
默认情况下,一个端口号任何时间只能由一个TCP连接使用。客户端1.1.1.1 ,使用端口号10000与知乎服务器103.41.167.234443端口连接。只要这个连接没有释放,端口号10000就不能用于其它任何连接。这意味着,客户端最大的端口数 = 最多TCP连接数
 
潜规则可以使用PORT_REUSE来打破。只要连接TCP连接时,使用该选项,可以不受上文的限制。10000这个端口可以同时用于多个连接,而不仅仅局限于一个连接。
 
即使客户端有限制,服务器(一个IP)理论上依然可以维持248个连接数。但是那么庞大的连接数会让服务器慢地无法使用。为了让服务器能够给全球用户提供更优质的服务响应,可以使用服务器集群,负载均衡设备提供负载均衡,每个服务器维持几千个TCP连接数。
 
读者会发现,服务器负载得到了减轻,但是负载均衡设备本身却成为了新的瓶颈,因为用户流量都需要它来导流,如何解决这个问题?
 
域名解析可以将域名解析为多个负载均衡设备的IP,以此来提供负载均衡设备的负载均衡。

本文最后更新于2021-4-6,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
获取更多资讯请加入交流群

    协助本站SEO优化一下,谢谢!
    关键词不能为空
版权说明

本文地址:http://dufengvip.cn/post-507.html
未标注转载均为本站远程,转载请注明文章出处:

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:9:00-23:00,节假日休息

扫码关注