百科问答小站 logo
百科问答小站 font logo



服务器端口范围0~65535,假设远大于65536个并发连接,你怎么处理? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

常见的基础类问题,然后经常有人冒出各种雷人的言论什么端口复用,什么链路复用出来。

首先端口是个什么玩意儿?这货是跟协议相关的,最常见就TCP和UDP协议定义了端口。什么IP协议端口这种话一出口就说明是外行。

然后端口是干啥的?端口最早出现在TCP,它的确就是用来标记连接的。一个TCP连接用四个参数区分,俩终端IP和俩终端端口。


所以端口限制指的是什么?是两个IP终端之间可以建立的最大的TCP连接数量。而不是某一个终端对不同终端可以建立的连接数量。

也就是说,这个限制是特定的两台机器A和B可以建立的连接数量,而且这个连接数量的理论上限也不是65536,而是65536的平方,因为两个终端之间的连接两边都可以用任意端口,两两组合有四个G的数量。

但是考虑到端口和服务是绑定的,例如一般情况下只有在HTTP服务器80端口建立的连接,才用于发送HTTP请求。还有很多端口被系统保留起来不用于建立一般的TCP连接。所以实际可以用的端口组合数量远低于理论数值,但那也是一个难以企及的数量,压根儿不用担心……


真正会造成端口不够用的情况,一般只会出现在NAT、网关、负载均衡器这些东西上。这些东西的特点是,后面很多台终端/服务器,对外只有一个IP地址。这样就会让这个IP地址上的端口压力山大。

举个例子,有两个互相不通的内网,每个内网里面有一千台终端。这两个内网各自都只有一个公网IP,两个内网之间的通信只能走公网。这时候,这个天文数字的连接数量限制就成了两个一千台终端内网之间的连接数量限制,一下子就感觉压力上来了……

这也是为什么我们要尽快推动IPv6的普及的根本原因。IP地址用尽短期内不会造成什么影响,但是随着网络终端的越来越多,不仅仅是端口资源,网络设备转发带来的延迟和资源损耗占用,都会成为问题。


最后简单聊聊监听端口。

如上文所述,通常情况下端口限制的TCP连接数量是一个天文数字,是不可能达到的。但是有一个更麻烦的事情就是监听端口限制。

的确两个终端之间可以建立的TCP连接理论上限是4G,但是要与另一台服务器的特定应用/建立特定用途的TCP连接,最常见的方法就是约定端口

例如我们约定80端口用于建立HTTP连接,这个时候当我们与服务器的80端口建立TCP链接的时候,服务器就知道这个连接是用于传输HTTP请求和响应的。更重要的是,服务器要知道是由WebServer应用来处理这个端口上建立的连接。

那么服务器是怎么知道要由WebServer应用来处理这个端口上建立的连接呢?这就是所谓的监听所干的事情。监听,本质上就是给操作系统发个注册信息:“所有在XXXX端口上建立的连接,都让我来处理。”


当然,你可以不使用80端口,也可以不使用约定端口的方式来建立特定用途的连接。但是不得不承认这是目前最成熟的使用方式,并且几乎所有的软件都遵循这套原则。

但在这套原则下就会存在一些问题:

首先显而易见的就是端口冲突,你IIS是WebServer、我Apache也是WebServer、tomcat说我也是,他们默认启动都要去监听80端口,但是操作系统只可能把一个端口上的连接给发送到一个应用上去,操作系统也不知道这个连接到底要发送给哪个WebServer。这就是最典型的一个问题,端口冲突。


接下来是客户端的问题,我们访问一个网站事实上不可能只建立一个TCP连接,我们会同时打开很多网页,也会同时下载很多资源。一般来说,浏览器会控制对同一个网站同时打开的连接数不超过5-10个,但是如果我们是什么多点传输的下载文件,我开一百个连接同时下载多个位置的文件内容行不行?当然可以。

但是,正如同一台服务器上可以运行多个服务应用一样,一台客户端也可以运行多个客户端应用程序。如果这些客户端应用程序都要与同一服务器的同一端口建立连接,那又该怎么办呢?最简单的方式就是使用一定范围内的随机端口来建立连接。

但是并不是所有的端口都能被拿来建立连接。如果有些端口被监听了,那么这些端口是不能被拿来建立连接的。还有一些端口可能目前没有被监听,但是通常他们被保留来用作一些特殊用途,例如80端口,通常会被保留用于HTTP协议的连接。

所以对于同一服务器的提供的同一服务,端口的数量的确也会限制你可以建立的连接的数量

但通常来说这不会成为问题。除非,是网关、NAT、负载均衡,这些设备上,这个问题就会出现的更加频繁了……


user avatar   leng-yu-xuan-28 网友的相关建议: 
      

四元组定义了一条连接,[源地址,源端口号,目标地址,目标端口号],只要上述四个条件有一个不一样就可以,所以单独一个端口号范围并不能限制并发数




  

相关话题

  如何区分 Intelligence 表示智能还是情报? 
  跨国传输一批数据最快的方式是什么? 
  跨国传输一批数据最快的方式是什么? 
  为什么不提倡利用路由器Lan口充当交换机? 
  TCP 为什么没有基于 UDP 实现? 
  网络上有若干客户端向一台机器的某个端口一直不停发送UDP包 这台机器打开端口和不打开端口的区别在哪? 
  为什么连离我很远很远的服务器会很慢? 
  每天沉迷于网络键政的都是什么人? 
  如何看待美国网络公司思科被发现使用华为开源代码,将华为的加密证书放入交换机? 
  如何将手中 20 多台旧电脑,组建一台超级计算机? 

前一个讨论
如何评价知乎用户@墨鱼?
下一个讨论
如何看待 MWC 2022 上 OPPO 宣布商用 150W 安全长寿命快充技术以及240W快充方案?





© 2024-09-19 - tinynew.org. All Rights Reserved.
© 2024-09-19 - tinynew.org. 保留所有权利